无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

十年期貨股票行情數據輕松處理—— TDengine 在同心源基金的應用

同心源(三(san)亞)基金 劉(liu)健

2021-12-08 /

小 T 導讀:同心源(三亞)基金管理有(you)限公(gong)司(si)是一家(jia)致力于(yu)(yu)采(cai)取科學(xue)方(fang)法,在二級(ji)市場進行投資(zi)的私募(mu)公(gong)司(si)。公(gong)司(si)的團隊成員(yuan)均來自于(yu)(yu)國內外優(you)秀大學(xue),創始人具(ju)有(you)計算(suan)機博士學(xue)位,有(you)多(duo)年的算(suan)法研究、軟件系(xi)統開(kai)發的經(jing)驗。

從我司的(de)業(ye)務(wu)模式出(chu)發,業(ye)務(wu)人員主要通(tong)過數據(ju)挖掘(jue)和自動模式識別這兩種(zhong)方式來(lai)發現市(shi)場(chang)的(de)交易規(gui)律(lv)。因此,我們的(de)工作場(chang)景是基于大量的(de)金融(rong)數據(ju)之上的(de),主要包括如下幾(ji)類:

  1. 國內期貨市場的實時高頻數據,逐筆數據等
  2. 國內期貨市場的歷史高頻數據,逐筆數據
  3. 國內股票市場的高頻數據,逐筆數據等
  4. 國內股票市場的歷史高頻數據,逐筆數據
  5. 依據以上數據產生的更大量級衍生數據

經過(guo)多(duo)年發展,股票市場數(shu)(shu)據量(liang)十分(fen)龐大,隨著每日新數(shu)(shu)據的(de)(de)清洗寫入,總量(liang)變得更加水漲(zhang)船(chuan)高。對于十幾TB的(de)(de)數(shu)(shu)據量(liang),單是進行存儲已經不易,如果還要對數(shu)(shu)據進行查詢下載(zai)等(deng)操作,更是難(nan)上(shang)加難(nan)。這些(xie)問題橫亙眼前,也讓我(wo)們對市面上(shang)的(de)(de)主流數(shu)(shu)據庫逐漸喪失信心(xin)。

后來,經(jing)過專業人士的引(yin)薦(jian),我(wo)們嘗試(shi)了TDengine Database,沒(mei)想到(dao)它輕輕松松地(di)就適配了我(wo)們的當前業務(wu)。

具體實踐與落地效果

選好數(shu)據庫之后我們馬上(shang)開始(shi)了(le)搭建(jian),并選擇了(le)當時最新的(de)(de)2.1.3.2的(de)(de)版本部署落(luo)地(di),不同數(shu)據種類對應的(de)(de)數(shu)據庫分別如下:

1)股票高頻數據庫,包括股票市場的歷史數據+每日新增數據:

這類數據每日通過Python連接器的方式,在收盤后批量(liang)導入(ru)再做分析。其中每個表代表一個股票,共85列,以Float數據(ju)為主,共32311張。

Query OK, 3 row(s) in set (0.002792s)
TDengine Database
Query OK, 85 row(s) in set (0.002528s)
TDengine Database
Query OK, 85 row(s) in set (0.002528s)
TDengine Database

根(gen)據上述表結構計(ji)算(suan),當前情(qing)況每行(xing)大概(gai)有408字節(jie)的長(chang)度,然后我(wo)們用腳本對所有表進行(xing)了行(xing)數查詢(xun),大概(gai)是320億(yi)行(xing)。

以上述數據為基礎對入庫的總數據量進行下估算,粗略計算為408*320億行,大概12TB左右,后面經過統計最終實際占用磁盤空間卻只有2T左右,這令我們十分震驚——壓縮率高達16.7%。

實際占用磁盤空間卻只有2 TB
TDengine Database

眾所周知,Float類型的數據壓縮一直是數據庫領域的一個難題,尤其是對于行式存儲的數據庫更是困難,高興之余也非常感(gan)謝TDengine的列式存儲,幫助(zhu)我們完美(mei)解決了這(zhe)個棘(ji)手(shou)的問題。

之(zhi)后(hou)從(cong)官方人員處我們得知(zhi),在(zai)后(hou)續版本中,TDengine還(huan)對(dui)浮點(dian)類型數據做了更進一(yi)步(bu)的算法優化,壓縮率(lv)還(huan)能獲得大幅(fu)提升。只不過目前需要(yao)手(shou)動(dong)編譯,具體操作方式可(ke)以聯系官方人員。

2)期貨庫:

期(qi)貨庫(ku)是(shi)部署在另一個(ge)服務(wu)器上的,有如(ru)下三個(ge):期(qi)貨高(gao)頻(pin)(pin)數(shu)據(ju)庫(ku)、期(qi)貨X頻(pin)(pin)率(lv)數(shu)據(ju)庫(ku)、期(qi)貨Y頻(pin)(pin)率(lv)數(shu)據(ju)庫(ku)。他們分(fen)別代(dai)表著國內全(quan)部期(qi)貨的高(gao)頻(pin)(pin)數(shu)據(ju)和(he)不同(tong)時間頻(pin)(pin)率(lv)的聚合(he)數(shu)據(ju):

  1. 期貨高頻數據庫:實時記錄交易所發送的tick數據
  2. 期貨X頻率數據庫:根據時間周期X設定,記錄聚合后的數據
  3. 期貨Y頻率數據庫:根據時間周期Y設定,記錄聚合后的數據

以上(shang)三個庫分別包含3351、5315、5208張(zhang)子(zi)表,與股(gu)票庫一樣,它們同樣包括(kuo)長期的(de)歷(li)史數(shu)據(ju)以及實時數(shu)據(ju)。

具體的表結構如下(xia)所示(shi):

taos> describe txy_future_
TDengine Database

在查(cha)詢方面,由于當前我們(men)的查(cha)詢只是針對單(dan)表進(jin)行,因此(ci)邏輯比較(jiao)簡單(dan),代碼(ma)如下:

查詢代碼
TDengine Database

此外,由(you)于期(qi)貨不存在連續(xu)多年的(de)行情(qing),所以對于長(chang)期(qi)的(de)數(shu)據展示,我們(men)選(xuan)擇用多段的(de)每X個(ge)月數(shu)據進行拼接,查詢效率非常(chang)快。例如(ru):在TDengine客戶(hu)端(duan)服務器使用Python從(cong)服務端(duan)拉取連續(xu)兩(liang)個(ge)月的(de)期(qi)貨行情(qing)數(shu)據,耗時(shi)僅(jin)需(xu)0.16秒(miao)。

耗時0.16s 
TDengine Database

下圖為因子1在期(qi)貨(huo)菜粕(po)上的收益曲線,從這張圖中我們(men)也(ye)可以(yi)看(kan)出,一些其他常用的函數(shu)比如max、last,基于(yu)TDengine的緩存等技(ji)術也(ye)都(dou)實現了毫秒級(ji)返(fan)回數(shu)據。

TDengine Database

從“兩點問題”到深入合作

細心的讀者可能也留意到了文中的兩個小問題:

  • 為什么我們在估算原數據量時,是通過腳本來統計所有子表行數,再將其乘以單行字節,而不是直接通過TDengine的“超級表”?
  • 又為什么在文章開頭的數據分類描述中,1-4條都在后文中都看到了實際對應的數據庫,但是唯獨沒有出現第5條——依據以上數據產生的大量衍生數據?

其(qi)實是這樣,由(you)于項目初(chu)期沒(mei)有多表(biao)聚(ju)合查詢的(de)需求,外(wai)加(jia)為(wei)了降低數據遷(qian)移的(de)復雜度,因此在環境(jing)搭建初(chu)期時我們并沒(mei)有選擇(ze)超級表(biao)。

但(dan)是隨著業務的(de)不(bu)斷完善(shan),我們(men)將會需要更(geng)大(da)量(liang)的(de)數(shu)(shu)(shu)據(ju)來(lai)做更(geng)復雜的(de)分析(xi),這(zhe)也(ye)就出現(xian)了(le)第5條的(de)數(shu)(shu)(shu)據(ju)種類——依據(ju)以(yi)(yi)上(shang)(shang)數(shu)(shu)(shu)據(ju)產(chan)生的(de)更(geng)大(da)量(liang)級衍生數(shu)(shu)(shu)據(ju)。所(suo)以(yi)(yi)說,這(zhe)部分數(shu)(shu)(shu)據(ju)將來(lai)源于我們(men)后面(mian)的(de)待上(shang)(shang)線業務中。

屆時,我(wo)們將會(hui)更深入(ru)地用到TDengine Database的(de)其他核心特性,如(ru)超(chao)級表、眾多(duo)計(ji)算(suan)函數等等。但僅就(jiu)當下而言,TDengine強大的(de)存儲能力和快速查詢已經(jing)非常令我(wo)們驚喜,也讓(rang)我(wo)們對未來更加深入(ru)的(de)合作(zuo)充(chong)滿期待。

關于作者:

劉健(jian),北京(jing)航空航天大(da)學(xue)模(mo)(mo)式(shi)(shi)識(shi)別(bie)專業(ye)碩士學(xue)歷,曾經供(gong)職于中國航天科技集團從事軟件研發工(gong)作(zuo)。2014年與(yu)朋友(you)一起(qi)創業(ye)從事外匯、期貨、股票ETF的自動交易至今。著(zhu)重致力于通(tong)過數據(ju)挖掘(jue)、自動模(mo)(mo)式(shi)(shi)識(shi)別(bie)等方式(shi)(shi)在(zai)國內二級市場中進行自動量化交易。