1. 程式人生 > >簡介量化金融中使用的時間序列模型(一)

簡介量化金融中使用的時間序列模型(一)


在計量經濟學領域中,我們主要研究三種資料,即橫截面資料、面板資料和時間序列資料。其中橫截面資料研究在一個給定的時間點上,不同觀測樣本的狀態,例如:2016年12月16日全國各個城市天氣質量AQI指數。面板資料指的是某些給定的樣本在給定的時間跨度內的觀測值。例如:2016年全國各個城市每日的天氣質量指數。而時間序列研究一個個體在一段時間跨度內的變化。其特點為,每個觀測值前後相關性很強,基本很難滿足簡單最小二乘法中隨機抽樣的假設。故時間序列資料有自己獨特的一套研究方法,常用模型包括均值模型,波動率模型,非平穩模型等。

Python中的statsmodels工具包中的tsa模組提供了時間序列的函式,包括ARMA,VAR等模型,方便我們使用。

在這部分中,我主要介紹移動平均和平穩性兩部分內容。

1. 移動平均(Moving average)

移動平均是用來刻畫一個時間序列在最近一段時間內的走勢的指標,其波動比原序列要小,平滑期數越長移動平均值越平緩。移動平均廣泛的應用在各種股票的技術分析指標中(即均線),長短期均線結合使用可作為資產走勢的判斷依據,例如MACD,DMA,CCI等。均線是對趨勢的確認,有滯後性。包括有簡單移動平均,指數移動平均等。

a) 簡單移動平均(Simple moving average):

M期簡單移動平均計算方法為

blob.png

其中A為原始序列,A-bar為平滑後的資料。

此處以滬深300為例,利用matplotlib畫出今年300指數的價格和十五日均線。

1 2 3 4 5 6 7 8 9 10 11 import matplotlib.pyplot as plt from pandas import DataFrame def macd(priceSer,n): return priceSer[-n:].mean() df=get_price('000300.SH',start_date='2016-01-01',end_date='2016-12-15',fields=['close']) MA=[] for in range(df.__len__()): MA.append(macd(df['close'][:i],15)) df['MA'
]=MA plt.plot(df) plt.show()

HS300MA15.png

可以看到,均線反映了滯後的走勢資訊。

b) 加權移動平均(Weighted moving average):

簡單移動平均相當於給滯後期內的資料同等權重,而加權移動平均則對滯後期內資料賦予不同的權重。往往會給較短滯後期的資料賦予更高的權重,因為事件發生過去的時間越近,對現在的情況的影響越大。加權移動平均的特例是指數移動平均(Exponential moving average。可用遞推表示式表示:blob.png

其等價於:

blob.png

在選擇移動平均滯後期和指數移動平均的係數a的時候,應根據原始資料的特徵判斷。若原始資料波動較大,則應選擇較長的滯後期,和較小的a;若原始資料較平穩,則應選擇較短的滯後期和較大的a。這樣可以獲得容易觀察到明顯趨勢的均線。

2. 平穩性(Stationary)

平穩性,簡單來講就是統計性質不隨時間改變的性質。它是時間序列分析中的一條重要假設。我們平常討論的平穩條件,指的是寬平穩條件,即隨機過程Xt的均值、方差均不隨時間t改變,且Xt與Xs的協方差只和t-s有關係。

為什麼時間序列分析要求輸入序列平穩呢?大數定律和中心極限定理是很多統計推斷的依據。而這兩個定理都要求樣本是隨機抽樣的。在時間序列中,這個要求就等價於上述平穩序列的條件。同時,非平穩的時間序列會導致偽迴歸的問題。所以說,平穩性是時間序列分析的前提。

我們仍然以滬深300指數今年的價格線為例。首先繪製價格線的折線圖,可以明顯發現價格帶有趨勢性,是非平穩的序列,不符合時間序列的基本假設。

完整閱讀:http://club.jr.jd.com/quant/topic/956213