金融科技的蓬勃發(fā)展,為了科技業(yè)注入了一股新的活水,確讓傳統(tǒng)的金融業(yè)者倍感威脅。但與其墨守成規(guī),金融業(yè)界應(yīng)該思考的是該怎么活用機器學(xué)習(xí)、人工智能等新興技術(shù),將智能灌注在既有的資料上,打造的金融業(yè)務(wù)面貌。

俗語說:「工欲善其事、必先利其器」為了能夠快速從金融大數(shù)據(jù)中挖掘出價值信息,我們必須要使用良好的分析工具,才能達到事半功倍之功效。而受到數(shù)據(jù)科學(xué)家們所共同推崇的Python 語言,便是我們可以活用來搜集、處理、分析金融數(shù)據(jù)的*幫手。

蒙特卡洛算法

期權(quán)的蒙特卡洛估值是導(dǎo)致高計算負擔的金融算法之一。作為特例,我們選擇Black-Scholes-Meron設(shè)置下的歐式看漲期權(quán)價值蒙特卡洛估值函數(shù)。在這種設(shè)置下,所要估值的期權(quán)標的遵循隨機微分方程式(SDE),如下公式。St是時間t的標的價值;r是一個常數(shù)——無風(fēng)險短期利率;σ是恒定瞬時波動率;Z是布朗運動。

Black-Scholes-Metron SDE

Black-Scholes-Metron SDE

歐式看漲期權(quán)的蒙特卡洛估算函數(shù)

蒙特卡洛估算函數(shù)

蒙特卡洛估算函數(shù)

估算期權(quán)價值的另一種流行數(shù)值方法是二項式期權(quán)定價模型。 這種模型和Black-Scholes-Meron設(shè)置一樣有風(fēng)險資產(chǎn)(指數(shù)或者股票)以及無風(fēng)險資產(chǎn)(債券)。 和蒙特卡洛方法一樣,從當天到期權(quán)到期日的時間間隔被分為通常等距的子間隔Δt, 如果時間s的指數(shù)水平為Ss, 則 t = s+Δt 時的指數(shù)水平為St = Ss·m , 其中m是從

估算期權(quán)價值

{u, d } 中隨機選取(

)。r是 一個常*一無風(fēng)險利率。 風(fēng)險中立的上漲概率為。

對該模型進行參數(shù)化:

模型進行參數(shù)化

歐式期權(quán)二項式算法的實現(xiàn)主要包含如下部分:

1、指數(shù)水平模擬

連步模擬指數(shù)水平。

2、內(nèi)在價值計算

計算到期日和每個時間步的內(nèi)在價值。

3、風(fēng)險中性折算

逐步折算(預(yù)期)內(nèi)在價值直到達到現(xiàn)值。

Python中,這可能采取函數(shù)binomial_py中的形式。該面數(shù)使用NumPy ndarray對象作為基本數(shù)據(jù)結(jié)構(gòu), 并實現(xiàn)3個不同的嵌套循環(huán),以實現(xiàn)上述的3個步驟:

函數(shù)binomial_py中的形式

上函數(shù)使用前面指定的參數(shù). 返回歐式看漲期權(quán)的現(xiàn)值:

將這個結(jié)果與蒙特卡洛函數(shù)bsm_mcs_valuation返回的估算結(jié)果比較

兩個值很類似,它們只是“相似” 而不是相同。是因為蒙特卡洛估值和bsm_mcs_valuaton所實現(xiàn)的算法都不是很*, 不同的隨機數(shù)會導(dǎo)致(稍有)不同的估算結(jié)果, 對于健全的蒙特卡洛估算來說, 每次模擬使用2000Q條路徑也可能略少一些(但是可以得到較高的估值速度)。 相比之下, 本例中的二項式期權(quán)估價使用 1000 個時間步已經(jīng)相當*,但是花費的時間也長得多。

可以嘗試 NumPy 向量化技術(shù),從二項式方法中得到同樣、但是速度更快的結(jié)果。 binomial_np 函數(shù)初看有些神秘,但是, 當運行單獨的構(gòu)建步驟并檢查結(jié)果, 后臺( NumPy )發(fā)生的操作就顯而易見了:

后臺( NumPy )

我們可以得出如下結(jié)論:

效率:使用Nnmba只需要花費很少的額外精力。原始函數(shù)往往完全不需要改變;你所需要做的就是調(diào)用jlt函數(shù)。

加速:Numba往往帶來執(zhí)行速度的顯著提高.不僅和純Py曲。n相比是如此.即使對向量化的NumPy實現(xiàn)也有明顯優(yōu)勢。

內(nèi)存:使用Numba不需要初始化大型數(shù)組對象;編譯器專門為手上的問題生成機器代碼(和Numpy的 “通用 ” 函數(shù)相比)并維持和純Python相同的內(nèi)存效率。