본문 바로가기
----------책----------/파이썬을 활용한 금융 분석

CHAPTER 1_ 왜 금융 분석에 파이썬을 사용하는가

by 탶선 2020. 3. 18.
반응형

파이썬

  • 고수준 객체지향 인터프리터 언어
  • 동적 의미 구조
  • 고수준의 자료구조, 동적 타이핑, 동적 바인딩 특성 - 고속 응용프로그램 개발에 적합

파이썬의 장점

  • 오픈소스
    • 파이썬, 라이브러리 툴 등 오픈 라이센스 아래 소스 코드를 구할 수 있다.
  • 인터프리터 언어
    • 표준 CPython 런타임시 실행 가능한 바이트 코드로 변환
  • 멀티패러다임
    • 객체지향, 명령형 프로그래밍, 함수형 프로그래밍 등 여러 프로그래밍 구현가능
  • 다목적
    • 저수준의 시스템 기능 구현, 고수준의 해석 업무 모두 이용 가능
  • 크로스 플랫폼
    • 윈도우, 리눅스, 맥 등 대부분에서 사용 가능
  • 동적 타입
    • 정적 선언이 아닌 실행 중에 결정되는 동적 데이터 타입
  • 가비지 콜렉션
    • 자동화된 메모리 관리

 

 

과학 기술용 표준 라이브러리 모음

NumPy(http://www.numpy.org)

  • 동일 또는 혼합 데이터 유형의 다차원 배열 객체 지원
  • 배열 객체에 최적화된 함수, 메서드 제공

SciPy(http://www.scipy.org)

  • 금융 분야에 필수적 표준 기능 구현 함수, 서브 라이브러리 모음
  • ie. cubic spline interpolation, 수치 적분 등 제공

matplotlib(http://www.matplotlib.org)

  • 파이썬용 플롯, 시각화 라이브러리
  • 2차원, 3차원 시각화 기능 제공

PyTables(http://www.pytables.org)

  • 파이썬용 HDF5 자료 저장 라이브러리 래퍼 라이브러리
  • 파일 형식에 기반한 최적화된 디스크 입출력 기능 수행

pandas(http://pandas.pydata.org)

  • numpy 기반
  • 시계열 데이터, 테이블 데이터 관리 해석 가능한 다양한 클래스 제공
  • 플롯팅, 데이터 저장/ 추출을 위해 matplotlib, PyTables 라이브러리와 통합

금융 분야의 기술 특징

  • 금융산업의 기술 비용
  • 새로운 비즈니스 혁신을 가능하게 하는 기술
  • 금융산업의 진입 장벽으로서의 기술과 전문 인력
  • 증가하는 속도와 빈도, 정보의 양
  • 실시간 분석의 증가

 

 

 

유러피안 콜 옵션 가격을 몬테카를로 시뮬레이션을 통해 계산하는 간단한 금융 알고리즘

# 금융 분야에서 파이썬을 활용하는 이유 : 과학 문제, 금융 알고리즘 등 기술시 쓰이는 수학적 문법과 유사하여 활용 이에 대한 예시로 이 책에서는 간단한 금융 알고리즘 구현에 대해 서술한다.

 

옵션의 기초자산 위험 요인 - GBM모형을 따르는 블랙-숄즈-머튼$^{BSM} $ 옵션 가격 모형 사용

가격 결정시 사용되는 파라미터 값

  • 초기의 주가지수 $ S_0 = 100 $
  • 유러피안 콜 옵션의 행사가 K = 105
  • 만기 T = 1년
  • 무위험 단기 이자율 r = 5%
  • 변동성 $ \sigma $= 20%

BSM 옵션 가격 모형시 만기 주가지수  $ S_T = S_0 $ $exp((r- $ $({1 \over \ 2}\sigma^2)T + \sigma \sqrt{Tz} )$ 과 같은 랜덤 변수

  • z - 표준정규분포를 따르는 랜덤 변수

 

몬테카를로 방법을 사용한 가격결정 알고리즘

  1. 표준정규분포에서 I개의 난수 $ z(i), i \in {1,2, ..., I} $ 추출
  2. 1에서 선택한 z(i)와 BSM 모형에서의 만기 주가지수를 활용하여 만기에서의 지수값 $ S_T(i) $를 I개 계산
  3. 계산된 $ S_T(i) $ 에 대해 수식 $h_T(i) = max(S_T(i) - K,0) $을 이용하여 만기에서의 옵션 가격을 I개 계산
  4. 몬테카를로 추정식을 사용하여 옵션의 현재 가치 계산

몬테카를로 추정식

$ C_0 \approx e^{-rT}$ ${1 \over \ I}$ $\sum_I H_T(i) $

 

$ S_T = S_0 $ $exp((r- $ $({1 \over \ 2}\sigma^2)T + \sigma \sqrt{Tz} )$ 수식을 파이썬으로 구현

import numpy as np

#파라미터 값
S0 = 100.  # 초기의 주가지수
K = 105.   # 행사가
T = 1.0    # 만기까지 남은 시간
r = 0.05   # 무위험 이자율
sigma = 0.2 # 변동성
I = 100000 # 시뮬레이션 횟수

# 가격결정 알고리즘
z = np.random.standard_normal(I) # 의사 난수
ST = S0 * np.exp((r-0.5 * sigma ** 2) * T + sigma * np.sqrt(T) * z)


#만기 시의 주가지수
hT = np.maximum(ST - K, 0)             # 만기 시의 내재 가치
C0 = np.exp(-r * T) * np.sum(hT) / I  # 몬테카를로 추정식

print("Value of the European Call Option %5.3f" % C0)

 

 

결론 

  • 금융산업에 있어 파이썬은 프로그래밍 언어로 가장 이상적
  • 파이썬은 정밀한 문법, 효율적인 개발 방식, 등 다양한 장점 존재

 

 

# 본 게시물은 "파이썬을 활용한 금융분석" 을 읽고 작성하였습니다. #

반응형

댓글