-
선형보간법 연습 : 파이썬 구현(라이브러리 이용)금융퀀트/자산평가&프로그램매매 2022. 5. 5. 15:09반응형
선형 보간법 연습
선형 보간법 연습이란 글을 통해서 개념을 먼저 학습한 다음 파이썬 실습을 해보면 더 좋다.
라이브러리 소개
SciPy
SciPy(사이파이)는 공학 계산을 위한 파이썬 라이브러리로 Numpy, Matplotlib 등과 같이 쓰인다. 대수적인 계산이나 보간 등을 할 때 쓰이는데, 그냥 일반 계산기 대신에 공학 계산기를 쓴다고 생각하면 된다.
Matplotlib
Matplotlib 는 데이터를 시각화하는데 많이 쓰인다. 쉽게 생각해서 그래프를 쉽게 그려주는 도구라고 생각하면 된다.
보통 위 두 라이브러리는 anaconda에서 파이썬을 설치하면 자동으로 세팅되어 있다. anaconda prompt에서 아래 명령어를 치면 내가 가진 라이브러리를 전부 볼 수 있으니 확인해보면 된다.
conda list
혹시나 라이브러리가 없는 경우 anaconda prompt 에서 SciPy는 첫 번째, Matplotlib는 두 번째 명령어를 치면 된다.
pip install scipy pip install matplotlib
물론 anaconda navigator에서 아래와 같이 Environments 텝에서 내가 원하는 환경을 클릭해서 ( 보통 기본 환경이니까 base(root) 클릭 ) 라이브러리를 직접 검색해서 설치할 수도 있다.
그림1: 라이브러리 설치 SciPy와 Matplotlib을 이용한 선형 보간 연습
기초 데이터
다음은 2022년 4월 26일 원/달러 스왑포인트 데이터이다. ( 스왑포인트에 대한 자세한 개념은 이 블로그의 선물환 가격 결정 방법 : 스왑포인트의 이해를 참고하면 된다. ) 아래 그림에서 확인할 수 있듯이 스왑포인트는 1개월(30일), 2개월(60일), 3개월(90일), 6개월(180일), 1년(360일) 데이터밖에 없다. 그런데 내가 50일짜리 선물환 거래를 하고 싶다고 하면 어떤 가격을 써야 할까?
그림2: 기일물별 스왑포인트 데이터 선형 보간 코딩하기
먼저 기일물을 x 축 변수로 잡고 스왑포인트를 y 축에 놓고 그래프를 구현해 보자. 위에서 소개한 라이브러리의 함수에 변수만 잘 갖다 넣으면 아래 코드를 이용해서 그림2 의 데이터를 선형 보간한 그래프를 확인할 수 있다.
#Scipy 와 Matplotlib 라이브러리 사용 from scipy import interpolate import matplotlib.pyplot as plt #그림2의 데이터 정의 ( x가 개월물, y가 스왑포인트) x = [30, 60, 90, 180, 360] y = [-130, -240, -355, -940, -2370] #SciPy의 interploate 모듈의 interp1d 함수를 사용해서 선형보간 함수를 생성 linear_func = interpolate.interp1d(x, y, kind='linear') #선형보간 함수에 x를 넣어서 선형보간된 값인 y_linear를 구함 y_linear = linear_func(x) #maplotlib 를 이용해서 x 값, y 값 으로 점 "o" 를 찍어주고 #x 값 y_linear 값 으로 "-" 표시로 점 사이를 채워줌 plt.plot(x,y,"o", x, y_linear, "-") #maplotlib 를 이용해서 그래프를 보여줌 plt.show()
그렇다면 50 일물 즉 기일물이 1M과 2M 사이의 어딘가의 스왑포인트를 알고 싶으면 어떻게 해야 할까? 아래와 같이 x_new라는 변수를 잡고 위에서 만든 linear_func라는 함수에 넣어주면 값을 구할 수 있다.
from scipy import interpolate import matplotlib.pyplot as plt x = [30, 60, 90, 180, 360] y = [-130, -240, -355, -940, -2370] linear_func = interpolate.interp1d(x, y, kind='linear') y_linear = linear_func(x) ##위와 같음 #x_new라는 변수에 내가 스왑포인트를 알고싶은 기간물을 설정(여기선 50일짜리 스왑포인트) x_new = 50 #linear_func에 x_new 라는 변수를 입력 y_new = linear_func(x_new) #결과값 확인을 위해서 y_new를 출력 print(y_new)
정답은 대략 -203 정도가 나온다. 이 과정을 라이브러리를 사용하지 않고 직접 코딩할 수도 있는데 이는 선형 보간법 연습: 파이썬 구현 을 참고하면 된다.
반응형'금융퀀트 > 자산평가&프로그램매매' 카테고리의 다른 글
몬테카를로시뮬레이션의 직관적인 이해 (0) 2022.05.21 선형보간법 연습 : 파이썬 구현 (0) 2022.05.05 지수보간법 연습 (0) 2021.07.02 Bootstrapping 2: 선도 금리 만들기 실습 (0) 2021.02.10 Bootstrapping 1: 무이표채 금리 만들기 실습 (1) 2021.02.10