六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

TDengine 在弘源泰平量化投資中的實(shí)踐

作者:丁博

公司簡(jiǎn)介

深圳市弘源泰平資產(chǎn)管理有限公司組建于2016年,團(tuán)隊(duì)核心成員來(lái)自于知名高校,有豐富的資產(chǎn)配置與策略構(gòu)建的實(shí)踐經(jīng)驗(yàn)。弘源泰平以套戥交易絕對(duì)收益型配置工具為起點(diǎn),致力于為用戶(hù)提供流動(dòng)性好、費(fèi)率公允的資產(chǎn)配置工具。產(chǎn)品線(xiàn)全面、豐富,涵蓋股、債、商品等各大類(lèi)資產(chǎn),通脹、趨勢(shì)等各類(lèi)因子。

場(chǎng)景簡(jiǎn)介+核心訴求

我們的量化交易系統(tǒng)每天要接收大量的行情數(shù)據(jù),也要基于行情產(chǎn)生大量的決策信號(hào)。這些數(shù)據(jù)都需要及時(shí)存下來(lái),供盤(pán)中和盤(pán)后使用。

傳統(tǒng)存放行情數(shù)據(jù)的方式有文件系統(tǒng)、關(guān)系型數(shù)據(jù)庫(kù)或者文檔數(shù)據(jù)庫(kù)。我們嘗試了MySQL和知名的時(shí)序數(shù)據(jù)庫(kù)InfluxDB,但是性能都沒(méi)有達(dá)到預(yù)期。分別遇到了如下問(wèn)題:

  • MySQL:在寫(xiě)入大量實(shí)時(shí)的時(shí)序數(shù)據(jù)時(shí),性能不理想;即便是優(yōu)化之后,對(duì)于資源的浪費(fèi)仍然十分驚人。而且隨著數(shù)據(jù)量的增加,對(duì)設(shè)備數(shù)據(jù)的實(shí)時(shí)查詢(xún)、時(shí)間范圍分析的需求增加,基于MySQL的查詢(xún)分析操作,響應(yīng)時(shí)間會(huì)越來(lái)越長(zhǎng),甚至?xí)o(wú)響應(yīng)。缺乏自動(dòng)建表功能,使用很不方便。
  • InfluxDB:雖然是時(shí)序數(shù)據(jù)庫(kù),但是經(jīng)過(guò)測(cè)試后性能不能滿(mǎn)足預(yù)期,在完成同樣數(shù)據(jù)量的寫(xiě)入時(shí)對(duì)于資源的使用程度也并不能令人滿(mǎn)意。

最后,我們改用TDengine Database徹底解決了實(shí)時(shí)寫(xiě)入大量數(shù)據(jù)點(diǎn)和快速查詢(xún)的問(wèn)題。

TDengine Database具體落地

對(duì)于策略研究員而言,歷史行情和信號(hào)是交易策略研究的重要素材。下面以行情數(shù)據(jù)和策略信號(hào)數(shù)據(jù)為案例予以介紹。

數(shù)據(jù)建模

首先,將行情數(shù)據(jù)和信號(hào)數(shù)據(jù)分別存儲(chǔ)。在TDengine Database中分別創(chuàng)建了一個(gè)行情數(shù)據(jù)庫(kù)和信號(hào)數(shù)據(jù)庫(kù)。

雖然是時(shí)序數(shù)據(jù)庫(kù),但是TDengine使用了關(guān)系型數(shù)據(jù)庫(kù)的模型,建庫(kù),建表,使用SQL,十分便于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的用戶(hù)入手。并且,他們還很有創(chuàng)意地設(shè)計(jì)了超級(jí)表的概念,與我們的場(chǎng)景十分契合。

因?yàn)樗行星閿?shù)據(jù)結(jié)構(gòu)相同,行情庫(kù)中只需要一個(gè)超級(jí)表,下面每個(gè)工具(衍生品基金等)對(duì)應(yīng)一個(gè)子表。比如CU2101表示2021年1月份到期的銅期貨交易合約。在合約到期之前,都會(huì)有行情數(shù)據(jù)寫(xiě)入。下面重點(diǎn)介紹策略信號(hào)數(shù)據(jù)庫(kù)。

信號(hào)庫(kù)有兩張超級(jí)表,分別對(duì)應(yīng)合約級(jí)別信號(hào)和策略級(jí)別信號(hào),每個(gè)交易信號(hào)對(duì)應(yīng)一張子表,當(dāng)前共有 40,000多張表,表結(jié)構(gòu)分別如下所示:

TDengine Database

下面是信號(hào)庫(kù)執(zhí)行show tables的截圖:

TDengine Database
TDengine Database

數(shù)據(jù)庫(kù)配置以及寫(xiě)入

我們選用的TDengine版本是2.2.0.0,由于單機(jī)版尚無(wú)壓力,目前還不需要集群。此外,機(jī)器有40核,而TDengine的每一個(gè)vnode又是擁有獨(dú)立運(yùn)行線(xiàn)程的工作單元。所以,根據(jù)文章《這幾個(gè)神秘參數(shù),教你TDengine集群的正確使用方式》,我調(diào)整了minTablesPerVnode、tableIncStepPerVnode和maxVgroupsPerDb參數(shù),讓vnode的數(shù)量恰好等于CPU核數(shù),讓每個(gè)核獨(dú)立運(yùn)行一個(gè)線(xiàn)程,實(shí)現(xiàn)了數(shù)據(jù)的合理化分布,以爭(zhēng)取達(dá)到最佳性能。

TDengine Database

寫(xiě)入性能

當(dāng)前,我們大概每秒寫(xiě)入3萬(wàn)行數(shù)據(jù)。單節(jié)點(diǎn)TDengine可以十分輕松地實(shí)現(xiàn)這個(gè)級(jí)別數(shù)據(jù)量的寫(xiě)入。同時(shí),消耗服務(wù)器資源又比InfluxDB與MySQL小的多。因此,即便未來(lái)業(yè)務(wù)擴(kuò)大,我們也不需要擔(dān)心額外的硬件成本。

資源消耗

我們當(dāng)前的服務(wù)器配置如下:64G內(nèi)存+40核 1.8GHz CPU+機(jī)械硬盤(pán)。

在業(yè)務(wù)運(yùn)行期間,taosd的%CPU只有4%上下浮動(dòng),進(jìn)程使用的物理內(nèi)存百分比為11.2%。雖然內(nèi)存占用稍多,但這是由于我們的vnode配置的比較多,每個(gè)vnode都有自己固定的內(nèi)存緩沖區(qū)。因此,后續(xù)即便是繼續(xù)大量增加新表或者加大寫(xiě)入量,內(nèi)存占用也不會(huì)有明顯的浮動(dòng)了。

TDengine Database

截至目前,通過(guò)TDengine錄入的兩個(gè)信號(hào)表已經(jīng)寫(xiě)入了82億條數(shù)據(jù),原數(shù)據(jù)大概為92GB,實(shí)際占用存儲(chǔ)空間為20G左右,壓縮率高達(dá)23%,如果是整型數(shù)據(jù)應(yīng)該還會(huì)更高。

TDengine Database
TDengine Database
TDengine Database

查詢(xún)性能

除了寫(xiě)入與存儲(chǔ),使用TDengine做日常查詢(xún)的速度也十分優(yōu)秀,即便是對(duì)于幾十億級(jí)別的大表,也是毫秒級(jí)響應(yīng)。我們來(lái)看兩個(gè)場(chǎng)景。

場(chǎng)景1:查詢(xún)特定策略信號(hào)下一段時(shí)間的均值。

select avg(v) from stgbox.strategy_signal where stg_name = '{stg_id}' and signal_name ='{signal_name}' and ts >= '{from_date} 00:00:00' and ts <= '{to_date} 23:59:59.999' interval({interval})
TDengine Database
TDengine Database

以下是我們用場(chǎng)景1查詢(xún)出的數(shù)據(jù)進(jìn)行可視化分析的示例。

TDengine Database

場(chǎng)景2:查詢(xún)滿(mǎn)足模糊查詢(xún)條件的信號(hào)的最新值。

select name,last(v) from stgbox.global_signal where name like '%keyword%' group by name。
TDengine Database
TDengine Database

在修改cachelast緩存之前,查詢(xún)效率如上。 后面在濤思數(shù)據(jù)的技術(shù)支持之下,我們將cachelast參數(shù)設(shè)置成了3。

TDengine Database

再執(zhí)行同樣的查詢(xún),查詢(xún)效率得到了很大提升:

TDengine Database

這兩個(gè)都是我們比較典型的查詢(xún)場(chǎng)景,TDengine完美地匹配了我們對(duì)功能以及性能上的需求。

寫(xiě)在最后

我們目前對(duì)TDengine的使用還處于初級(jí)階段,TDengine不僅僅是時(shí)序數(shù)據(jù)庫(kù),還可以作為消息隊(duì)列,支持?jǐn)?shù)據(jù)訂閱。以后我們會(huì)探索將TDengine用于更多的業(yè)務(wù)場(chǎng)景,以更好地服務(wù)于我們的各類(lèi)分析與交易執(zhí)行。

關(guān)于作者:

丁博,弘源泰平量化工程師。目前負(fù)責(zé)公司交易執(zhí)行系統(tǒng)、交易策略信號(hào)系統(tǒng)和交易組合管理系統(tǒng)的研發(fā)。