熱線電話:13121318867

登錄
首頁精彩閱讀Python金融大數據分析-蒙特卡洛仿真
Python金融大數據分析-蒙特卡洛仿真
2017-12-12
收藏

Python金融大數據分析-蒙特卡洛仿真

1.簡單的例子

了解一點金融工程的對這個公式都不會太陌生,是用現在股價預測T時間股價的公式,其背后是股價符合幾何布朗運動,也就是大名鼎鼎的BSM期權定價模型的基礎。
我們假設現在一個股票的價值是100,那么兩年后是多少呢?
[python]view plaincopy

    import numpy as np  
    import pandas as pd  
    import matplotlib.pyplot as plt  
    S0 = 100  
    r = 0.05  
    sigma = 0.25  
    T = 2.0  
    I = 10000  
    ST1 = S0*np.exp((r - 0.5*sigma**2)*T+sigma*np.sqrt(T)*np.random.standard_normal(I))  
    plt.hist(ST1,bins = 50)  
    plt.xlabel('price')  
    plt.ylabel('ferquency')  

    運行的結果如下所示:

很明顯,是一個lognormal分布,因為這樣的假設下,價格符合lognormal分布,收益率符合正態分布。
2.簡單的蒙特卡洛路徑

上面是一步到位的,那么如果我們中間分很多個小時間段來仿真呢?可以知道,物理問題是一樣的,結果也不會有差異。
[python]view plaincopy

    import numpy as np  
    import pandas as pd  
    import matplotlib.pyplot as plt  
    import scipy.stats as scs  
    S0 = 100  
    r = 0.05  
    sigma = 0.25  
    T = 2.0  
    I = 10000  
    #ST1 = S0*np.exp((r - 0.5*sigma**2)*T+sigma*np.sqrt(T)*np.random.standard_normal(I))  
    #plt.hist(ST1,bins = 50)  
    #plt.xlabel('price')  
    #plt.ylabel('ferquency')  
      
    M = 50  
    dt = T/M  
    S = np.zeros((M + 1,I))  
    S[0] = S0  
    print S[0]  
    for t in range(1,M+1):  
        S[t] = S[t-1]*np.exp((r-0.5*sigma**2)*dt+sigma*np.sqrt(dt)*np.random.standard_normal(I))  
    plt.hist(S[-1],bins = 50)  
    plt.xlabel('price')  
    plt.ylabel('frequency')  
    plt.show()  
    plt.plot(S[:,:],lw = 1.5)  
    plt.xlabel('time')  
    plt.ylabel('price')  
    plt.show()  

我們不僅可以得到最終的分布,也可以知道價格路徑,而這一價格路徑,才是真正代表了蒙特卡洛的精髓。

如果我們繪制得路徑更加多一點,就是這樣的一個效果:

從側面看,其實就是一個lognormal分布。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢