Python金融應(yīng)用編程:衍生品定價(jià)和套期保值的隨機(jī)過程|附代碼數(shù)據(jù)
全文鏈接:http://tecdat.cn/?p=5620
最近我們被客戶要求撰寫關(guān)于金融應(yīng)用編程的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
在本文中隨機(jī)過程對定量融資的許多方面都很有用,包括但不限于衍生品定價(jià),風(fēng)險(xiǎn)管理和投資管理
這些應(yīng)用程序?qū)⒃诒疚暮竺孢M(jìn)一步詳細(xì)討論。本節(jié)介紹了量化融資中使用的一些流行的隨機(jī)過程及其在Python中的實(shí)現(xiàn)。
模型參數(shù)
模型參數(shù)類包含以下隨機(jī)過程使用的所有參數(shù)。為了便于理解,這些參數(shù)的前綴是它們所用的隨機(jī)過程的名稱。隨機(jī)過程的校準(zhǔn)將涉及尋找與某些歷史數(shù)據(jù)相符的參數(shù)值。
繪制結(jié)果圖
下面的代碼使用Matplotlib來繪制一組隨機(jī)過程。
布朗運(yùn)動隨機(jī)過程
布朗運(yùn)動?是由懸浮在氣體或液體中的顆粒表現(xiàn)出的隨機(jī)運(yùn)動。這種隨機(jī)運(yùn)動是由顆粒與液體或氣體中的原子或分子碰撞引起的。布朗運(yùn)動以植物學(xué)家羅伯特·布朗的名字命名,他觀察了1827年的隨機(jī)運(yùn)動。?
在實(shí)踐中,布朗運(yùn)動不用于模擬資產(chǎn)價(jià)格。我將其包含在內(nèi),因?yàn)樗潜疚闹杏懻摰拿總€(gè)其他隨機(jī)過程的基礎(chǔ)。
def?plot_stochastic_processes(processes,?title):????"""此方法繪制具有指定標(biāo)題的隨機(jī)過程列表?????:return:繪制兩個(gè)圖????"""????plt.style.use(['bmh'])????fig,?ax?=?plt.subplots(1)????fig.suptitle(title,?fontsize=16)????ax.set_xlabel('Time,?t')????ax.set_ylabel('Simulated?Asset?Price')????x_axis?=?numpy.arange(0,?len(processes[0]),?1)????for?i?in?range(len(processes)):????????plt.plot(x_axis,?processes[i])????plt.show()
以下是此方法生成的輸出示例。
def?brownian_motion_log_returns(param):?????sqrt_delta_sigma?=?math.sqrt(param.all_delta)?*?param.all_sigma????return?nrand.normal(loc=0,?scale=sqrt_delta_sigma,?size=param.all_time)def?brownian_motion_levels(param):???????return?convert_to_prices(param,?brownian_motion_log_returns(param))
使用布朗運(yùn)動隨機(jī)過程模擬資產(chǎn)價(jià)格:5條路徑
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
Matlab馬爾可夫鏈蒙特卡羅法(MCMC)估計(jì)隨機(jī)波動率(SV,Stochastic Volatility) 模型
左右滑動查看更多
01
02
03
04
使用布朗運(yùn)動隨機(jī)過程模擬資產(chǎn)價(jià)格:500條路徑
幾何布朗運(yùn)動隨機(jī)過程
幾何布朗運(yùn)動(GBM)由費(fèi)舍爾布萊克和邁倫斯科爾斯推廣,他們在1973年的論文“期權(quán)定價(jià)和公司負(fù)債”中使用它來推導(dǎo)出Black Scholes方程。幾何布朗運(yùn)動基本上是布朗運(yùn)動,具有漂移分量和波動率分量。公式如下
其中是資產(chǎn)價(jià)格S在時(shí)間t的變化?;?μ是每年預(yù)期的百分比漂移,dt代表時(shí)間,σ是資產(chǎn)價(jià)格中預(yù)期的每日波動率,Wt是Wiener過程,也稱為布朗運(yùn)動。如下所示,布朗運(yùn)動代碼用于幾何布朗運(yùn)動方法以構(gòu)造Wt的序列。
以下是此方法生成的輸出示例。請注意,平均而言,生成的路徑隨著時(shí)間的推移而向上漂移,并且可能的收盤價(jià)格變化較大。在這個(gè)例子中,路徑以每年14%的平均速率增長,因此預(yù)期收益率等于14%,分別為三年和一年(800天)。
使用幾何布朗運(yùn)動隨機(jī)過程模擬資產(chǎn)價(jià)格。
Merton跳躍擴(kuò)散隨機(jī)過程
Robert C. Merton是最早解決Fisher Black和Myron Scholes提出的幾何布朗隨機(jī)過程中一些局限性的學(xué)者之一。1997年,默頓和斯科爾斯因其工作獲得了諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng)。
其中是具有速率泊松過程λ和?是對數(shù)正態(tài)分布的隨機(jī)變量。
請注意,由于跳躍擴(kuò)散過程引入了向下的不連續(xù)或跳躍,因此資產(chǎn)的平均預(yù)期收益率略低。
使用默頓跳躍擴(kuò)散幾何布朗運(yùn)動隨機(jī)過程模擬資產(chǎn)價(jià)格。
Heston隨機(jī)波動率過程
原始的幾何布朗運(yùn)動隨機(jī)過程假設(shè)隨時(shí)間的波動是恒定的。在1990年代早期,Steven Heston放寬了這個(gè)假設(shè),并將幾何布朗運(yùn)動模型擴(kuò)展到包括隨機(jī)波動率。?
請注意,隨著時(shí)間的推移,資產(chǎn)價(jià)格會變得更加不穩(wěn)定,從而導(dǎo)致潛在資產(chǎn)價(jià)格在預(yù)測結(jié)束時(shí)飆升。出現(xiàn)這種現(xiàn)象是因?yàn)槲覍㈤L期平均波動率設(shè)定為遠(yuǎn)高于起始波動率的數(shù)字。
使用Heston隨機(jī)波動率幾何布朗運(yùn)動隨機(jī)過程模擬資產(chǎn)價(jià)格。
COX INGERSOLL ROSS隨機(jī)過程
在COX INGERSOLL ROSS(CIR)?隨機(jī)過程是用來描述一段時(shí)間的利率變化。
其中是Wiener過程,a是過程均值回復(fù)的速率(較大的數(shù)字導(dǎo)致更快的均值回復(fù)過程),b是長期平均利率,σ是過程的波動率。CIR隨機(jī)過程如下。?
利用Cox Ingersoll Ross均值回歸隨機(jī)過程模擬利率。
ORNSTEIN-UHLENBECK隨機(jī)過程
Ornstein Uhlenbeck過程以Leonard Ornstein和George Eugene Uhlenbeck命名。Ornstein Uhlenbeck隨機(jī)過程與CIR過程之間的區(qū)別在于CIR過程將隨機(jī)分量乘以前一個(gè)利率值的平方根。?
其中是Wiener過程,a是過程均值回復(fù)的速率(較大的數(shù)字導(dǎo)致更快的均值回復(fù)過程),b是長期平均利率,σ是過程的波動率。?
利用Ornstein Uhlenbeck均值回歸隨機(jī)過程模擬利率。
衍生品定價(jià)和套期保值的隨機(jī)過程
隨機(jī)過程在量化金融中的最大應(yīng)用是衍生品定價(jià)。
當(dāng)對衍生品進(jìn)行定價(jià)時(shí),大多數(shù)量子將使用兩種方法中的一種。要么為他們定價(jià)建立Black Scholes模型,要么他們將使用模擬方法來估計(jì)導(dǎo)數(shù)的值。這兩種技術(shù)都嚴(yán)重依賴于使用隨機(jī)過程來模擬底層證券。
===
衍生定價(jià)方法一?Black Schole
Black Scholes模型用于在一組假設(shè)下對特定類型的衍生品合約進(jìn)行定價(jià)。這些假設(shè)包括:(1)存在無風(fēng)險(xiǎn)利率,任何金額可以借入或借出,(2)基礎(chǔ)價(jià)格根據(jù)幾何布朗運(yùn)動隨機(jī)過程,(3)進(jìn)化基礎(chǔ)不支付股息,(4)市場上沒有套利機(jī)會,(5)市場交易成本為零,(6)可以買入或賣出任何數(shù)量。?
在這些假設(shè)下,可以導(dǎo)出著名的Black Scholes偏微分方程。?
Black Scholes公式以及各種形式期權(quán)定價(jià)公式的推導(dǎo),是過去三十年中衍生品交易所大量增長的主要原因。
導(dǎo)數(shù)定價(jià)?方法二 - 模擬方法
鑒于Black Scholes公式隱含的局限性和假設(shè),通常采用蒙特卡羅方法(模擬)來為更少的簡化假設(shè)。
這兩個(gè)選項(xiàng)在計(jì)算復(fù)雜性和時(shí)間之間進(jìn)行權(quán)衡。每次想要對導(dǎo)數(shù)進(jìn)行定價(jià)時(shí),使用模擬方法計(jì)算復(fù)雜度更高,但是為替代隨機(jī)過程推導(dǎo)Black Scholes偏微分方程的“等價(jià)”更加耗時(shí),然后仍然找到封閉形式的衍生品定價(jià)式。因此,大多使用模擬方法。
想要這樣做的原因如下圖所示。事實(shí)上,你如何選擇和校準(zhǔn)你的隨機(jī)過程將對期權(quán)的預(yù)期收益產(chǎn)生重大影響。
紅色橢圓形顯示市場跳躍的位置 。
===
使用衍生工具進(jìn)行套期保值
套期保值是風(fēng)險(xiǎn)管理戰(zhàn)略??蓪_風(fēng)險(xiǎn)包括股票風(fēng)險(xiǎn),利率風(fēng)險(xiǎn),貨幣風(fēng)險(xiǎn),信用風(fēng)險(xiǎn),波動風(fēng)險(xiǎn)和商品風(fēng)險(xiǎn)。套期保值是通過投資與投資組合中的基礎(chǔ)負(fù)相關(guān)的資產(chǎn)來完成的。最簡單的例子是在股票上買入看跌期權(quán)。當(dāng)股票表現(xiàn)不佳時(shí),看跌期權(quán)表現(xiàn)良好,而整體投資組合并沒有像沒有對沖時(shí)那樣糟糕。凈效應(yīng)是收益下降。
公司和基金將嘗試確定投資組合所面臨的風(fēng)險(xiǎn)因素并對沖這些風(fēng)險(xiǎn)因素。
除了我上面提到的問題之外,還有一些額外的“現(xiàn)實(shí)世界”問題。一個(gè)例子是一般成本和套期保值程序的復(fù)雜性(套期保值可能非常昂貴)。對于組織而言,問題在于,在出現(xiàn)不利損失的情況下,對沖風(fēng)險(xiǎn)或僅僅保留更多資本是否更合理。近年來,諸如Solvency II和Basel III等法規(guī)要求銀行,對沖基金和保險(xiǎn)公司預(yù)留更多資金來支持其投資組合。儲備通常保留在高流動性證券中,預(yù)期收益很低,如國庫券。
結(jié)論
隨機(jī)過程對于描述我們世界中的隨機(jī)過程非常有用。它們用于工程,遺傳學(xué),物理學(xué)和定量金融。數(shù)量使用隨機(jī)過程來預(yù)測市場可能的回報(bào)和利率隨時(shí)間的變化。隨機(jī)過程通常與蒙特卡羅方法結(jié)合使用。
非常感謝您閱讀本文,有任何問題請?jiān)谙旅媪粞裕?/h1>
點(diǎn)擊文末?“閱讀原文”
獲取全文完整代碼數(shù)據(jù)資料。
本文選自《Python金融應(yīng)用編程:衍生品定價(jià)和套期保值的隨機(jī)過程》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語言計(jì)算資本資產(chǎn)定價(jià)模型(CAPM)中的Beta值和可視化
R語言中進(jìn)行期權(quán)定價(jià)的Heston隨機(jī)波動率模型
R語言基于線性回歸的資本資產(chǎn)定價(jià)模型(CAPM)
R語言對巨災(zāi)風(fēng)險(xiǎn)下的再保險(xiǎn)合同定價(jià)研究案例:廣義線性模型和帕累托分布Pareto distributions分析
R語言Black Scholes和Cox-Ross-Rubinstein期權(quán)定價(jià)模型案例
R語言用多元ARMA,GARCH ,EWMA, ETS,隨機(jī)波動率SV模型對金融時(shí)間序列數(shù)據(jù)建模
R語言HAR和HEAVY模型分析高頻金融數(shù)據(jù)波動率
R語言ARMA-GARCH-COPULA模型和金融時(shí)間序列案例
R語言分析負(fù)利率下金融市場:負(fù)利率和年金價(jià)值的變化
使用R語言隨機(jī)波動模型SV處理時(shí)間序列中的隨機(jī)波動率
Python隨機(jī)波動率(SV)模型對標(biāo)普500指數(shù)時(shí)間序列波動性預(yù)測
R語言預(yù)測波動率的實(shí)現(xiàn):ARCH模型與HAR-RV模型
R語言時(shí)間序列GARCH模型分析股市波動率
R語言ARMA-EGARCH模型、集成預(yù)測算法對SPX實(shí)際波動率進(jìn)行預(yù)測