国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于指數(shù)平滑和WKNN 的金融時間序列相似性搜索

2019-11-22 08:22張喬夫何文明
現(xiàn)代計算機 2019年29期
關鍵詞:導數(shù)權重長度

張喬夫,何文明

(嶺南師范學院數(shù)學與統(tǒng)計學院,湛江524048)

0 引言

股票價格等金融時間序列受貨幣政策、公司盈利能力、突發(fā)事件和群體博弈心理等諸多因素影響,總體近似于隨機波動,部分時間又有顯著的羊群效應。挖掘金融時間序列相似性,可在量化交易中取得超額收益[1]。

簡單移動平均(Simple Moving Average,SMA)是等權重的,周期較短時所得序列不夠光滑。指數(shù)移動平均(Exponential Moving Average,EMA)通過對時間較遠的數(shù)據(jù)賦予較小的權重,對較近的樣本賦予較大的權重,從而在平滑原始時間序列的同時保留重要信息[2]。EMA 是 MACD(Moving Average Convergence Divergence)和TRIX(Triple Exponential Moving Average)等技術指標的基礎。MACD 相關交易策略已有較多成果[3],而TRIX 的研究相對較少。TRIX 連續(xù)使用三次EMA,因此比較光滑,便于求導(價格上漲速度)。

在計算序列相似性時,經(jīng)典的Euclid 距離難以處理平移誤差。動態(tài)時間彎曲(Dynamic Time Warping,DTW)容許時間軸上的輕微扭曲,已成功應用于:手勢識別[4]和語音識別[5]等領域。DTW 可以比較非等長序列,并轉化為動態(tài)規(guī)劃問題精確求解。原始算法存在兩個問題:畸變可能較大,搜索空間大導致處理大數(shù)據(jù)時速度較慢。使用Keogh 下界[6]可以限制搜索范圍并顯著提高運算速度,此方法是精確無損的。其他加速方法還有:分片線性逼近[7]、自適應分段逼近[8]、主成分分析[9]和小波變換[10]等。其主要思想是對數(shù)據(jù)進行某種擬合,犧牲少量精度,降低運算復雜度。

本文使用了導數(shù)動態(tài)時間彎曲(Derivative Dynamic Time Warping,DDTW)[7]和 加 權 動 態(tài) 時 間 彎 曲(Weighted Dynamic Time Warping,WDTW)[11]。距離中包含導數(shù)信息,近似于要求兩個序列的導數(shù)也比較接近,因此可以減輕彎曲路徑的畸變。時間較近的數(shù)據(jù)對預測影響更大,因此對時間加權也是一種正則化方法。

K 最近鄰(k-Nearest Neighbor,KNN)是模式識別中的一種經(jīng)典算法。某些情況下,距離加權KNN 優(yōu)于等權重的KNN[12]。

本文主要內容如下:

(1)使用三重指數(shù)平滑(TRIX 周期=10)對金融時間序列進行去噪。

(2)識別平滑后序列的高低點,計算上漲(下跌)周期長度。初步選出平均盈利較高的樣本,同時大幅壓縮樣本量。

(3)計算每個樣本與高盈利樣本之間的DTW 距離。距離較近時買入,TRIX 上漲周期結束時賣出。

(4)分別對原始序列和平滑序列計算零階到二階導數(shù),根據(jù)時間先后賦予不同權重。

(5)最后比較了平滑次數(shù)、KNN 權重和樣本長度對收益的影響。

1 算法實現(xiàn)

為了降低數(shù)據(jù)噪聲,首先給出EMA 和TRIX 算法,利用TRIX 識別漲跌周期。

金融時間序列中最常用的預處理方法是移動平均,但均線序列拐點較多,不利于識別周期。均線頻繁的變動方向,意味著價格沒有明顯的趨勢。此時無論做多還是做空,收益較小,甚至可能虧損。為便于機器自動識別周期,本文將使用TRIX 指標。

簡而言之,EMA 是加權平均一次,TRIX 是EMA三次再求導。文末的實驗結果將說明平滑次數(shù)越多,所得交易策略的平均收益越高。

算法1 EMA 算法

輸入:時間序列{xi},周期常數(shù)P。

輸出:指數(shù)平滑后的等長度序列{emai}。

for 0<=i

emai=nan;

emaP-1=mean(x0,…xP-1);

for i>=P

emai=a*xi+(1-a)*emai-1;

其中a=2/(P+1)。

前P-1 個EMA 值可以用簡單平均代替,此處和著名技術指標庫TA-Lib 的算法保持一致。TA-Lib 中也包含了TRIX 函數(shù),然而為了說明平滑次數(shù)的作用,本文也對TRIX 的中間狀態(tài)值進行了DTW 計算。

算法2 TRIX 算法

輸入:時間序列{xi},周期常數(shù)P。

輸出:3 個等 長 度的 平 滑 序列{ema0i},{ema1i},{ema2i}和1 個導數(shù)序列{trixi}。

{ema0i}=EMA({xi},P);

{ema1i}=EMA({ema0i},P);

{ema2i}=EMA({ema1i},P);

for i>3*P+1

trixi=ema2i/ema2i-1-1;

如前所述,我們將識別出TRIX 序列的拐點,僅在拐點處交易。這樣可以大幅減少判斷次數(shù),減輕后面DTW 的計算負擔。

算法3 TRIX 周期交易算法

輸入:時間序列{xi},周期常數(shù)P;

輸出:標記當前點是否屬于有效局部極值,是否滿足買入賣出條件,滿足條件時記錄收益率。

計算TRIX 序列{trixi};

if(trixi-1>trixi-2and trixi-1>trixi)

i-1 標記為局部高點high_loc;

if(trixi-1

i-1 標記為局部低點low_loc;

if(當前持股數(shù)量>0 and trixi

賣出,持股數(shù)量=0,計算本次交易盈虧;

if(當前持股數(shù)量=0 and i-1 是局部低點and 2

10 < high_loc- pre_low_loc and 10 < pre_low_locpre_high_loc)

買入,持股數(shù)量=1;

其中pre_low_loc 指{low_loc}序列中l(wèi)ow_loc=(i-1)之前的那一個低點;pre_high_loc 類似。

從幾何角度理解,高低點依次出現(xiàn):pre_high_loc

DTW 算法在各類文獻中已經(jīng)描述較多。相比標準流程,本文有三處簡化:

(1)只計算距離,不存儲彎曲路徑;

(2)限制最大彎曲,即max|i-j|<=round(0.1*數(shù)據(jù)長度);

(3)只計算兩個等長度序列的DTW 距離。

簡化會帶來一些誤差(非隨機),但量化交易對精度要求不高,允許少量誤判(中長期策略的勝率一般小于70%)。下文的模擬收益也可說明簡化的合理性。因為要在收盤前1 分鐘內調用幾萬次DTW 函數(shù),簡化后的運算速度才能滿足實戰(zhàn)要求。

算法4 Weighted Derivative 距離算法

輸入:時間序列{xi},{yj}。

輸出:任意兩點xi和yj的距離。

一階差分dx={0},二階差分d2x={0};

for i>=1

dxi=xi-xi-1;

for i>=1

d2xi=dxi-dxi-1;

一階差分dy 和二階差分d2y 類似可得;

weight(i,j)=1 or(i+j)or sqrt(i+j);

零階距離=weight(i,j)*|xi-yj|;

一階距離=weight(i,j)*sqrt(|xi-yj|2+|dxi-dyj|2);

二階距離=weight(i,j)* sqrt(|xi- yj|2+ |dxi- dyj|2+|d2xi-d2yj|2)。

權重函數(shù)要保證i 和j 互換之后不變,即weight(i,j)=weight(j,i)。通常距離越近的數(shù)據(jù),對當前交易決策的影響越大。故選用的權重函數(shù)是單調遞增的。

文末數(shù)值實驗將分別針對原始序列、一次EMA、二次EMA、三次EMA 和TRIX 總計5 種序列計算DTW 距離。為了方便并行處理,將時間序列填充為矩陣,每行代表一個序列,最后一列表示各行對應的買點。由于金融時間序列的特殊性,序列中的值必須可在交易之前觀察到。另設一個向量存儲每行對應的收益率。

定義距離之后,就可以計算與歷史上全體高收益樣本之間的相似性。每個樣本與多個參考樣本比較,產(chǎn)生多個距離,需要合成為單一評價指標。此處采用三種方法:中位數(shù)(Median)、收益率加權平均(WKNN)和最小值(1NN)。

算法5 加權KNN 算法

輸入:時間序列矩陣X,每行對應收益率earn,KNN 的K 值。

輸出:每行序列是否值得買入。

對時間上已發(fā)生序列的收益率進行排序,取最大的K 個樣本;

計算當前序列到這K 個樣本的DTW 距離;

每個高收益樣本的修正權重=min(max(1/earn,0),1);

當前序列的綜合打分=sumK(權重*到第k 個樣本的DTW 距離);

綜合打分小于20%分位值時,買入。

第k 個樣本的收益率越高且DTW 距離越小,相似度越高,權重應該越大,故收益率取倒數(shù)。

2 模擬交易結果

最近十年(2009-01-01 至2019-07-09)A 股每日收盤價數(shù)據(jù)總量約為620 萬股*天。使用算法3,得到交易樣本數(shù)18055,平均收益2.02%。盈虧比約為1.9,勝率僅為40%。較低的準確率從側面說明,在金融時間序列中使用動態(tài)時間彎曲時,采用有少量誤差的簡化是可以接受的。

由于運算速度限制,后續(xù)數(shù)值實驗均在此數(shù)據(jù)集上進行。為方便比較,KNN 中的K 統(tǒng)一等于10。

實驗結論一:指數(shù)平滑次數(shù)與平均收益率正相關。原因可能是越平滑,噪聲越小,DTW 的畸變越小。

令DTW 中時間權重weight(i,j)=1,不計算DTW的導數(shù),觀察序列長度=50。表中收益率均代表18055*20%=3611 個樣本。

表1 指數(shù)平滑次數(shù)與收益率關系

實驗結論二:時間序列長度在50 附近時,平均收益率最高。

取weight(i,j)=1,不計算DTW 的導數(shù)。由表1 可知,TRIX+WKNN 收益顯著高于其他情況。故表2 僅羅列了TRIX 的表現(xiàn)。

表2 時間序列長度與收益率關系

實驗結論三:權重等于1 的短序列與權重逐漸增加的長序列相比,平均收益率類似。因為權重函數(shù)(i+j)和sqrt(i+j)在序列開頭約等于零,這一部分數(shù)據(jù)作用較小。對于一般的DTW 算法,縮短序列長度可顯著加快運算速度。此結論比較符合直覺,故不再羅列相關數(shù)據(jù)。

實驗結論四:DTW 距離中增加導數(shù)對收益貢獻不大。原因可能在于:①TRIX 自身包含了導數(shù),②本文采用簡化的DTW,嚴格限制了max|i-j|

令觀察長度=50,只考慮TRIX 的DTW 距離,可得表3。

表3 求導次數(shù)與收益率關系

3 結語

本文組合了三重指數(shù)平滑、漲跌周期識別、動態(tài)時間彎曲和加權KNN 等幾種技巧,充分挖掘金融時間序列的歷史相似性,提高了平均收益率。

下一步可嘗試以下幾個改進方案:

(1)使用小波變換、卡爾曼濾波等代替三重指數(shù)平滑;

(2)跳過周期識別這一步,直接以歷史上全體高收益樣本作為模板來判斷是否買入,建立典型樣本庫;

(3)使用深度學習模擬動態(tài)時間彎曲,加快計算速度,同時挖掘更多隱含特征;

(4)金融時間序列具有多重分形特征,日線樣本與分鐘樣本具有相似性,進行跨時間尺度的距離計算;

(5)增加持倉量、成交量和概念板塊等指標,使用期貨和外匯等其他市場數(shù)據(jù)驗證。

猜你喜歡
導數(shù)權重長度
權重望寡:如何化解低地位領導的補償性辱虐管理行為?*
解導數(shù)題的幾種構造妙招
繩子的長度怎么算
權重常思“浮名輕”
為黨督政勤履職 代民行權重擔當
權重漲個股跌 持有白馬藍籌
愛的長度
關于導數(shù)解法
長度單位
導數(shù)在圓錐曲線中的應用