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