Python財金應用:Black-Scholes選擇權訂價模型(1)

文章推薦指數: 80 %
投票人數:10人

經典的量化金融案例,也是每天在交易室會碰到無數次的內容,推導Black-Scholes formula就不是本篇的重點,有興趣我會在文章最底下附上推薦書單。

跳到主要內容 Python財金應用:Black-Scholes選擇權訂價模型(1) 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 9月03,2018 經典的量化金融案例,也是每天在交易室會碰到無數次的內容,推導Black-Scholesformula就不是本篇的重點,有興趣我會在文章最底下附上推薦書單。

選擇權(Options)就是在未來某個時點可用某個價格買進或賣出標的資產的權利,投資人可以買進當作避險或樂透賭博,選擇權槓桿倍數相當大,如果將Gamma效果考慮進去,槓桿可以至百倍,而行情看錯則頂多失去權利金而已,Black-Scholes就是利用未來標的資產進入價內的機率去計算出選擇權權利金的。

有了這個評價公式後,我們可以衡量在設定波動度下的選擇權理論價值,也可以利用市場報價來反推選擇權的波動率,一般稱為隱含波動率(ImpliedVolatility)。

上圖就是選擇權的報價畫面,可以看到某個日期到期的選擇權鏈(OptionsChain)的各履約價報價,並從中反推各種參數。

用Python撰寫Black-Scholes評價公式其實很輕鬆,按照公式的寫法轉換為套件的函數而已,同步還可學會函數的應用。

importnumpyasnp fromscipyimportstats S=100. K=105. r=0.01 t=180/252. Sigma=0.2 d1=(np.log(S/K)+(r+0.5*Sigma**2)*t)/(Sigma*np.sqrt(t)) d2=d1-Sigma*np.sqrt(t) Call=S*stats.norm.cdf(d1,0.0,1.0)-K*np.exp(-r*t)*stats.norm.cdf(d2,0.0,1.0) 以上就是一個簡單的選擇權評價範例,給定五個參數數值後,就直接開始計算d1與d2,大家可以對照一下公式,就會發現其實很簡單,下面將每個區塊拆解並解釋。

1.引入套件(numpy,scipy) importnumpyasnp fromscipyimportstats 由於Black-Scholes需要用到指數(Exponential)與常態累積分配(Normaldistributionc.d.f.)的科學運算 現有預設的Python是沒有這類函數的,則需要引用大量擁有科學運算函數的numpy與scipy。

2.給定Black-Scholes參數 S=100. K=105. r=0.01 t=180/252. Sigma=0.2 先行預設標的資產價格(S)、履約價格(K)、無風險利率(r)、具到期日(t)與波動率(Sigma),在整數位後幾乎都有加上小數點,就是為了將變數設定為浮點位,以確保運算正確。

(Python不用另行宣告變數型態) 3.計算d1與d2 d1=(np.log(S/K)+(r+0.5*Sigma**2)*t)/(Sigma*np.sqrt(t)) d2=d1-Sigma*np.sqrt(t) 有利用的函數為numpy的log與sqrt,詳細可對照封面照的公式,要小心括號的擺放。

4.計算Call的理論價格 Call=S*stats.norm.cdf(d1,0.0,1.0)-K*np.exp(-r*t)*stats.norm.cdf(d2,0.0,1.0) 這裡用到常態累積分配的函數,參數為0與1,代表是標準常態分配(mean=0,std=1),相信大家應該可以舉一反三求出Put的程式了吧? 最後要教大家如何把Black-Scholes選擇權評價公式包裝為函數(function),函數可以把既有的運算邏輯轉換為一個可以呼叫的程式,例如Excel中既有的函數(Ex.Sum,Average等),我們可以設計成BlackScholes(S,K,T,r,Sigma,C/P),之後要重複使用則只要把參數丟給這行程式就可以產出選擇權價格啦!是不是很方便呢? 推薦書單: 1.陳松男-金融工程學 2.陳威光-選擇權理論、實務與風險管理 財務工程 Python 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言 這個網誌中的熱門文章 Python新手村任務(2):Spyder 9月02,2018 什麼是IDE(IntegratedDevelopmentEnvironment)呢?就是一種輔助我們開發程式應用的工具,如果不用IDE的話,我們要怎麼寫Python呢?用cmd一樣可以操作,只是對於大型程式編寫則相當不方便,所以我們需要IDE。

Anaconda內建的Spyder就相當好用了,可以搜尋Spyder就可找到執行檔開啟Spyder後即會進入類似這樣的畫面,多了一些其他輔助我們寫程式的工具這個版本是我調整過編輯區塊底色與部分的功能排版,共分為左中右三個區塊左(Outline):類似像書本的目錄一樣的地方,當程式行數到一定程度時,在尋找過去寫過的變數或函數時會變得非常花時間,所以需要Outline的功能,他會依據變數與函數做區分,個別按照字母排序,這樣可以節省一些尋找的時間。

中(Editor):程式專案的編輯區塊。

右(Variableexplorer、IPythonconsole):左上可即時觀看正在運作的程式用到了哪些變數,名稱、類型與資料數個別為何;IPythonconsole這個區塊是我非常常利用的區塊,主要為逐行輸入並執行,一有發生錯誤可立即知道是哪行開始出現錯誤,修正完錯誤後再將完整程式碼放至Editor上。

如上圖IPythonconsole中顯示,當語法沒有錯誤時,將會顯示結果並跳至下一行,當語法錯誤或有其他問題時,可讓我們立即知道是哪邊錯誤。

這篇中介紹了我在使用Spyder常用的功能與區塊,實際的運用待未來的實作課程時,再實際操作一次我的習慣作法,以上內容均為我認為習慣或較好的用法,每個人習慣不同都可以按照自己的方式操作。

閱讀完整內容 透過Python與資料庫建立法人級投資分析平台 9月01,2018 這個是利用Python與資料庫建立的股票基本面分析平台,可以觀看歷史股價走勢與財報內容。

●利用爬蟲將公開資訊存至資料庫●利用Python執行分析介面與運算 閱讀完整內容 Raymond 我是Raymond,在交易室擔任Trader,曾任計量研究員,擅長金融交易與程式設計 瀏覽簡介 Category 金融商品介紹 投資交易策略 衍生性金融商品 機器學習 程式語言 標籤 財務工程1 Python3 Python新手村教學2 QuantBase1 封存 2018 4 九月2018 4 Python財金應用:Black-Scholes選擇權訂價模型(1) Python新手村任務(2):Spyder Python新手村任務(1):Anaconda安裝 透過Python與資料庫建立法人級投資分析平台 PopularPosts 透過Python與資料庫建立法人級投資分析平台 9月01,2018 閱讀完整內容 Python新手村任務(2):Spyder 9月02,2018 閱讀完整內容



請為這篇文章評分?