日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python与金融建模_【用Python金融建模】从二叉树谈起:衍生品Option期权定价模型的构建...

發布時間:2023/12/29 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python与金融建模_【用Python金融建模】从二叉树谈起:衍生品Option期权定价模型的构建... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容首發

樂學偶得(http://lexueoude.com) 公眾號: 樂學Fintech

用代碼理解分析解決金融問題

在金融里面很多地方都出現過一個理念就是“貨幣的時間價值”,例如我們之前聊過的利用Python對項目進行估值判斷 就是利用這一重要的思想:我們做出的決定,都是把未來的一系列現金流的【流入】和【流出】進行折現,通過我們理性人在做決定的時候,是選擇對我們有利的事情——也就是折現到現在NPV為正的項目去做。

那么這個世界如果真的這么簡單就好了,我們只需要把未來的現金流折現到現在,然后就可以愉快的進行判斷了。

可是問題來了:未來并不確定。

而且萬事萬物都是相互聯系的,也就是說A可能導致B,B導致C,這樣蝴蝶效應傳遞下去,一個很小的偏差或者錯誤的估計會導致巨大的差錯。

二叉樹是我們對未來進行預判的一種思考方式,也是金融里面常用的模型,二叉樹的思想如下:

1.事情的發展分成一個階段一個階段

2.每一個階段只有兩個結果:變好和變壞

如果這是一個項目,我們可以把項目通過二叉樹進行估計,最好的情況,好成什么樣,最差的情況,差成什么樣,一目了然:項目估值

還有一個非常重要的運用就是在擬合或者模擬未來股價的趨勢上,股價本質上就是一系列的時間序列,所以說與項目的估值也是一類東西:隨著時間的變化,價格隨之改變股價預測

我們下面就來介紹這樣一個思考問題的方法與原理,并且通過Python進行建模計算:

二叉樹的思想就是把未來時間軸分為一期一期,在每一期內,只有價格只有兩種變化方向,向上,或者向下。我們從一期二叉樹開始思考:

一期二叉樹

假設初始價格為S0,在第一期的時間內,有P的概率價格會上升,成為S0*u 的價格,因為在這段時間內只有兩種可能,所以剩下

的1-P的概率價格會下跌,成為S0*d的價格。

u與d分別為up factor(上漲因子)與down factor(下跌因子),(我明白,涉及到公式經常會加什么什么因子,導致這個名字很山寨,但是因為多期二叉樹中會用到,兩個因子造成的影響也可能不一樣,所以我們暫且盡量用一般公式與常見叫法去表示)

另外,我們為了多期二叉樹能夠重合,也就是上漲下跌與下跌上漲的結果一樣,我們將u與d兩個因子設立一個約束條件u*d=1

這樣,我們從一期推廣到多期,就可以得到如下流程圖:多期二叉樹

也就是說,我們只要能知道p(上漲概率)與u(上漲因子),就能求出1-p(下跌概率),與d(因為約束關系),這樣整個未來的價格的路徑就能夠知道了。

好了,這樣我們就知道最簡單的標的資產,通過二叉樹的方法進行預測未來變動,是什么樣的路徑了。

我們接下來再把問題弄復雜一點,假設我們研究的不是簡單的標的資產,比如說并不是一個單一的項目(可以看做一系列的未來現金流)或者是一個簡單的股票,而是衍生品,也就是說定價是衍生在原標的資產上的產品,那我們如何進行定價呢?

這就涉及到了二叉樹運用非常多的一個方面——衍生品定價。

我們接下來還是以例子,只不過我們研究的不僅僅是標的資產(比如說股票stock),而是衍生在標的資產上的金融產品(比如說期權option),我們該如何定價呢?標的資產二叉樹標的資產上衍生的call option

對于Call Option(看漲期權),其實價格非常好計算,X為執行價格,就是max(X-S0u^1,0)或者是max(X-S0d^1,0),也就是說要么為執行價格與股價的差價,要么為0.

這樣,我們在0時刻的期權價格也非常好計算了,

期權價格= [ p ×上漲時期權價格 + (1?p) ×下跌時期權價格] × 折現因子

當然折現因子在這里可以用連續復利也可以用離散復利的方法折現,比較推薦連續復利,因為更加準確。利用連續復利的方法進行折現

那么我們到這里已經完全具備了建模的理論基礎了,我們接下來用Python建立二叉樹模型進行定價計算,這樣不僅能鞏固我們的概念,也能鍛煉我們的建模能力:

我們首先可以先調整numpy的顯示,因為如果期數較多的情況下jupyter notebook中會截斷大量數據,我們想讓數據全部顯示出來:

import sys

import numpy

numpy.set_printoptions(threshold=sys.maxsize)

然后我們只需要numpy幫我們儲存一下數據并且計算即可,當然也可以用pandas,但是因為數據結構并不復雜,有點大材小用,我們用array就能搞定了。

import numpy as np

我們現在可以自定義一個函數,把可以在市場上觀測到的信息作為參數:

def binomial_tree_call_option_pricing_model(N,T,S0,sigma,r,K,show_array=False):

dt=T/N

u=np.exp(sigma*np.sqrt(dt))

d=1/u

p=(np.exp(r*dt)-d)/(u-d)

其中N為期數,T為總時間,S0為初始價格,sigma為波動率,r為無風險利率,K為執行價格,show_array為一個開關,我們可以用show_array 來控制,是否顯示array。

dt為將總時間通過除以期數切分為每一個小段,每一個小段為一期二叉樹。

u為上漲多少,這個是根據上述講到的公式來確定的,同樣,為了二叉樹能重合,d=1/u,通過約束關系也能表示出來。

p為上漲概率,同樣根據上述講到的公式來確定的上述講到的公式

接著我們需要創建一個容器去儲存我們的數據,我可以用numpy的zero生成全部是zero的矩陣用作存放數據的容器:

但是因為這個容器是需要隨著數據的多少而隨之變化,也就是不能是固定的大小,于是我們可以通過變量進行解決:

price_tree=np.zeros([N+1,N+1])

然后我們就可以將這個容器里面的數據填滿了,我們首先填入的是價格,也就是比如標的資產是股票的話,股票在未來T時間段里的每一個dt期間變動的可能價格,我們全部放入:

for i in range(N+1):

for j in range(i+1):

price_tree[j,i]=S0*(d**j)*(u**(i-j))

這里有一個nested for loop的技巧,我們在很多list of lists, array等里面都會用到。另外,價格上升也下降我們通過N+1和i+1確定range,i和j的約束關系控制上漲個下跌的次數

接著我們依葫蘆畫瓢的方法先建立起option價格的tree:

我們首先計算每一個期權價格:

option_tree=np.zeros([N+1,N+1])

option_tree[:,N]=np.maximum(np.zeros(N+1),price_tree[:,N]-K)

然后我們把期權價格通過反向進行折現,求出t=0時刻的價格:

for i in np.arange(N-1,-1,-1):

for j in np.arange(0,i+1):

option_tree[j,i]=np.exp(-r*dt)*(p*option_tree[j,i+1]+(1-p)*option_tree[j+1,i+1])

然后我們就可以直接返回array的值就可以了,因為我們在參數中直接將show_array設置成了False,所以是默認不顯示出整個樹狀結構的:

if show_array:

return [option_tree[0,0],np.round(price_tree),np.round(option_tree)]

else:

return option_tree[0,0]

這樣我們能直接返回這個期權定價的初始價值,如果我們將show_array調成True,則執行第一段,將整個樹狀結構也就是每一個標的資產價值顯示出,當然,我們為了美觀,將array中的結果進行了round,沒有保留小數。

當然,我們還沒有討論一個問題,就是上漲概率和下跌概率與風險中性定價原則,我們在接下來為大家介紹......未完待續......

以上為《Python零基礎入門編程的新世界》部分內容筆記。用Python做爬蟲,數據分析,全棧建設,Fintech金融量化,機器學習,辦公自動化,樹莓派,美好生活DIY,......2000+連載,不僅有編程,還有更多原理講解。零基礎Python入門編程全棧量化AI - 網易云課堂?study.163.com

另外,也歡迎關注一個非常干的干貨公眾號: 樂學Fintech用代碼理解分析解決金融問題

總結

以上是生活随笔為你收集整理的python与金融建模_【用Python金融建模】从二叉树谈起:衍生品Option期权定价模型的构建...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。