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

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 옵션 가격 모형 사용

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

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

BSM 옵션 가격 모형시 만기 주가지수  ST=S0 exp((r (1 2σ2)T+σTz) 과 같은 랜덤 변수

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

 

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

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

몬테카를로 추정식

C0erT 1 I IHT(i)

 

ST=S0 exp((r (1 2σ2)T+σ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)

 

 

결론 

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

 

 

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

반응형