...

如何用蒙地卡羅模擬股價?

衍生性金融商品


上回我們使用最基本的亂數模擬器方法成功模擬出Mike Trout的上壘率,當抽取出來的亂數小於上壘率時,認定為上壘,而亂數大於上壘率時,則認定為出局,用簡單的大於和小於就可模擬出來的模型,股價模型就稍微複雜些了,基本款的股價路徑模型最少具有二種參數與機率分配假設,背後的數學推導與原理就請大家自行去看財務工程相關的書籍了,我們先列出一個股價過程的理論式如下:

有了最基本的理論公式後,首先,我們必須定義出參數,參數可以描述這個股票的特性,例如新興市場股票與成熟市場股票的報酬率與波動度都不一樣,電信與生技公司的股價也會相當不一樣,所以我們必須要利用過去的資料去推估參數的區間範圍。

mu = 0.1 #資產年化報酬率為10%
Std = 0.2 #資產年化波動率為20%
dt = 1/252. #模擬路徑為每天,每天經過252分之一年

 

 

第一步:先將理論式轉換為Python的計算語言,記得括號設對位置,再用相對應的科學計算函數帶入公式內

S1 = S0 * np.exp((mu - 0.5 *Std**2)*dt + Std*np.sqrt(dt)*np.random.standard_normal())

 

S1為明天的模擬股價,S0是今天的股價,透過不斷的疊代,將可以產生出一整條的股價路徑,我們把它包裝成function吧!

def Simulation_StockPrice(S0, mu, Std, dt):
    S1 = S0 * np.exp((mu - 0.5 *Std**2)*dt + Std*np.sqrt(dt)*np.random.standard_normal())
    return S1

 

基本的股價路徑模型就建立完成了,後續可以裡用for loop與list建立出一整條股價路徑啦,留給大家自行操作。