最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Python 用幾何布朗運(yùn)動(dòng)模型和蒙特卡羅Monte Carlo隨機(jī)過程模擬股票價(jià)格可視化分析耐克

2022-07-03 10:32 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=27099?

原文出處:拓端數(shù)據(jù)部落公眾號(hào)

介紹

金融資產(chǎn)/證券已使用多種技術(shù)進(jìn)行建模。該項(xiàng)目的主要目標(biāo)是使用幾何布朗運(yùn)動(dòng)模型和蒙特卡羅模擬來模擬股票價(jià)格。該模型基于受乘性噪聲影響的隨機(jī)(與確定性相反)變量。

該項(xiàng)目分兩部分完成:

  1. 第一部分涉及為幾何布朗運(yùn)動(dòng)編寫代碼,并檢查和驗(yàn)證它是否工作。這是使用 Python 中的幾個(gè)函數(shù)完成的,并使用迭代設(shè)置將后續(xù)股票價(jià)格建模為馬爾可夫鏈,給定初始起始價(jià)格 S0。驗(yàn)證過程包括運(yùn)行多個(gè)模擬或隨機(jī)游走樣本,然后檢查結(jié)果分布,以查看股票價(jià)格、收益和波動(dòng)性是否滿足某些屬性和假設(shè)。

  2. 第二階段涉及探索,將模型實(shí)際應(yīng)用于實(shí)際股票價(jià)格,并使用耐克股票的真實(shí)股票數(shù)據(jù)進(jìn)行回測。模擬是通過獲取收益率 μ 和波動(dòng)率 σ 的樣本值并觀察股票價(jià)格演變的模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)之間的相關(guān)程度來完成的。

模擬需要大約 10-15 分鐘才能完全運(yùn)行。請注意,對模擬結(jié)果的所有解釋都是通過解釋價(jià)格水平和收益率的結(jié)果分布的均值和方差等參數(shù)來完成的。

假設(shè)

此項(xiàng)目中使用了以下變量和符號(hào)列表:

  1. S0 - 初始股票價(jià)格

  2. St - 時(shí)間的股票價(jià)格,t

  3. μ - 在特定時(shí)間段內(nèi)平均的股票收益(漂移)率

  4. σ - 在特定時(shí)間段內(nèi)平均的股票波動(dòng)率(標(biāo)準(zhǔn)差)

  5. dt - 模擬的時(shí)間步長,對應(yīng)于一天內(nèi)股票價(jià)格采樣的頻率

  6. N - 模擬的總天數(shù)。

  7. r - 無風(fēng)險(xiǎn)利率,任何人都可以借/貸

還對股票市場/價(jià)格做出了以下假設(shè)。雖然這些假設(shè)確實(shí)有助于大大簡化模型,但它們非?,F(xiàn)實(shí),有助于在理想情況下制定模型。

  1. 股票價(jià)格遵循馬爾科夫過程,即是無記憶的,隨后的股票價(jià)格僅取決于當(dāng)前價(jià)值,而不取決于任何先前的價(jià)值。

  2. 與 N 相比,考慮的時(shí)間步長 dt 較短,即 Ndt>>1

  3. 市場完整高效,不存在套利機(jī)會(huì)。

  4. 沒有股息、交易成本或稅收考慮。

維納過程和幾何布朗運(yùn)動(dòng)

維納過程(也稱為布朗運(yùn)動(dòng))是一個(gè)具有連續(xù)變量和連續(xù)時(shí)間的馬爾可夫過程。對于隨機(jī)變量 z,它有兩個(gè)重要的性質(zhì):

  1. 所有的 Δz 都是統(tǒng)計(jì)獨(dú)立的。

  2. dz = εdt

其中 ? 來自正態(tài)分布

通過將漂移項(xiàng) a(x,t)dt 添加到隨機(jī)過程 dz 上,可以將維納過程進(jìn)一步推廣到 Ito 過程。?

對于股票價(jià)格,上述方程是 Ito 過程,也稱為幾何布朗運(yùn)動(dòng),描述了隨時(shí)間的隨機(jī)變化。請注意,μ 和 σ 分別是瞬時(shí)漂移和標(biāo)準(zhǔn)偏差率。S 遵循一個(gè)受乘性噪聲影響的隨機(jī)過程。這里還需要注意的是,幾何布朗運(yùn)動(dòng)模型避免了負(fù)股票價(jià)格的問題。

為股票價(jià)格的解決方案建模

上述隨機(jī)微分方程 (SDE) 具有以下形式的解析解:

請注意,在上述等式中,常數(shù) μ 和 σ 分別對應(yīng)于股票價(jià)格的百分比漂移(收益)和百分比波動(dòng)(標(biāo)準(zhǔn)差)率。Wt 指的是由 dz=?dt 給出的維納過程,如上所述。該解方程用于以下列方式迭代計(jì)算每個(gè)時(shí)間步的 St:

這里,t 是計(jì)算的時(shí)間步長,每個(gè) St 僅取決于之前的起始價(jià)格 St?1,這是布朗運(yùn)動(dòng)模型所要求的,因?yàn)樗且粋€(gè)馬爾可夫過程。請注意,通過選擇一個(gè)小的時(shí)間步長,我們可以接近連續(xù)時(shí)間的極限。

因此,給定某個(gè)時(shí)間步長,隨后的每個(gè)股票價(jià)格 St 完全由三個(gè)參數(shù)描述:

  1. 初始“開始”價(jià)格,St?1

  2. 百分比收益(漂移)率,μ

  3. 波動(dòng)率或標(biāo)準(zhǔn)偏差率,σ

下面的代碼實(shí)現(xiàn)了上面描述的迭代過程。時(shí)間步長由 dt 給出,對應(yīng)于對股票價(jià)格進(jìn)行采樣的頻率,N 是模擬運(yùn)行的總天數(shù)。

  1. #幾何布朗運(yùn)動(dòng)模型


  2. #使用mu=收益率

  3. #sigma=波動(dòng)率

  4. #dt=時(shí)間步長

  5. #Si=每個(gè)時(shí)間段的初始(開始)價(jià)格值




  6. #價(jià)格和收益的時(shí)間演變

  7. #使用布朗運(yùn)動(dòng)模型來生成N天(時(shí)間段)的價(jià)格列表

  8. def gices(mu, sigma, dt, Si, N):

  9. pirr = np.zeros(N) #初始化一個(gè)長度為N的向量來存儲(chǔ)價(jià)格值

  10. pr_r[0] = Si #存儲(chǔ)第一個(gè)價(jià)格值


  11. retrr = np.zeros(N) #初始化向量來存儲(chǔ)返回值


  12. #還可以計(jì)算連續(xù)N之間的價(jià)格回報(bào)率

  13. for i in range (1,N):

  14. #注意price[i-1]是每次迭代的Si

  15. pr_arr[i] = geoeti_bown(mu, sigma, dt, price_arr[i-1])


運(yùn)行單個(gè)模擬/步行

這部分代碼只是調(diào)用上面編寫的函數(shù)并繪制結(jié)果。給出了收益率和波動(dòng)率、起始價(jià)格和時(shí)間步長的樣本值。以下數(shù)字按出現(xiàn)順序顯示:

  1. 股票價(jià)格的演變,St 作為 N 的函數(shù)

  2. 股票價(jià)格水平的分布,繪制為直方圖。

  3. 收益和對數(shù)收益的分布,也繪制為直方圖。

在隨后的部分中進(jìn)行了多次模擬,以實(shí)際驗(yàn)證模型的正確性。

  1. #運(yùn)行單個(gè)模擬以檢查功能

  2. #使用 mu、sigma 和 Si 的樣本值進(jìn)行測試


  3. #調(diào)用函數(shù)

  4. Slst, RitRlolist = gpes(mu, sigma, dt, Si, N)


  5. #繪制結(jié)果

  6. plt.figure(figsize=(15,5))

?

  1. #用于獲取mu_multiple和sigma_multiple

  2. #將價(jià)格數(shù)組作為輸入并返回 mu 和 sigma

  3. def v_tun(price_array):

  4. mu_single = 0

  5. sgm_sigle = 0


  6. #計(jì)算模擬的平均收益率,mu和平均波動(dòng)率,sigma

  7. musigle = np.mean(mu_temp)

  8. sigmsile = np.std(mu_temp)




  9. #Monte Carlo 模擬幾何布朗運(yùn)動(dòng)演化

  10. #運(yùn)行幾個(gè)模擬來生成幾個(gè)可能的價(jià)格演變數(shù)組

  11. #用它來計(jì)算平均波動(dòng)率和回報(bào)率

  12. def gmlie(mu, sigma, dt, Si, N, sim_count):

  13. cacies = np.zeros(shape=(N,sim_count)) #創(chuàng)建一個(gè)數(shù)組來存儲(chǔ)模擬值

  14. #對于 alc_res 數(shù)組,我們只關(guān)心值

  15. #創(chuàng)建數(shù)組來存儲(chǔ)每個(gè)的mu和sigma的值

  16. m_mutple = np.zeros(sim_count)

  17. sigmmiple = np.zeros(sim_count)


  18. vl = np.linspace(0,N-1,N)

  19. #運(yùn)行模擬并繪制每個(gè)價(jià)格演變的結(jié)果

  20. plt.figure(figsize=(20,20))

檢查和測試多個(gè)模擬的代碼

上面的代碼包含一個(gè)函數(shù),可以為幾何布朗運(yùn)動(dòng)描述的隨機(jī)游走運(yùn)行多個(gè)模擬。還編寫了另一個(gè)計(jì)算給定輸入數(shù)組的平均收益和波動(dòng)率水平的函數(shù)。這兩個(gè)函數(shù)都用于生成幾個(gè)模擬/隨機(jī)游走,如上圖所示。

上圖顯示了在相同起始價(jià)格、S0=100 和收益率和波動(dòng)率、μ=0.2 和 σ=0.07 下運(yùn)行的 500 次模擬圖。使用的時(shí)間步長為 dt=0.01,表示每天對股票價(jià)格進(jìn)行頻繁抽樣。每條線代表使用前面描述的幾何布朗運(yùn)動(dòng)模型建模的樣本隨機(jī)游走。然后通過繪制股票價(jià)格、收益和標(biāo)準(zhǔn)差的分布來分析使用這些模擬生成的數(shù)據(jù)。然后分析這些價(jià)格水平、收益和波動(dòng)率的分布,以檢查其正確性和一致性。

從下面的第一張圖中可以看出,價(jià)格水平遵循近似對數(shù)正態(tài)分布。這實(shí)際上是一個(gè)預(yù)期的結(jié)果。解,St 是一個(gè)對數(shù)正態(tài)分布的隨機(jī)變量,其期望值和方差由下式給出:

從下面的第一幅圖中可以看出,對于 sim_count = 500 次模擬,價(jià)格水平確實(shí)近似于對數(shù)正態(tài)分布,平均值約為 200。使用 tats.lmfit 函數(shù)測量的均值和方差也與以上定義的值在合理的誤差范圍內(nèi)。對于使用上面給出的參數(shù)的模擬運(yùn)行,它們被計(jì)算為:

下面的第二張圖顯示了上面運(yùn)行的模擬的收益率分布??梢院苋菀椎赜^察到,收益呈正態(tài)分布,平均值約為 0.15,這是模擬中 μ 的輸入值。這種收益率的正態(tài)分布也是布朗運(yùn)動(dòng)模型的預(yù)期結(jié)果。下面的第三張圖顯示了標(biāo)準(zhǔn)偏差率的分布,也可以觀察到其呈正態(tài)分布,平均值約為 0.07,這是模擬的 σ 輸入值。

因此,上述討論驗(yàn)證了幾何布朗運(yùn)動(dòng)編碼模型確實(shí)按預(yù)期工作,并生成與模型的屬性和假設(shè)相對應(yīng)的結(jié)果。自相似性也被證明適用于模型,其中不同的時(shí)間步長 dt 與調(diào)整后的 μ 和 σ 一起使用,以產(chǎn)生相似的價(jià)格水平和收益分布。這是模型的另一個(gè)預(yù)期結(jié)果,因?yàn)椴祭蔬\(yùn)動(dòng)在不同尺度上表現(xiàn)出分形行為。

  1. #繪制價(jià)格水平和收益的分布以檢查代碼的有效性

  2. #價(jià)格水平應(yīng)根據(jù)幾何布朗運(yùn)動(dòng)模型呈對數(shù)正態(tài)分布

  3. #Retu ate 和 Vlatiiy 應(yīng)該是正態(tài)分布的


  4. #Plot 價(jià)格水平

  5. plt.figure(figsize=(15,5))

  6. #與下面給出的均值和標(biāo)準(zhǔn)差的對數(shù)正態(tài)分布進(jìn)行比較

  7. logorman = Si*np.exp(mu*N*dt)

  8. logmvar = (Si**2)*np.exp(2*mu*N*dt)*(np.exp((sigma**2)*N*dt)-1)


  9. plt.plot(bns,lonm_dst,"g",lw=5) #繪制預(yù)期的對數(shù)正態(tài)密度分布


  10. #繪制收益和波動(dòng)率分布

  11. plt.figure(figsize=(15,5))

  1. print(lono_ean)

  2. print(np.sqrt(loomvr))

探索:使用真實(shí)股票數(shù)據(jù)測試模型

一旦模型被檢查為正常工作,它就會(huì)用真實(shí)的庫存數(shù)據(jù)進(jìn)行測試。耐克 (NKE) 2013-2015 年的股價(jià)被用來回測該模型。并且使用上述幾何布朗運(yùn)動(dòng)模型運(yùn)行 Monte Carlo 模擬。

以下值用于在兩年期間使用 NKE 的真實(shí)數(shù)據(jù)測試代碼。假設(shè)一年大約有 250 個(gè)工作日,N = 500 表示大約兩年的時(shí)間框架。通過將數(shù)據(jù)導(dǎo)入單獨(dú)的 .csv 文件并對股票價(jià)格的收益率和標(biāo)準(zhǔn)差進(jìn)行所需的計(jì)算來計(jì)算收益率和波動(dòng)率。

  1. 截至 2013 年 1 月 2 日,起始價(jià)格 S0 為 52.4。兩年期末的預(yù)期價(jià)格 St 預(yù)計(jì)在 98.6 左右。

  2. 兩年年化收益率為 μ=0.13,這是使用雅虎財(cái)經(jīng)歷史記錄生成的價(jià)格列表計(jì)算得出的。

  3. 兩年年化波動(dòng)率也從價(jià)格中獲得,σ=0.05。

以下代碼調(diào)用函數(shù)以通過幾何布朗運(yùn)動(dòng)模型生成隨機(jī)游走。

  1. #使用這些價(jià)格計(jì)算回報(bào)率和波動(dòng)率。

  2. pprint(k.geical('2013-01-01', '2015-01-01'))

  1. #使用輸入?yún)?shù)的樣本值運(yùn)行多個(gè)模擬


  2. dt = 0.01

  3. sim_count = 500


  4. #調(diào)用函數(shù)并運(yùn)行模擬

  5. prie, mu_arr, sigrr = geiple(mu, sgma, dt, Si, N, icont)

  6. 在 [29] 中:


  7. lorm_ean = Si*np.exp(mu*N*dt)

解釋模擬結(jié)果

從上圖中生成的隨機(jī)游走可以看出,我們在這里使用的模型乍一看似乎產(chǎn)生了正確方向和近似幅度的價(jià)格演變。由于它是一個(gè)隨機(jī)游走模型,重要的是要注意,結(jié)果只能解釋為價(jià)格水平或整體收益分布,而不是單個(gè)模擬。下面的代碼和數(shù)字為價(jià)格水平和收益率和波動(dòng)率生成所需的分布圖。

首先需要注意的是,使用等式 E[St]=S0e(μN(yùn)t) 的對數(shù)正態(tài)分布價(jià)格水平的計(jì)算平均值為 100.374。這位于真實(shí)值 98.6 的 5% 誤差范圍內(nèi),是使用 500 次模擬生成的。

其次,可以看出幾何布朗運(yùn)動(dòng)的所有性質(zhì)都得到滿足——價(jià)格水平服從對數(shù)正態(tài)分布,收益率和波動(dòng)率正態(tài)分布,均值對應(yīng)于輸入?yún)?shù)值。

請注意,模擬還針對其他時(shí)間范圍和不同的股票價(jià)格運(yùn)行,平均而言,該模型顯示的值在圣路易斯真實(shí)價(jià)值的 10% 以內(nèi)。

  1. #繪制價(jià)格水平的分布并返回以檢查真實(shí)數(shù)據(jù)的代碼

  2. #價(jià)格水平應(yīng)根據(jù)幾何布朗運(yùn)動(dòng)模型呈對數(shù)正態(tài)分布

  3. #Return Rate 和 Volatility 應(yīng)該是正態(tài)分布的


  4. #Plot 價(jià)格水平


  5. plt.hist(prestiple,bins=100,normed=1,label="R")


  6. #與下面給出的均值和標(biāo)準(zhǔn)差的對數(shù)正態(tài)分布進(jìn)行比較

  7. lognorm_mean = Si*np.exp(mu*N*dt)

  8. lognorm_var = (Si**2)*np.exp(2*mu*N*dt)*(np.exp((sigma**2)*N*dt)-1)


  9. #繪制預(yù)期的對數(shù)正態(tài)密度分布


  10. #繪制收益和波動(dòng)率分布

  11. plt.hist(mu_arr,bins=100,normed=1,label="R")

評(píng)論和結(jié)論

從生成的模擬結(jié)果可以看出,幾何布朗運(yùn)動(dòng)模型可以很好地使用上面討論的隨機(jī)過程來模擬股票價(jià)格。該模型首先被檢查以滿足幾何布朗運(yùn)動(dòng)的特性,然后用真實(shí)的股票價(jià)格數(shù)據(jù)進(jìn)行回測。NKE 2013-2015 年的股票價(jià)格用于計(jì)算 μ 和 σ 的值,然后用于運(yùn)行該期間的模擬。股票價(jià)格的模擬結(jié)果和真實(shí)價(jià)值在 5% 的誤差范圍內(nèi)相似。

最受歡迎的見解

1.R語言對S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略

2.R語言改進(jìn)的股票配對交易策略分析SPY—TLT組合和中國股市投資組合

3.R語言時(shí)間序列:ARIMA GARCH模型的交易策略在外匯市場預(yù)測應(yīng)用

4.TMA三均線期指高頻交易策略的R語言實(shí)現(xiàn)

5.r語言多均線量化策略回測比較

6.用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例

7.r語言預(yù)測波動(dòng)率的實(shí)現(xiàn):ARCH模型與HAR-RV模型

8.R語言如何做馬爾科夫轉(zhuǎn)換模型markov switching model

9.matlab使用Copula仿真優(yōu)化市場風(fēng)險(xiǎn)


Python 用幾何布朗運(yùn)動(dòng)模型和蒙特卡羅Monte Carlo隨機(jī)過程模擬股票價(jià)格可視化分析耐克的評(píng)論 (共 條)

分享到微博請遵守國家法律
揭阳市| 抚顺市| 北票市| 保亭| 略阳县| 拉萨市| 乐山市| 蒙阴县| 梨树县| 延边| 德格县| 福建省| 阿拉善左旗| 腾冲县| 通化市| 凤凰县| 颍上县| 通道| 开平市| 丽水市| 岳西县| 图们市| 班玛县| 威海市| 板桥市| 荣成市| 平江县| 临西县| 津市市| 四子王旗| 和平县| 乌海市| 敦煌市| 婺源县| 托里县| 长宁区| 关岭| 九江县| 云林县| 佛冈县| 台中县|