-
선형보간법 연습 : 파이썬 구현금융퀀트/자산평가&프로그램매매 2022. 5. 5. 16:01반응형
선형 보간법 연습
선형 보간법 연습이란 글을 통해서 개념을 먼저 학습한 다음 파이썬 실습을 해보면 더 좋다.
선형 보간법 파이썬으로 구현하기
우리는 다른 글에서 파이썬 라이브러리를 이용해서 선형보간법을 구현해봤다.( 선형 보간법 연습: 파이썬 구현(라이브러리 이용) ) 라이브러리의 도움 없이 직접 선형 보간법을 구현하는 방법은 없을까?
기초 데이터
다음은 2022년 4월 26일 원/달러 스왑포인트 데이터이다. ( 스왑포인트에 대한 자세한 개념은 이 블로그의 선물환 가격 결정 방법 : 스왑포인트의 이해를 참고하면 된다. ) 아래 그림에서 확인할 수 있듯이 스왑포인트는 1개월(30일), 2개월(60일), 3개월(90일), 6개월(180일), 1년(360일) 데이터밖에 없다. 그런데 내가 50일짜리 선물환 거래를 하고 싶다고 하면 어떤 가격을 써야 할까?
기초 지식
파이썬에서 list 라는 데이터의 성질을 통해 위 문제를 풀어보려고 한다. ( 01 파이썬 데이터형식(&Pandas 데이터) 참조 ) 자세한 내용은 링크된 글을 참조하면 되고 우리가 사용할 성질은 파이썬에 tuple이라는 형식으로 데이터를 만들면 데이터에 번호가 매겨진다는 점이다. 예를 들면, 위 기일물을 30일, 60일, 90일, 180일, 360일로 나눌 때 tuple이라는 데이터 형식으로 다음과 같이 저장할 수 있다.
x = [30, 60, 90, 180, 360]
여기에서 첫번째 데이터인 30 은 파이썬에서는 0번째 데이터라고 보고 x [0]과 같이 표현한다.
선형 보간 코딩하기
선형보간법의 핵심은 내가 구하고자 하는 변수가 어느 구간에 해당하는지를 아는 것이다. 어떤 구간인지 판단이 되면 구간의 시작점과 끝점을 이용한 비례식을 통해서 값을 구할 수 있다.
x_new = 50 x = [0, 30, 60, 90, 180, 360] y = [0, -130, -240, -355, -940, -2370] if x_new < 30 : node = 0 elif x_new >= 30 and x_new < 60 : node = 1 elif x_new >= 60 and x_new < 90 : node = 2 elif x_new >= 90 and x_new < 180 : node = 3 elif x_new >= 180 and x_new < 360 : node = 4 elif x_new >= 360 : node = 5 y_new = ( x_new - x[node]) / (x[node+1]-x[node]) * (y[node+1]-y[node]) + y[node] print(y_new)
위 코드에서 x_new 값인 50 일물은 30일보다는 크고 60일 보다는 작은 값으로 node라는 변수에 1을 부여할 것이다. 그렇다면 구간의 시작점은 x[1] = 30, y[1] = -130 구간의 끝점은 x[2] = 60, y[2] = -240 이 된다. 그러면 위 식에서도 볼 수 있듯이 x_new = 50에 대한 선형 보간법의 결과인 y_new 값은 대략 -203 정도가 나온다. ( 위 코드를 파이썬에서 그대로 실행해 보면 된다. ) 이는 정확히 SciPy 라이브러리를 이용하여 구현한 값과 같다. ( 선형 보간법 연습 : 파이썬 구현(라이브러리 이용) 참조 )
반응형'금융퀀트 > 자산평가&프로그램매매' 카테고리의 다른 글
일주일 뒤 코스피 지수는?: 몬테카를로시뮬레이션 실습 (0) 2022.05.22 몬테카를로시뮬레이션의 직관적인 이해 (0) 2022.05.21 선형보간법 연습 : 파이썬 구현(라이브러리 이용) (0) 2022.05.05 지수보간법 연습 (0) 2021.07.02 Bootstrapping 2: 선도 금리 만들기 실습 (0) 2021.02.10