ccxt k线数据_机器学习系列:深度探秘K线结构新维度
標(biāo)星★公眾號(hào),第一時(shí)間獲取最新研究
來源:光大證券金工團(tuán)隊(duì)獨(dú)家授權(quán)
作者:胡驥聰
近期原創(chuàng)文章:
??基于無監(jiān)督學(xué)習(xí)的期權(quán)定價(jià)異常檢測(cè)(代碼+數(shù)據(jù))
??5種機(jī)器學(xué)習(xí)算法在預(yù)測(cè)股價(jià)的應(yīng)用(代碼+數(shù)據(jù))
??深入研讀:利用Twitter情緒去預(yù)測(cè)股市
??Two Sigma用新聞來預(yù)測(cè)股價(jià)走勢(shì),帶你吊打Kaggle
??利用深度學(xué)習(xí)最新前沿預(yù)測(cè)股價(jià)走勢(shì)
??一位數(shù)據(jù)科學(xué)PhD眼中的算法交易
??基于RNN和LSTM的股市預(yù)測(cè)方法
??人工智能『AI』應(yīng)用算法交易,7個(gè)必踩的坑!
??神經(jīng)網(wǎng)絡(luò)在算法交易上的應(yīng)用系列(一)
??預(yù)測(cè)股市 | 如何避免p-Hacking,為什么你要看漲?
??如何鑒別那些用深度學(xué)習(xí)預(yù)測(cè)股價(jià)的花哨模型?
??優(yōu)化強(qiáng)化學(xué)習(xí)Q-learning算法進(jìn)行股市交易
??搭建入門級(jí)高頻交易系統(tǒng)(架構(gòu)細(xì)節(jié)分享)
前言
在金融投資領(lǐng)域下運(yùn)用機(jī)器學(xué)習(xí)并非易事,許多在看似直觀的應(yīng)用方式下直接套用機(jī)器學(xué)習(xí)算法的做法往往并不能達(dá)到預(yù)期的效果。在光大金工機(jī)器學(xué)習(xí)系列第一篇報(bào)告中我們提出“機(jī)器學(xué)習(xí)能否在金融投資取得成功,更取決于算法之外的細(xì)節(jié)處理”的理念。本篇報(bào)告延續(xù)上述思路,探索在運(yùn)用機(jī)器學(xué)習(xí)算法之前,如何更好地處理交易數(shù)據(jù)的K線結(jié)構(gòu)。
數(shù)據(jù)結(jié)構(gòu)特征對(duì)機(jī)器學(xué)習(xí)效果有較大影響
數(shù)據(jù)很重要。這對(duì)于研究量化的人幾乎是不言自明的。無論是構(gòu)建模型還是開發(fā)因子,研究的進(jìn)行與驗(yàn)證都需要大量的數(shù)據(jù)支撐。而機(jī)器學(xué)習(xí)作為一種量化的輔助研究工具(至少目前僅是輔助工具)對(duì)于數(shù)據(jù)的依賴與要求比其它量化工具更高。人腦與機(jī)器學(xué)習(xí)在對(duì)數(shù)據(jù)的處理上各有優(yōu)劣,人腦的優(yōu)勢(shì)在于對(duì)數(shù)據(jù)本身有解釋性,例如我們知道應(yīng)收賬款是什么含義、營(yíng)業(yè)收入是什么含義,并能一定程度上理解不同數(shù)據(jù)間是否有一定的關(guān)聯(lián)邏輯,如果這種關(guān)聯(lián)偏向于線性邏輯,我們往往能通過傳統(tǒng)的量化方法逼近它,然而如果這種關(guān)聯(lián)邏輯更偏向于非線性時(shí),用傳統(tǒng)量化方法研究的效率就會(huì)比較低;而機(jī)器學(xué)習(xí)的優(yōu)勢(shì)在于能夠更高效地探索不同數(shù)據(jù)間可能以怎么樣的方式關(guān)聯(lián)起來,但它并沒有對(duì)數(shù)據(jù)本身的認(rèn)知。因此它往往需要質(zhì)量更高數(shù)量更大的數(shù)據(jù)來彌補(bǔ)這一點(diǎn)。機(jī)器學(xué)習(xí)是通過在訓(xùn)練樣本“學(xué)習(xí)”到數(shù)據(jù)之間的關(guān)聯(lián),并外推到新的樣本中去。它的外推(或者也稱泛化)效果除了受數(shù)據(jù)本身信噪比大小制約以外,也直接受到新數(shù)據(jù)與樣本數(shù)據(jù)的特征是否相近的影響。如果數(shù)據(jù)里不同樣本的結(jié)構(gòu)或分布特征有較大差異的話,往往會(huì)使得機(jī)器學(xué)習(xí)算法無法有效運(yùn)作,甚至可能將研究者引向錯(cuò)誤的結(jié)論。傳統(tǒng)K線結(jié)構(gòu)的統(tǒng)計(jì)特征不適合機(jī)器學(xué)習(xí)
交易數(shù)據(jù)是金融投資領(lǐng)域數(shù)據(jù)量最大的數(shù)據(jù)源之一,蘊(yùn)藏大量的預(yù)測(cè)信息。為了利用這些非結(jié)構(gòu)化的數(shù)據(jù),我們往往會(huì)先把這些數(shù)據(jù)處理成更易處理的K線結(jié)構(gòu),形成我們常用的量?jī)r(jià)數(shù)據(jù)。傳統(tǒng)的時(shí)間K線使用的是每根K線時(shí)間跨度一致的結(jié)構(gòu)化發(fā)方式,這種構(gòu)造方式在傳統(tǒng)人工環(huán)境、低頻環(huán)境下有比較直觀的好處:人們?cè)谔幚砣魏问虑闀r(shí)都習(xí)慣于以時(shí)間為刻度。當(dāng)我們需要利用機(jī)器學(xué)習(xí)工具在高頻數(shù)據(jù)中探究規(guī)律、進(jìn)行研究時(shí),時(shí)間等分切片卻未必是一個(gè)好的結(jié)構(gòu)化方式。它們往往會(huì)面臨樣本點(diǎn)信息不均,序列自相關(guān)性,樣本非同方差,收益率非正態(tài)分布等問題,這些在低頻環(huán)境下可能提供一定信息的特質(zhì)在運(yùn)用機(jī)器學(xué)習(xí)算法時(shí)反而更大概率會(huì)影響算法的有效性。目前基于高頻數(shù)據(jù)可以構(gòu)造很多不同的采樣切片方式,目前比較主流的方式包括:tick等分K線,成交量等分K線,成交額等分K線,信息量等分K線。其中tick等分K線,成交量等分K線,成交額等分K線的構(gòu)造方式顧名思義都非常直觀。而信息量等分K線的構(gòu)造方式則依賴于對(duì)信息的定義。
不同K線結(jié)構(gòu)的正態(tài)性
股票收益率是我們最常使用也最關(guān)心的數(shù)據(jù)之一,在很多研究與模型中(不限于計(jì)量經(jīng)濟(jì)學(xué)、機(jī)器學(xué)習(xí)等)研究者在假定收益率服從正態(tài)的基礎(chǔ)上作出了許多推導(dǎo)與測(cè)試。但簡(jiǎn)單的測(cè)試就能發(fā)現(xiàn)傳統(tǒng)意義上的股票收益率(時(shí)間等分取樣下)并不符合正態(tài)分布,其密度函數(shù)有非常明顯的尖峰厚尾的特性。我們做了較為細(xì)致的測(cè)試,選取當(dāng)前上證50成分股中歷史較長(zhǎng)的四十幾只股票在2017年的30分鐘等價(jià)頻率數(shù)據(jù)作為樣本,分別從偏度、峰度、Jarque-Bera正態(tài)測(cè)試、Kolmogorov-Smirnov正態(tài)測(cè)試這4個(gè)指標(biāo)來探討不同K線結(jié)構(gòu)的正態(tài)性。首先通過K-S檢驗(yàn)可以看出無論哪種K線構(gòu)造,其股票收益率與正態(tài)分布的相差甚遠(yuǎn),其累計(jì)分布函數(shù)與正態(tài)累計(jì)分布函數(shù)的最大差值都接近0.5。但比較偏度、峰度與J-B檢驗(yàn)的值,可以看出大部分的股票在非時(shí)間切片K線上的收益序列要比時(shí)間K線上的收益序列更接近正態(tài)分布的統(tǒng)計(jì)特征。除了上述股票2017年等價(jià)頻率30分鐘的數(shù)據(jù),我們也以2013-1-1到2017-12-31為測(cè)試區(qū)間,分別統(tǒng)計(jì)了股票在5分鐘、10分鐘、30分鐘、1小時(shí)這4個(gè)等價(jià)頻率下的正態(tài)性數(shù)據(jù)。結(jié)論上:在所有這4種等價(jià)頻率下,接近正態(tài)分布的構(gòu)造皆為 成交額等分 > 成交量等分 > Tick等分 > 時(shí)間等分;而對(duì)于所有K線構(gòu)造,等價(jià)頻率越低,K線收益率數(shù)據(jù)就越接近正態(tài)分布。對(duì)具體數(shù)據(jù)感興趣的讀者可在深度報(bào)告附錄中查看詳細(xì)數(shù)據(jù)。
不同K線結(jié)構(gòu)的自相關(guān)性
除了正態(tài)分布假設(shè),還有一些要求偏低的假設(shè)也是交易數(shù)據(jù)很難符合的。其中一個(gè)就是非自相關(guān)假設(shè)。這一條假設(shè)大多是隱含在樣本點(diǎn)獨(dú)立這一假設(shè)下的。當(dāng)我們平常說到股票動(dòng)量或者反轉(zhuǎn)時(shí),實(shí)際上已經(jīng)在利用股票收益的自相關(guān)性了。但在使用機(jī)器學(xué)習(xí)工具時(shí),擁有強(qiáng)自相關(guān)性這個(gè)平常對(duì)我們而言有利的狀態(tài)反而可能制約算法的功能。探索收益序列的自相關(guān)性最直觀的方式就是檢查其自相關(guān)函數(shù)各項(xiàng)系數(shù)。下圖展示了平安銀行(000001.SZ)在不同K線構(gòu)造下的收益序列自相關(guān)函數(shù)(為方便比較,去除了函數(shù)在自變量為0處的值acf(0)=1)。相比與時(shí)間K線,非時(shí)間K線,尤其是成交量K線與成交額K線,更接近非自相關(guān)假設(shè)。我們?cè)跍y(cè)試池里所有股票上驗(yàn)證上述觀點(diǎn),并測(cè)試了在不同等價(jià)頻率下的統(tǒng)計(jì)表現(xiàn)。不同K線構(gòu)造下的收益率自相關(guān)性的確有顯著的差異,時(shí)間K線收益率序列有更為顯著的自相關(guān)性。
不同K線結(jié)構(gòu)的異方差性
無論是樣本同分布假設(shè),還是平穩(wěn)性假設(shè),都要求樣本點(diǎn)符合同方差的要求。這點(diǎn)在許多自然科學(xué)的實(shí)驗(yàn)樣本上相對(duì)容易符合,但在金融時(shí)間序列上卻幾乎完全不可能實(shí)現(xiàn)。相比于非時(shí)間K線,時(shí)間K線的異方差現(xiàn)象更為嚴(yán)重。我們可以通過周內(nèi)波動(dòng)序列來體現(xiàn)股票收益在不同時(shí)期的波動(dòng)變化。每一周的周內(nèi)波動(dòng)是以當(dāng)周內(nèi)所有K線的收益率為樣本計(jì)算方差得到的。我們展示了平安銀行(000001.SZ)在2017年內(nèi)共50周左右的周內(nèi)波動(dòng)序列。比較不同K線構(gòu)造下的周內(nèi)波動(dòng)序列曲線,可以看出在接近年末時(shí),時(shí)間K線的收益波動(dòng)遠(yuǎn)遠(yuǎn)高于年初的水平,最高時(shí)超過年初平均周內(nèi)波動(dòng)10倍有余;而其它K線構(gòu)造下的周內(nèi)波動(dòng)序列雖在年末也有明顯上升,但整體更為平穩(wěn)。為了能較為量化的體現(xiàn)不同K線構(gòu)造下異方差性的嚴(yán)重程度,我們計(jì)算不同K線的方差時(shí)間序列自己的方差,若該方差越大,則說明異方差現(xiàn)象越嚴(yán)重。我們繼續(xù)在測(cè)試池里的股票測(cè)試其在2017年的不同K線收益率周內(nèi)波動(dòng)方差。除了個(gè)別股票以外,其它所有股票在時(shí)間K線上的異方差現(xiàn)象都最為嚴(yán)重。大部分股票時(shí)間K線收益率的周內(nèi)波動(dòng)方差在其余K線構(gòu)造的3倍以上。同樣,在不同等價(jià)頻率上測(cè)試都能等到相似的結(jié)論,時(shí)間K線上的股票收益率序列異方差現(xiàn)象格外嚴(yán)重。各個(gè)股票在不同等價(jià)頻率K線上的周內(nèi)波動(dòng)序列方差詳細(xì)數(shù)據(jù)可在深度報(bào)告文后附錄查看。在不同K線結(jié)構(gòu)數(shù)據(jù)上預(yù)測(cè)波動(dòng)率變化
在從統(tǒng)計(jì)特征角度比較不同K線結(jié)構(gòu)對(duì)于機(jī)器學(xué)習(xí)運(yùn)用上的優(yōu)劣后,我們通過一個(gè)實(shí)例來更直觀地感受不同K線結(jié)構(gòu)可能帶來的影響,僅運(yùn)用不同K線構(gòu)造下的量?jī)r(jià)數(shù)據(jù)基于一些機(jī)器學(xué)習(xí)算法預(yù)測(cè)未來股票的波動(dòng)率變化的方向。想要預(yù)測(cè)股票波動(dòng)率在未來的變化方向,我們需要盡可能地給算法準(zhǔn)備有預(yù)測(cè)能力的解釋變量。為了更直觀地比較不同K線結(jié)構(gòu)的數(shù)據(jù)在算法效果上的差異,我們這次只使用與K線相關(guān)的數(shù)據(jù)。最直接的包括以K線收盤價(jià)計(jì)算的收益率數(shù)據(jù),以K線收益率序列標(biāo)準(zhǔn)差計(jì)算的歷史波動(dòng)率等。除了以上較為常見的K線數(shù)據(jù)以外,我們還嘗試運(yùn)用一些需要高頻細(xì)節(jié)構(gòu)造的K線數(shù)據(jù),比如知情交易概率。在市場(chǎng)交易結(jié)構(gòu),尤其是市場(chǎng)微觀結(jié)構(gòu)這個(gè)領(lǐng)域,知情交易概率是業(yè)界研究者非常關(guān)心的一個(gè)議題。在個(gè)議題目前最重要的研究成果之一是由Easley,Kiefer,O’Hara和Paperman(EKOP)在1996年論文中提出的PIN指標(biāo)(Probability ofInformed Trading)。簡(jiǎn)單來說,如果我們假定一個(gè)獨(dú)立信息出現(xiàn)的概率是 α;出現(xiàn)的消息是好消息與壞消息的概率分別為(1-δ)與 δ;知情交易者進(jìn)入市場(chǎng)的概率為 μ,并且他們會(huì)根據(jù)知道的消息是好是壞而作出買入或賣出的交易行為;而非知情交易者作出買入交易行為或作出賣出交易行為的概率皆為 ε。那么知情交易概率PIN有以下計(jì)算方式:
傳統(tǒng)上 α、δ、μ、ε 這4個(gè)參數(shù)是由最大似然法來估計(jì)得出。由于這種方式在穩(wěn)定性及敏感性上不夠理想,同時(shí)在數(shù)值計(jì)算的過程中也容易碰到各種問題,因此其它估計(jì)PIN值的方式也在不斷被研究與改進(jìn)。在這些研究里,Easley,Engle,O’Hara和Wu在2008年的論文中論證了:
其中,V(Bt)指t時(shí)段買入的成交量,V(St)指t時(shí)段賣出的成交量。在Easley,Prado,O’Hara于2011年發(fā)表的論文里將以上結(jié)論繼續(xù)延伸,提出了VPIN指標(biāo)(Volume-SynchronizedProbability of Informed Trading)。借鑒前述研究成果,我們嘗試?yán)贸山涣繑?shù)據(jù)計(jì)算知情交易概率數(shù)據(jù),對(duì)于每一根K線,其PIN值我們 |V_Buy-V_Sell|/(V_Buy+V_Sell) 計(jì)算。從比較直觀的邏輯出發(fā),如果某個(gè)時(shí)段內(nèi)知情交易概率增大,則表明市場(chǎng)內(nèi)有新的信息進(jìn)入,市場(chǎng)在接下來一段時(shí)期會(huì)開始消化這個(gè)新信息,從而未來波動(dòng)率大概率會(huì)上升;反之若知情交易概率下降,則市場(chǎng)在未來一段時(shí)期波動(dòng)率大概率會(huì)下降。因此我們分別計(jì)算不同K線結(jié)構(gòu)下的知情交易概率,并把其一定長(zhǎng)度的序列均值與標(biāo)準(zhǔn)差也作為解釋變量輸入給機(jī)器學(xué)習(xí)算法。
成交量K線預(yù)測(cè)波動(dòng)率變化的效果更好
我們采用幾個(gè)常見算法分別測(cè)試不同K線結(jié)構(gòu)下對(duì)未來波動(dòng)率改變方向的預(yù)測(cè),具體設(shè)置如下:測(cè)試算法:邏輯回歸、支持向量機(jī)、隨機(jī)森林
測(cè)試標(biāo)的:測(cè)試池內(nèi)所有股票逐一測(cè)試
訓(xùn)練集區(qū)間:2013-1-1 ~ 2016-12-31
測(cè)試集區(qū)間:2017-1-1 ~ 2017-12-31
通過觀察測(cè)試集的準(zhǔn)確率,可以發(fā)現(xiàn)3種算法都有一定的預(yù)測(cè)效果,不同股票稍有差異,整體準(zhǔn)確率平均在65%左右。比較不同K線結(jié)構(gòu)上的差異,時(shí)間K線結(jié)構(gòu)的預(yù)測(cè)準(zhǔn)確率在所有測(cè)試的機(jī)器學(xué)習(xí)算法上都是最低的。在邏輯回歸與支持向量機(jī)模型上,Tick等分K線、成交量K線與成交額K線的預(yù)測(cè)準(zhǔn)確性相差不大;而隨機(jī)森林算法波動(dòng)預(yù)測(cè)模型則明顯在成交量K線上有更好的預(yù)測(cè)結(jié)果,但相比與邏輯回歸與支持向量機(jī),其Tick等分K線、成交額K線與時(shí)間K線的預(yù)測(cè)效果差異較小。整體來看,波動(dòng)率改變方向預(yù)測(cè)在成交量K線上的預(yù)測(cè)效果最佳。
波動(dòng)率方向預(yù)測(cè)模型里有兩個(gè)參數(shù),一個(gè)是K線等價(jià)頻率,一個(gè)是波動(dòng)率(及輸入變量)K線窗寬。為了確定其它參數(shù)下我們之前觀察到的不同K線上效果差異是否還存在,以及差異大小與參數(shù)之間是否有聯(lián)系,我們也測(cè)試了其它參數(shù)對(duì)下的波動(dòng)預(yù)測(cè)模型效果。
不同算法模型在參數(shù)測(cè)試時(shí)表現(xiàn)出許多共性特征:
1.????對(duì)于所有等價(jià)頻率與K線結(jié)構(gòu)上,模型的預(yù)測(cè)準(zhǔn)確率基本上都隨著窗寬邊長(zhǎng)而降低。這個(gè)可以理解為隨著窗寬拉長(zhǎng),所需要預(yù)測(cè)的未來信息變得更多,其難度也相應(yīng)增大。
2.????時(shí)間K線與非時(shí)間K線結(jié)構(gòu)在模型上的表現(xiàn)差異隨著等價(jià)頻率的降低而縮小。在60分鐘頻率上不同K線結(jié)構(gòu)上的預(yù)測(cè)效果差異很小。也就是說對(duì)于一些機(jī)器學(xué)習(xí)算法,K線結(jié)構(gòu)不同的影響的確更多是在偏高頻的領(lǐng)域更為顯著,而在偏低頻的結(jié)構(gòu)上差異不會(huì)很大。
3.????最后,在等價(jià)頻率較低的30分鐘及60分鐘頻率上,非時(shí)間K線模型準(zhǔn)確率在窗寬參數(shù)上的衰減速率要高于時(shí)間K線模型。
不同算法模型的差異則在于:
對(duì)數(shù)據(jù)分布要求更高的邏輯回歸與支持向量機(jī)算法,高頻場(chǎng)景下模型運(yùn)用在時(shí)間K線與非時(shí)間K線上,效果有明顯差異;而在隨機(jī)森林算法下這種差異則并不突出。
篇幅原因這里我們?cè)谙路秸故具壿嫽貧w算法的參數(shù)檢驗(yàn),具體的測(cè)試數(shù)據(jù)及其它算法的表現(xiàn)結(jié)構(gòu)可詳見深度報(bào)告文后附錄。
波動(dòng)率方向預(yù)測(cè)的應(yīng)用與啟示
上述驗(yàn)證模型預(yù)測(cè)的標(biāo)的是波動(dòng)率,最容易想到的應(yīng)用場(chǎng)景就在波動(dòng)率交易策略上。我們?cè)诖瞬⒉粫?huì)去構(gòu)造一個(gè)完整的波動(dòng)率交易策略,我們想要向大家展示與論證的一是該預(yù)測(cè)可以作為波動(dòng)率交易的基礎(chǔ)信號(hào)之一,二是不同K線結(jié)構(gòu)的模型在這種場(chǎng)景下會(huì)產(chǎn)生怎樣的差異。要論證上述觀點(diǎn),我們利用股指的歷史波動(dòng)率構(gòu)造波動(dòng)率指數(shù),并假設(shè)該波動(dòng)率指數(shù)可以被直接交易。之后再根據(jù)上一章機(jī)器學(xué)習(xí)算法給出的波動(dòng)率預(yù)測(cè)改變方向在每周末相應(yīng)做多或做空下一周的波動(dòng)率指數(shù)。預(yù)測(cè)下一周的波動(dòng)率,我們選擇分別利用等價(jià)頻率1小時(shí),窗口寬度20的時(shí)間K線與成交量K線。用上證50指數(shù)2009到2014共6年數(shù)據(jù)訓(xùn)練SVM模型,并用之于上證50指數(shù)2015到2017年的預(yù)測(cè)上。
從凈值圖上可以看出波動(dòng)率方向預(yù)測(cè)信息一定程度上可以充當(dāng)波動(dòng)率交易的信號(hào),而在成交量K線上運(yùn)用模型的效果相比時(shí)間K線更勝一籌。不同K線結(jié)構(gòu)訓(xùn)練出來的模型信號(hào)主要在2015年有明顯分化。一個(gè)重要的原因是由于2015年市場(chǎng)情緒較為亢奮、整體交易更為活躍,此時(shí)時(shí)間K線的信息結(jié)構(gòu)與之前訓(xùn)練期內(nèi)的時(shí)間K線信息表征有較大差異,因而機(jī)器學(xué)習(xí)在時(shí)間K線訓(xùn)練得到的模型在此時(shí)失效的概率大增,而成交量K線結(jié)構(gòu)在通過增加交易活躍期間的K線數(shù)量,一定程度上使得不同市場(chǎng)環(huán)境下的K線信息特征都更為相似。因此,基于成交量K線訓(xùn)練的模型在2015年依然有較穩(wěn)定的預(yù)測(cè)效果。而當(dāng)市場(chǎng)整體環(huán)境恢復(fù)正常水平時(shí),兩種不同K線訓(xùn)練出的模型表現(xiàn)差異不大。
上述測(cè)試結(jié)論均假設(shè)處于較為理想的市場(chǎng)環(huán)境中,實(shí)際在構(gòu)建策略的過程中,除了信號(hào)本身,還需要處理各種各樣的約束條件。隨著金融市場(chǎng)不斷開放,越來越多金融工具與金融產(chǎn)品被開發(fā),與波動(dòng)率相關(guān)的研究以及合理的機(jī)器學(xué)習(xí)運(yùn)用也會(huì)有更大的舞臺(tái)。
--End--
掃碼關(guān)注我們
總結(jié)
以上是生活随笔為你收集整理的ccxt k线数据_机器学习系列:深度探秘K线结构新维度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 稀疏数组与原始数组之间的转换
- 下一篇: go检测出json中的duplicate