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

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

蒙特卡洛算法

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

Black-Scholes-Metron SDE

Black-Scholes-Metron SDE

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

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

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

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

估算期權(quán)價(jià)值

{u, d } 中隨機(jī)選取(

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

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

模型進(jìn)行參數(shù)化

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

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

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

2、內(nèi)在價(jià)值計(jì)算

計(jì)算到期日和每個(gè)時(shí)間步的內(nèi)在價(jià)值。

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

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

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

函數(shù)binomial_py中的形式

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

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

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

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

后臺( NumPy )

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

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

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

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