金融時間序列分析:9. ARMA自回歸移動平均模型
金融時間序列分析:8. MA模型實(shí)例(Python)
金融時間序列分析:7. MA滑動平均模型
金融時間序列分析:6. AR模型實(shí)例
金融時間序列分析:5. AR模型實(shí)例(Python)
金融時間序列分析:4. AR自回歸模型
金融時間序列分析:3. First Demo By Python
金融時間序列分析:2. 數(shù)學(xué)分析模型
金融時間序列分析:1. 基礎(chǔ)知識
金融時間序列分析:1. 基礎(chǔ)知識
金融時間序列分析:2. 數(shù)學(xué)分析模型
前面2篇文章講了金融時間序列分析的基礎(chǔ)知識,本文簡單介紹下怎么實(shí)戰(zhàn)。
網(wǎng)上有很多用R語言進(jìn)行金融時間序列分析的資料,但是用Python的不多,我在此介紹下怎么用Python操作,至于R語言怎么弄,讀者隨便在網(wǎng)上查查就好了。
PS: 在時間序列分析領(lǐng)域R比Python簡單的多,如果單單是進(jìn)行分析的話R就夠了,但是要集成一個系統(tǒng)的話就得用Python。(個人之見)
本文只討論前3步,至于后面的再提到具體的模型的時候回在補(bǔ)上。
用Python進(jìn)行時間序列分析需要用到下面一些庫:
pandas,numpy,scipy,matplotlib,statsmodels
其中一些的基本使用參考下面的文章:
十分鐘搞定pandas
Numpy Tutor
Python應(yīng)用matplotlib繪圖簡介
有兩種方式:
(1)從網(wǎng)絡(luò)獲取
這個參考以前的文章:
Python獲取Yahoo股票數(shù)據(jù)
(2)從本地讀取
在金融時間序列中CSV文件格式是一種非常簡單的文件格式,最為常見的格式。
在Python中,Pandas中可以直接處理這種格式:
data = pd.read_csv('./Yahoo/000001.SS.csv', index_col='Date') print data.head() print data.dtypes
此時Date的類型還不是時間,需要轉(zhuǎn)化一下:
data.index = pd.to_datetime(data.index)
print "Select 2016:\n", data['2016'] print 'Select 2016-02:\n', data['2016-02'] print 'Select 2016-02-22:\n', data['2016-02-22'] print 'Select 2016-02-22 : 2016-01-07:\n', data['2016-02-22':'2016-02-07']
首先獲取收盤數(shù)據(jù),并將其翻轉(zhuǎn)下順序,因?yàn)榍懊娴臄?shù)據(jù)截圖可以看到,數(shù)據(jù)是逆序的,所以需要處理下。
ts = data['Close'] ts = ts[::-1]
計(jì)算日收益率:
ts_ret = np.diff(1)
對數(shù)收益率:
ts_log = np.log(ts) ts_diff = ts_log.diff(1) ts_diff.dropna(inplace=True)
def test_ts(ts, w, title='test_ts'): roll_mean = ts.rolling(window = w).mean() roll_std = ts.rolling(window = w).std() pd_ewma = pd.ewma(ts, span=w) plt.clf() plt.figure() plt.grid() plt.plot(ts, color='blue',label='Original') plt.plot(roll_mean, color='red', label='Rolling Mean') plt.plot(roll_std, color='black', label = 'Rolling Std') plt.plot(pd_ewma, color='yellow', label = 'EWMA') plt.legend(loc='best') plt.title('Rolling Mean & Standard Deviation') #plt.show() plt.savefig('./PDF/'+title+'.pdf', format='pdf')
test_ts(ts['2014-01-01':'2015-12-31'], 20, title='test_org')
test_ts(ts_log['2014-01-01':'2015-12-31'], int(adf_res['Lags Used']), title='test_log')
(1)簡單收益率
從上面顯示圖可以看出,無論簡單收益率還是對數(shù)收益率都具有尖峰厚尾現(xiàn)象。
平穩(wěn)性檢驗(yàn):觀察法和單位根檢驗(yàn)法
最簡單穩(wěn)定性檢驗(yàn)就是肉眼觀察下,只要沒有明顯趨勢,就好^_^!
觀察法,通俗的說就是通過觀察序列的趨勢圖與相關(guān)圖是否隨著時間的變化呈現(xiàn)出某種規(guī)律。所謂的規(guī)律就是時間序列經(jīng)常提到的周期性因素,現(xiàn)實(shí)中遇到得比較多的是線性周期成分,這類周期成分可以采用差分或者移動平均來解決,而對于非線性周期成分的處理相對比較復(fù)雜,需要采用某些分解的方法。下圖為航空數(shù)據(jù)的線性圖,可以明顯的看出它具有年周期成分和長期趨勢成分。
下面談?wù)剢挝桓鶛z驗(yàn)。。。
在時間序列分析中,通常采用ADF進(jìn)行穩(wěn)定性檢驗(yàn)。
下面的代碼是如何用python進(jìn)行ADF檢驗(yàn):
def adf_test(ts): adftest = adfuller(ts) adf_res = pd.Series(adftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used']) for key, value in adftest[4].items(): adf_res['Critical Value (%s)' % key] = value return adf_res
日收盤數(shù)據(jù)
檢驗(yàn)結(jié)果分析:
簡單收益率
對數(shù)收益率
本來不打算在這篇文章中解釋這快內(nèi)容,只有講了分析模型后才會這塊有大致的概念。
所以本文在此不會細(xì)談,之后有機(jī)會慢慢談。
簡單的理解就是找到時間序列的周期,比如說氣溫這一項(xiàng),就有明顯的年度周期性,前幾年的同期數(shù)據(jù)對預(yù)測當(dāng)年的氣溫有極大的參考意義。
從統(tǒng)計(jì)學(xué)上講就是尋找是得ACF(樣本自相關(guān)系數(shù))最大的時間間隔。
常用定階方法是ACF和PACF。
def draw_acf_pacf(ts, w): plt.clf() fig = plt.figure() ax1 = fig.add_subplot(211) plot_acf(ts, ax = ax1, lags=w) ax2 = fig.add_subplot(212) plot_pacf(ts, ax=ax2, lags=w) #plt.show() plt.savefig('./PDF/test_acf_pacf.pdf', format='pdf')
對數(shù)收益率ACF分析:
金融時間序列分析:9. ARMA自回歸移動平均模型
金融時間序列分析:8. MA模型實(shí)例(Python)
金融時間序列分析:7. MA滑動平均模型
金融時間序列分析:6. AR模型實(shí)例
金融時間序列分析:5. AR模型實(shí)例(Python)
金融時間序列分析:4. AR自回歸模型
金融時間序列分析:3. First Demo By Python
金融時間序列分析:2. 數(shù)學(xué)分析模型
金融時間序列分析:1. 基礎(chǔ)知識
金融時間序列分析:1. 基礎(chǔ)知識
金融時間序列分析:2. 數(shù)學(xué)分析模型
前面2篇文章講了金融時間序列分析的基礎(chǔ)知識,本文簡單介紹下怎么實(shí)戰(zhàn)。
網(wǎng)上有很多用R語言進(jìn)行金融時間序列分析的資料,但是用Python的不多,我在此介紹下怎么用Python操作,至于R語言怎么弄,讀者隨便在網(wǎng)上查查就好了。
PS: 在時間序列分析領(lǐng)域R比Python簡單的多,如果單單是進(jìn)行分析的話R就夠了,但是要集成一個系統(tǒng)的話就得用Python。(個人之見)
本文只討論前3步,至于后面的再提到具體的模型的時候回在補(bǔ)上。
用Python進(jìn)行時間序列分析需要用到下面一些庫:
pandas,numpy,scipy,matplotlib,statsmodels
其中一些的基本使用參考下面的文章:
十分鐘搞定pandas
Numpy Tutor
Python應(yīng)用matplotlib繪圖簡介
有兩種方式:
(1)從網(wǎng)絡(luò)獲取
這個參考以前的文章:
Python獲取Yahoo股票數(shù)據(jù)
(2)從本地讀取
在金融時間序列中CSV文件格式是一種非常簡單的文件格式,最為常見的格式。
在Python中,Pandas中可以直接處理這種格式:
data = pd.read_csv('./Yahoo/000001.SS.csv', index_col='Date') print data.head() print data.dtypes
此時Date的類型還不是時間,需要轉(zhuǎn)化一下:
data.index = pd.to_datetime(data.index)
print "Select 2016:\n", data['2016'] print 'Select 2016-02:\n', data['2016-02'] print 'Select 2016-02-22:\n', data['2016-02-22'] print 'Select 2016-02-22 : 2016-01-07:\n', data['2016-02-22':'2016-02-07']
首先獲取收盤數(shù)據(jù),并將其翻轉(zhuǎn)下順序,因?yàn)榍懊娴臄?shù)據(jù)截圖可以看到,數(shù)據(jù)是逆序的,所以需要處理下。
ts = data['Close'] ts = ts[::-1]
計(jì)算日收益率:
ts_ret = np.diff(1)
對數(shù)收益率:
ts_log = np.log(ts) ts_diff = ts_log.diff(1) ts_diff.dropna(inplace=True)
def test_ts(ts, w, title='test_ts'): roll_mean = ts.rolling(window = w).mean() roll_std = ts.rolling(window = w).std() pd_ewma = pd.ewma(ts, span=w) plt.clf() plt.figure() plt.grid() plt.plot(ts, color='blue',label='Original') plt.plot(roll_mean, color='red', label='Rolling Mean') plt.plot(roll_std, color='black', label = 'Rolling Std') plt.plot(pd_ewma, color='yellow', label = 'EWMA') plt.legend(loc='best') plt.title('Rolling Mean & Standard Deviation') #plt.show() plt.savefig('./PDF/'+title+'.pdf', format='pdf')
test_ts(ts['2014-01-01':'2015-12-31'], 20, title='test_org')
test_ts(ts_log['2014-01-01':'2015-12-31'], int(adf_res['Lags Used']), title='test_log')
(1)簡單收益率
從上面顯示圖可以看出,無論簡單收益率還是對數(shù)收益率都具有尖峰厚尾現(xiàn)象。
平穩(wěn)性檢驗(yàn):觀察法和單位根檢驗(yàn)法
最簡單穩(wěn)定性檢驗(yàn)就是肉眼觀察下,只要沒有明顯趨勢,就好^_^!
觀察法,通俗的說就是通過觀察序列的趨勢圖與相關(guān)圖是否隨著時間的變化呈現(xiàn)出某種規(guī)律。所謂的規(guī)律就是時間序列經(jīng)常提到的周期性因素,現(xiàn)實(shí)中遇到得比較多的是線性周期成分,這類周期成分可以采用差分或者移動平均來解決,而對于非線性周期成分的處理相對比較復(fù)雜,需要采用某些分解的方法。下圖為航空數(shù)據(jù)的線性圖,可以明顯的看出它具有年周期成分和長期趨勢成分。
下面談?wù)剢挝桓鶛z驗(yàn)。。。
在時間序列分析中,通常采用ADF進(jìn)行穩(wěn)定性檢驗(yàn)。
下面的代碼是如何用python進(jìn)行ADF檢驗(yàn):
def adf_test(ts): adftest = adfuller(ts) adf_res = pd.Series(adftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used']) for key, value in adftest[4].items(): adf_res['Critical Value (%s)' % key] = value return adf_res
日收盤數(shù)據(jù)
檢驗(yàn)結(jié)果分析:
簡單收益率
對數(shù)收益率
本來不打算在這篇文章中解釋這快內(nèi)容,只有講了分析模型后才會這塊有大致的概念。
所以本文在此不會細(xì)談,之后有機(jī)會慢慢談。
簡單的理解就是找到時間序列的周期,比如說氣溫這一項(xiàng),就有明顯的年度周期性,前幾年的同期數(shù)據(jù)對預(yù)測當(dāng)年的氣溫有極大的參考意義。
從統(tǒng)計(jì)學(xué)上講就是尋找是得ACF(樣本自相關(guān)系數(shù))最大的時間間隔。
常用定階方法是ACF和PACF。
def draw_acf_pacf(ts, w): plt.clf() fig = plt.figure() ax1 = fig.add_subplot(211) plot_acf(ts, ax = ax1, lags=w) ax2 = fig.add_subplot(212) plot_pacf(ts, ax=ax2, lags=w) #plt.show() plt.savefig('./PDF/test_acf_pacf.pdf', format='pdf')
對數(shù)收益率ACF分析:
金融時間序列分析:9. ARMA自回歸移動平均模型
金融時間序列分析:8. MA模型實(shí)例(Python)
金融時間序列分析:7. MA滑動平均模型
金融時間序列分析:6. AR模型實(shí)例
金融時間序列分析:5. AR模型實(shí)例(Python)
金融時間序列分析:4. AR自回歸模型
金融時間序列分析:3. First Demo By Python
金融時間序列分析:2. 數(shù)學(xué)分析模型
金融時間序列分析:1. 基礎(chǔ)知識
金融時間序列分析:1. 基礎(chǔ)知識
金融時間序列分析:2. 數(shù)學(xué)分析模型
前面2篇文章講了金融時間序列分析的基礎(chǔ)知識,本文簡單介紹下怎么實(shí)戰(zhàn)。
網(wǎng)上有很多用R語言進(jìn)行金融時間序列分析的資料,但是用Python的不多,我在此介紹下怎么用Python操作,至于R語言怎么弄,讀者隨便在網(wǎng)上查查就好了。
PS: 在時間序列分析領(lǐng)域R比Python簡單的多,如果單單是進(jìn)行分析的話R就夠了,但是要集成一個系統(tǒng)的話就得用Python。(個人之見)
本文只討論前3步,至于后面的再提到具體的模型的時候回在補(bǔ)上。
用Python進(jìn)行時間序列分析需要用到下面一些庫:
pandas,numpy,scipy,matplotlib,statsmodels
其中一些的基本使用參考下面的文章:
十分鐘搞定pandas
Numpy Tutor
Python應(yīng)用matplotlib繪圖簡介
有兩種方式:
(1)從網(wǎng)絡(luò)獲取
這個參考以前的文章:
Python獲取Yahoo股票數(shù)據(jù)
(2)從本地讀取
在金融時間序列中CSV文件格式是一種非常簡單的文件格式,最為常見的格式。
在Python中,Pandas中可以直接處理這種格式:
data = pd.read_csv('./Yahoo/000001.SS.csv', index_col='Date') print data.head() print data.dtypes
此時Date的類型還不是時間,需要轉(zhuǎn)化一下:
data.index = pd.to_datetime(data.index)
print "Select 2016:\n", data['2016'] print 'Select 2016-02:\n', data['2016-02'] print 'Select 2016-02-22:\n', data['2016-02-22'] print 'Select 2016-02-22 : 2016-01-07:\n', data['2016-02-22':'2016-02-07']
首先獲取收盤數(shù)據(jù),并將其翻轉(zhuǎn)下順序,因?yàn)榍懊娴臄?shù)據(jù)截圖可以看到,數(shù)據(jù)是逆序的,所以需要處理下。
ts = data['Close'] ts = ts[::-1]
計(jì)算日收益率:
ts_ret = np.diff(1)
對數(shù)收益率:
ts_log = np.log(ts) ts_diff = ts_log.diff(1) ts_diff.dropna(inplace=True)
def test_ts(ts, w, title='test_ts'): roll_mean = ts.rolling(window = w).mean() roll_std = ts.rolling(window = w).std() pd_ewma = pd.ewma(ts, span=w) plt.clf() plt.figure() plt.grid() plt.plot(ts, color='blue',label='Original') plt.plot(roll_mean, color='red', label='Rolling Mean') plt.plot(roll_std, color='black', label = 'Rolling Std') plt.plot(pd_ewma, color='yellow', label = 'EWMA') plt.legend(loc='best') plt.title('Rolling Mean & Standard Deviation') #plt.show() plt.savefig('./PDF/'+title+'.pdf', format='pdf')
test_ts(ts['2014-01-01':'2015-12-31'], 20, title='test_org')
test_ts(ts_log['2014-01-01':'2015-12-31'], int(adf_res['Lags Used']), title='test_log')
(1)簡單收益率
從上面顯示圖可以看出,無論簡單收益率還是對數(shù)收益率都具有尖峰厚尾現(xiàn)象。
平穩(wěn)性檢驗(yàn):觀察法和單位根檢驗(yàn)法
最簡單穩(wěn)定性檢驗(yàn)就是肉眼觀察下,只要沒有明顯趨勢,就好^_^!
觀察法,通俗的說就是通過觀察序列的趨勢圖與相關(guān)圖是否隨著時間的變化呈現(xiàn)出某種規(guī)律。所謂的規(guī)律就是時間序列經(jīng)常提到的周期性因素,現(xiàn)實(shí)中遇到得比較多的是線性周期成分,這類周期成分可以采用差分或者移動平均來解決,而對于非線性周期成分的處理相對比較復(fù)雜,需要采用某些分解的方法。下圖為航空數(shù)據(jù)的線性圖,可以明顯的看出它具有年周期成分和長期趨勢成分。
下面談?wù)剢挝桓鶛z驗(yàn)。。。
在時間序列分析中,通常采用ADF進(jìn)行穩(wěn)定性檢驗(yàn)。
下面的代碼是如何用python進(jìn)行ADF檢驗(yàn):
def adf_test(ts): adftest = adfuller(ts) adf_res = pd.Series(adftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used']) for key, value in adftest[4].items(): adf_res['Critical Value (%s)' % key] = value return adf_res
日收盤數(shù)據(jù)
檢驗(yàn)結(jié)果分析:
簡單收益率
對數(shù)收益率
本來不打算在這篇文章中解釋這快內(nèi)容,只有講了分析模型后才會這塊有大致的概念。
所以本文在此不會細(xì)談,之后有機(jī)會慢慢談。
簡單的理解就是找到時間序列的周期,比如說氣溫這一項(xiàng),就有明顯的年度周期性,前幾年的同期數(shù)據(jù)對預(yù)測當(dāng)年的氣溫有極大的參考意義。
從統(tǒng)計(jì)學(xué)上講就是尋找是得ACF(樣本自相關(guān)系數(shù))最大的時間間隔。
常用定階方法是ACF和PACF。
def draw_acf_pacf(ts, w): plt.clf() fig = plt.figure() ax1 = fig.add_subplot(211) plot_acf(ts, ax = ax1, lags=w) ax2 = fig.add_subplot(212) plot_pacf(ts, ax=ax2, lags=w) #plt.show() plt.savefig('./PDF/test_acf_pacf.pdf', format='pdf')
對數(shù)收益率ACF分析:
聯(lián)系客服