파이썬
-
과연 이항모형은 아메리칸 옵션을 구현할 수 있는가(feat. CRR 논문)파이썬 2021. 5. 15. 23:59
나의 지식의 모자람으로 인하여 해결되지 않는 큰 궁금증이 생겼다. 우리는 이항모형이 만기 이전에 옵션행사가 가능한 아메리칸 옵션을 구현할 수 있는 모형이라고 큰 의심없이 믿고 있으며, 대부분의 교과서에도 그렇게 기술되어 있다. 그리하여 일반적으로 특정시점의 아메리칸옵션의 가치를 계산할 때 Max[①S - K, ②(p * Cu + (1 - p) * Cd)/(1 + Rf)]의 방식으로 계산한다. 말로 풀어쓰면 특정시점의 아메리칸 옵션의 가치는 ①옵션 행사시 기대값과 ②보유시 기대값의 현재가치 중 큰 값이라는 것이다. 언뜻 봐서는 너무나 명확해서 반론하기 어려운 식인 것으로 보인다. 그런데 내가 밥벌이하는 과정에서 옵션평가를 여러번 수행한 경험상으로는 행사기간중에 행사가격이 변동하지 않는 기본적인 아메리칸 옵..
-
파이썬으로 금리파생상품(조기상환권, 수의상환권, Put Option, Call Option) 모델 만들기(fsolve로 Black-Derman-Toy 모델 구현)(Part 1)파이썬 2020. 10. 22. 16:50
6개월만에 쓰는 글인 것 같습니다. 4월 22일자 글(파이썬으로 목표값 찾기, https://pythoncpa.tistory.com/6?category=806912)에 우연한 분께서 fsolve라고 하는 목표값 찾기 함수가 있다고 가르침을 주셔서, 또 구글과 유튜브를 뒤져서 허접한 모델을 만드는데 성공했습니다. 그런게 있는 줄도 몰랐는데 이 자리를 빌어서 댓글을 남겨주신 우연히 님께 감사드립니다. 일단, BDT 모형(Black-Derman-Toy model, en.wikipedia.org/wiki/Black%E2%80%93Derman%E2%80%93Toy_model)은 금리변동을 이항모형으로 추정하여, 특정 채권에 부여된 콜옵션 또는 풋옵션 등의 가치를 계산하는 모형입니다. 모델링 과정에서 어려운 부분은..
-
파이썬으로 목표값(또는 최적해) 찾기(Goal Seek)파이썬 2020. 4. 22. 17:26
금리옵션모형을 만들 때에는 목표값 찾기 기능이 필요합니다. 단순 추정한 선도이자율을 보정(Calibration)하기 위해서 목표값 찾기 기능이 필요한데, 엑셀에는 목표값 찾기 기능이 내장되어 있지만 파이썬에는 이러한 목표값 찾기 기능이 미리 만들어져 있지 않습니다. IRR 정도 구하는 함수는 있었지만 다른 형태로 목표값을 찾는 코드는 구글에 검색해도 잘 안나오는 것 같습니다. 그래서 목표값을 찾는 코드를 직접 만들어 보았습니다. 엑셀 처럼 아무 식이나 넣고 돌리면 값이 나오는 수준으로까지는 구현을 못하였고, 1보다 작은 소수점에서 출발하여 소수점 16째자리까 숫자를 대입해서 목표값에 가장 근접한 결과값을 보이는 숫자를 찾는 방식으로 구현하였습니다. 따라서 최초에 반복문을 시작하는 범위를 지정해 주어야 합..
-
파이썬으로 현물이자율(Spot Rate)과 선도이자율(Forward Rate) 구하기파이썬 2020. 4. 9. 18:38
제일 처음 포스팅한 글이 이항분포 모형이 되다보니 관련 글을 계속 쓰게 되네요. 앞에 글에서 언급하였던 내용을 복기하자면 이항분포의 단위기간을 매우 작은 크기로 줄이게 되면 이항모형과 블랙숄즈모형은 거의 유사한 값으로 도출이 됩니다. 따라서 이항분포 모형과 블랙숄즈 모형은 계산 과정은 다르지만 결국에는 같은 결과를 낼 수 있는 유사한 도구라는 것이고, 블랙숄즈 모형은 만기이전 행사를 구현할 수 없지만 이항모형은 만기이전 행사를 구현할 수도 있고, 옵션과 회사채가 혼합된 상품이나 기본적인 전환옵션에 추가적인 조건이 부여된 효과도 구현해낼 수 있기 때문에 더 우월한 모델이지 않을까라고 조심스럽게 생각해봅니다. 사설이 길었습니다. 표제의 본론으로 들어가면 CRR 이항모형은 만기시점(t)의 옵션가격으로부터 특정..
-
파이썬으로 블랙숄즈 옵션 평가 모델 만들기파이썬 2020. 4. 2. 19:23
이항분포 모형으로 만들었던 옵션 평가모델을 다시 블랙숄즈 모형으로 만들어보려고 합니다. 일단 블랙숄즈 콜옵션 공식은 다음과 같습니다. C = S * N(d1) - K * e^(-Rf * T) * N(d2) N(d) : 표준정규분포의 z=d까지의 확률 d1 = [ln(S / K) + (Rf + 1/2 * V^2) * T] / [V * T^(1/2)] d2 = d1 - V * T^(1/2) 이항분포 모형(https://pythoncpa.tistory.com/2) 만들었을 때와 동일한 조건으로 변수들을 정리하도록 하겠습니다. S0 = 100 V = 0.3 T = 5 dt = 무한대로 작은 수 Rf = ln(1 + 0.05) K = 100 여기서 이항모형과의 차이점은 dt가 무한대로 작은 수라는 점과 Rf를 연..
-
파이썬으로 이항분포 옵션 평가(CRR) 모델 만들기파이썬 2020. 3. 29. 11:34
저는 공인회계사이고 프로그래밍 전문가는 아닙니다. 우연한 기회에 파이썬을 접하게 되었고, 엑셀로 구현하기 어려운 이항분포 옵션 평가 모델을 파이썬으로 만들 수 있지 않을까 하여, 수개월 가량 각종 서적과 유튜브 등을 뒤져가면서 공부한 끝에 최근에는 원하던 모델을 파이썬으로 구현할 수 있게 되었습니다. 익숙해지고 나니 엑셀보다 훨씬 실행속도가 빠르고 복잡한 조건들을 구현할 수 있어서, 실제로 옵션 평가 업무 수행시에 활용하고 있습니다. 또한 파이썬을 활용하여 대량 데이터 분석이나 웹 크롤링도 가능하다는 것을 알게 되었고 이것저것 재밌게 배워가며 업무에 활용하려고 노력하고 있습니다. 블로그를 한번 만들어보고 싶다는 생각을 하고 있었는데, 파이썬을 활용한 재무분석이 좋은 주제가 될 수 있지 않을까 하여 첫 글..