(二十三)用几何布朗运动模拟股价走势
生活随笔
收集整理的這篇文章主要介紹了
(二十三)用几何布朗运动模拟股价走势
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
幾何布朗運動的定義與表達式
用幾何布朗運動模擬未來股價
??下面我們以華泰證券[601688]股票為例,根據其2016年-2019年的日收盤價數據得到收益率和波動率,模擬未來三年(2020年-2022年)的價格走勢,模擬路徑為100條,S0設定為2020年1月2日的收盤價,具體操作如下:
??第一步,導出該股票前4年的收盤價數據,生成對數收益率數據,計算年收益率和收益率序列的年波動率:
??第二步,生成需要模擬的參數,需要導入pandas模塊中的時間索引函數DatetimeIndex,其中freq='B’表示工作日,freq='D’表示日歷日。用此函數生成2020年1月2日到2022年12月31日且是工作日的時間數據組:
import numpy.random as npr date=pd.DatetimeIndex(start='2020-1-2',end='2022-12-31',freq='B') n=len(date);I=100#生成需要預測的維度,n天100次 dt=1/252#St和St-1之間的時間間隔 result=np.zeros((n,I)) result[0]=20.35#datareader可找到2020年1月2日的股價,作為S0 result Out[3]: array([[20.35, 20.35, 20.35, ..., 20.35, 20.35, 20.35],[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],...,[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],[ 0. , 0. , 0. , ..., 0. , 0. , 0. ]])??第三步,代入幾何布朗運動公式(3),生成未來股價的時間序列并可視化:
for t in range(1,n):e=npr.standard_normal(I)#生成100個服從正態分布的εresult[t]=result[t-1]*np.exp((miu-0.5*sigma**2)*dt+sigma*e*np.sqrt(dt)) result=pd.DataFrame(result,index=date) result.tail() Out[18]: 0 1 2 ... 97 98 99 2022-12-26 7.228284 50.589052 13.894615 ... 15.088003 26.878331 17.809976 2022-12-27 7.326814 50.246075 14.295553 ... 15.092543 26.331081 18.008560 2022-12-28 7.199398 49.766670 14.603153 ... 15.350998 27.281464 17.841967 2022-12-29 7.145956 49.649970 14.622990 ... 15.583868 28.576045 17.981660 2022-12-30 7.243188 50.790810 14.672076 ... 15.626152 27.511881 18.083931 [5 rows x 100 columns] import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] mpl.rcParams['axes.unicode_minus']=False plt.plot(result) plt.xlabel('日期') plt.ylabel('股價') plt.xticks(rotation=30)#調整橫坐標刻度值的角度 plt.title('2020年1月2日-2022年12月31日華泰證券股價模擬路徑') plt.grid()總結
以上是生活随笔為你收集整理的(二十三)用几何布朗运动模拟股价走势的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量生成奖状的简单程序
- 下一篇: A slightly scary sto