布朗運動
是否有用於估計幾何布朗運動參數的 python 程式碼?
我試圖找到 GBM 的參數,但找不到相同的 python 程式碼。
下面的程式碼從 Yahoo Finance 提取 AAPL 時間序列,計算均值/標準差並模擬 20 天長的 100 條路徑。
輸入:
import pandas as pd import numpy as np from numpy.random import normal # bring data ticker = 'AAPL' url = 'http://real-chart.finance.yahoo.com/table.csv?s=%s' % ticker data = pd.read_csv(url, index_col='Date', parse_dates=True) data.sort_index(inplace=True) r = np.log(data['Adj Close']).diff().as_matrix()[1:] # estimate parameters sigma = np.std(r) mu = np.mean(r) +0.5*sigma*sigma # simulate paths T = 20 # number of periods to simulate N = 100 # number of scenarios epsilon = normal(size=[T, N]) paths = data['Adj Close'][-1]*np.exp(np.cumsum(mu-0.5*sigma*sigma +sigma*epsilon, axis=0)) # output print 'data from %s to %s' % (data.index[0].date(), data.index[-1].date()) print '%d scenarios of %d periods' % (N, T) print paths[-1]
輸出:
data from 1980-12-12 to 2015-11-27 100 scenarios of 20 periods [ 110.05103396 115.22220256 102.15942834 137.8933195 128.98220659 123.78995167 119.78760965 111.55081804 101.28873804 150.01698323 118.17378031 129.26568517 116.89831894 120.14299291 100.92602175 129.08661341 126.11134726 131.05832164 105.40035237 148.56201625 117.6589326 135.80459977 116.3256132 118.11022374 138.24069944 130.23096841 121.44359248 93.36990366 120.40376295 113.86096665 112.79238568 104.29584358 154.99719687 133.25955192 108.20838712 120.11125973 104.21453197 112.78981396 108.77688605 118.40240356 156.99140878 130.91871886 111.0078855 139.71865207 145.2893878 135.05797455 122.57696229 93.85711338 148.3231574 105.5308185 98.42940505 106.28268823 99.49360753 118.41985903 152.10864408 100.48435239 96.49837802 124.98286066 112.95868168 134.59980791 132.01882861 109.43251849 151.64664262 116.37618346 112.04417492 119.18353134 120.73513746 96.41828595 107.16867675 121.18435982 90.45490766 110.88758748 126.11216937 106.48179123 147.52005583 121.25689013 118.6405851 103.84301241 120.88770293 110.99499809 119.6822996 112.84273236 131.80224893 124.77742484 135.99716652 141.02784531 117.44045644 110.02261302 128.75145159 115.82045737 129.60995183 115.7623887 133.83373679 116.89180599 103.1893998 138.25279665 106.56185885 138.59835512 101.29356076 152.75506114]
如果要在物理測量中使用 GBM,則只需計算對數返回的標準差即可得到 $ \sigma $ . 為了 $ \mu $ 有很多選擇。
如果您想校準 GBM 以獲得期權價格,那麼您需要隱含波動率並且有一個包。
OP 說他/她想模擬路徑。如果您不想為衍生品定價,那麼您可以使用“現實世界”衡量標準。
然後 $ \sigma $ 可以如前所述估計。 $ \mu $ 很難假設(對於未來)。如果您查看有關動量策略的文獻,那麼其中一些將過去 3 到 6 個月的預期預測為未來 3 到 6 個月。我這樣說是因為有一個典型的事實,即贏家往往會贏,輸家往往會輸。