본문으로 이동

디지털금융: 두 판 사이의 차이

Coffee Wiki
편집 요약 없음
 
(사용자 2명의 중간 판 10개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''디지털금융([[Digital Finance]])'''은 경영학전공 4학년을 대상으로 재무관리, 투자론 및 기업재무 등 재무금융 분야 교과목에서 배운 이론을 기초적인 [[파이썬|파이썬(Python)]] 프로그래밍 언어를 활용하여 실무적으로 숙달, 응용하는 강좌이다.
''이 문서는 명지대학교 경영학전공 강좌 '디지털금융'에 관한 것이다. 정보통신기술을 활용하여 금융서비스를 제공하거나 금융시장의 작동방식을 혁신하는 분야 일반에 대해서는 [[핀테크]] 문서를 참조한다.''


= 파이썬 기초 =
'''디지털금융'''(digital finance)은 명지대학교 경영학전공 4학년을 대상으로 개설되는 전공 심화 강좌이다. 재무관리·기업재무론·투자론 I 등 기존 재무금융 교과목에서 학습한 이론을 바탕으로, 기초적인 파이썬(Python) 프로그래밍을 도구로 활용하여 재무금융 이론을 실무적으로 구현·응용하고 실제 데이터를 활용한 분석 역량을 배양하는 것을 목표로 한다.
* while 반복문


def savings_fixed(cf, r, t):
== 강의개요 ==


  total = 0.0
디지털금융은 재무금융 이론을 데이터 분석의 관점에서 심화·확장하는 전공 심화 강좌이다. 파이썬 실습을 기반으로 금융 이론과 실무를 연결하며, 실제 데이터를 활용하여 분석 역량을 키운다. 주요 주제로는 화폐의 시간가치, [[채권]] 및 [[주식]]의 가치평가, 포트폴리오 이론, [[자본자산가격결정모형|CAPM]], 텍스트 분석 등이 있다.
  i = 1
  while(i <= t):
    total += cf * (1 + r) ** i
    i += 1
  return total
초기값을 0.0으로 하고 (0.0으로 해야 정수로 인식할 수 있다.) whlie 반복문을 이용해서 현금흐름(cf)이 같은 경우에 사용할 수 있다.
i값을 t보다 작거나 같은 값을 넣어주면서 fv 미래가치의 합을 구하는 코드이다.


* for 반복문
== 학습목표 ==


def savings_free(cfs, r):
# 재무금융 분야의 핵심 개념과 이론을 명확히 이해하고 이를 데이터 분석의 관점에서 재구성할 수 있다.
# 파이썬을 활용하여 현실의 금융 데이터를 직접 수집·정제·분석하고, 그 결과를 경제적·재무금융적 관점에서 해석할 수 있다.
# 디지털 기술을 활용한 금융 분석이 실제 의사결정과 어떻게 연결되는지를 이해할 수 있다.


  total = 0.0
== 선수과목 ==
  for cf in cfs:
    total = (total + cf) * (1 + r)
  return total
초기값을 0.0으로 하고 for 반복문을 이용해서 현금흐름이 각 연도마다 다른 경우에 사용할 수 있다.
cf 변수에 cfs 값을 넣어주면서 반복적으로 계산을 하여 fv 미래가치의 합을 구하는 코드이다. by 60180852


= 화폐의 시간가치 =
디지털금융을 수강하기 위해서는 다음 교과목을 이수하는 것이 바람직하며, 이들 과목의 핵심 개념과 분석 틀을 전제로 진행된다.
* [[현재가치]]


* 연금
* [[재무관리]]
* [[기업재무|기업재무론]]
* 투자론 I


def annuity(cf, r, t):
== 관련 개념 ==
  return cf * (1 - 1 / (1 + r) ** t) / r


def annuity2(cf, r, t):
=== 파이썬 기초 ===
  return cf/r - cf/r /(1+r) ** t
* [[산술연산자]]
* [[변수]]
* [[키워드]]
* [[함수]]
* [[조건문]]
* [[반복문]]
* [[모듈]]


두 연금 코드는 같은 답을 도출하는데 밑에 코드를 먼저 이해하면 쉽게 이해할 수 있다.
=== 자료 처리와 시각화 ===
cf/r 는 영구연금을 구하는 방식이고 cf/r /(1+r) ** t 해당 부분은 t년후에 영구연금을 구하는 방식이다.
* [[리스트]]
예를 들어 3년 연금을 구하는 방법은 영구연금에서 x4년차부터 시작하는 영구연금을 (1+r)**t로 할인하고 차감하는 방식이다.
* [[데이터 프레임]]
* [[결측값]]
* [[시각화]]


=== 통계적 분석 ===
* [[기술통계량]]
* [[가설검정]]
* [[회귀분석]]


* 실습
=== 텍스트 분석 ===
* [[정규표현식]]
* [[형태소]]
* [[워드 클라우드]]


def pv(cf, r,t):
=== 화폐의 시간가치 ===
  return cf / (1+r) ** t
* [[현재가치]]
def npv(r, cfs):
* [[영구연금]]
  total = 0.0
* [[순현재가치]]
  for i, cf in enumerate(cfs):
* [[내부수익률법|내부수익률]]
    total += pv(cf,r,i)
  return total
def irr(cfs):
  rate = 0.0
  while(rate < 1.0):
    rate += 0.0001
    value = npv(rate, cfs)
    if(abs(value) <= 0.0001):
      print(rate)
 
rate = []  
value = []  
cfs = [-59, 155, -100]
for i in range(1, 100):
  rate.append(i / 100)
  value.append(npv(i / 100, cfs))
print(rate)
print(value)
 
간단하게 설명해보면 해당 코드를 이용해서 npv값이 0이되는 rate를 찾는 과정을 나타내고 이를 그래프로 보여 주기 위해 rate와 vlaue를 찾아가는 과정이다. pv , npv, irr 코드를 저장하고 for 반복문에 append를 사용했는데 append()는 리스트에 새로운 값을 하나씩 추가할 때 사용하는 코드입니다. append를 이용해서 0.01~0.99 까지 값을 반복적으로 넣어주면서 해당 값을 찾아주는 코드입니다. by 60180852
 
= 채권 =
 
*채권의 가격
 
def bondprice(ytm, face, maturity, coupon, freq = 'annual'):
  if freq == 'annual':
    m = 1
  elif freq == 'semi-annual':
    m = 2
  elif freq == 'quarterly':
    m = 4
  elif freq == 'monthly':
    m = 12
  elif freq == 'daily':
    m = 365
  else:
    m = 0
  try:
    return face * coupon * (1 - 1 / (1 + ytm / m) ** (maturity * m)) / ytm + face / (1 + ytm / m) ** (maturity * m)
  except ZeroDivisionError:
    return print("Error: freq should be either 'annual', 'semi-annual', 'quarterly', 'monthly', or 'daily'.")
 
 
일단 m을 구하는 과정을 코드로 작성해야 하는데 coupon*face (표시이자)를 1년마다 주는지 반년마다 주는지 분기마다 주는지를 if 함수를 통해 구하는 과정이다. 이렇게 구해진 m을 가져와서 채권의 가격을 구한다.
변수가 많아서 헷갈릴 수 있지만 결국에는 연금공식을 이용한 풀이이다. 거기에 만기에 받을 face를 pv화 하는 코드를 더해주면 된다. 마지막에 예외처리를 이용해서 m = 0 이 된 경우에는 원하는 print를 표시해주면 된다.
 
* 가중평균만기 (duration)
 
def pv(r, cf, t):
 
  return cf / (1 + r) ** t


def duration(ytm, face, maturity, coupon, freq = 'annual'):
=== 이자율과 채권 ===
* [[실효이자율]]
* [[만기수익률]]


  if freq == 'annual':
=== 주식과 포트폴리오 ===
    m = 1
* [[포트폴리오]]
  elif freq == 'semi-annual':
* [[자본자산가격결정모형]]
    m = 2
  elif freq == 'quarterly':
    m = 4
  elif freq == 'monthly':
    m = 12
  elif freq == 'daily':
    m = 365
  else:
    m = 0
  try:
    n = maturity * m
    val = pv(ytm / m, face, n) * maturity
    total = pv(ytm / m, face, n)
    for i in range(1, n + 1):
      val += pv(ytm / m, face * coupon / m, i) * (i / m)
      total += pv(ytm / m, face * coupon / m, i)
  except ZeroDivisionError:
    return print("Error: freq should be either 'annual', 'semi-annual', 'quarterly', 'monthly', or 'daily'.")
  return val / total


듀레이션을 구하는 과정은 분수 부분은 각 pv현금흐름을 * 해당 t를 곱합 값이다. 일단 val변수를 설정을 하고 for 반복문을 통해 각 사업년도에 현금흐름 * t를 더해주는 반복문을 설정하면 된다.
[[분류:디지털금융]]
분모 부분은 tatal 변수를 설정하고 채권의 가격을 구하는 과정이라고 생각하면 된다. val/tatal를 마지막에 작성해주면서 가중평균만기를 구해주는 코드를 작성하면 된다.  by 60180852

2026년 6월 12일 (금) 12:07 기준 최신판

이 문서는 명지대학교 경영학전공 강좌 '디지털금융'에 관한 것이다. 정보통신기술을 활용하여 금융서비스를 제공하거나 금융시장의 작동방식을 혁신하는 분야 일반에 대해서는 핀테크 문서를 참조한다.

디지털금융(digital finance)은 명지대학교 경영학전공 4학년을 대상으로 개설되는 전공 심화 강좌이다. 재무관리·기업재무론·투자론 I 등 기존 재무금융 교과목에서 학습한 이론을 바탕으로, 기초적인 파이썬(Python) 프로그래밍을 도구로 활용하여 재무금융 이론을 실무적으로 구현·응용하고 실제 데이터를 활용한 분석 역량을 배양하는 것을 목표로 한다.

강의개요

디지털금융은 재무금융 이론을 데이터 분석의 관점에서 심화·확장하는 전공 심화 강좌이다. 파이썬 실습을 기반으로 금융 이론과 실무를 연결하며, 실제 데이터를 활용하여 분석 역량을 키운다. 주요 주제로는 화폐의 시간가치, 채권주식의 가치평가, 포트폴리오 이론, CAPM, 텍스트 분석 등이 있다.

학습목표

  1. 재무금융 분야의 핵심 개념과 이론을 명확히 이해하고 이를 데이터 분석의 관점에서 재구성할 수 있다.
  2. 파이썬을 활용하여 현실의 금융 데이터를 직접 수집·정제·분석하고, 그 결과를 경제적·재무금융적 관점에서 해석할 수 있다.
  3. 디지털 기술을 활용한 금융 분석이 실제 의사결정과 어떻게 연결되는지를 이해할 수 있다.

선수과목

디지털금융을 수강하기 위해서는 다음 교과목을 이수하는 것이 바람직하며, 이들 과목의 핵심 개념과 분석 틀을 전제로 진행된다.

관련 개념

파이썬 기초

자료 처리와 시각화

통계적 분석

텍스트 분석

화폐의 시간가치

이자율과 채권

주식과 포트폴리오