1. qteasy金融歷史數據管理

qteasy 是一套功能全面的量化交易工具包,金融數據的獲取和使用是qteasy提供的核心功能之一。

1.1. 總體介紹

目前,網上有很多不同的金融數據獲取渠道,可供量化交易者下載金融數據,但是直接從網上下載數據,有許多缺點:

  • 數據格式不統一:同樣的數據,例如交易量數據,有些渠道提供的數據單位爲“手”,而另一些提供的數據爲“股”

  • 可提取的數據量有限:尤其是通過爬蟲獲取的數據,高頻K線數據往往只有過去幾天的數據,更久以前的數據無法提供

  • 數據提取不穩定:數據提取速度和成功率不能保證,受網絡連接影響很大

  • 下載成本較高:收費數據渠道往往能提供更全面的數據,但是一般都有流量限制,而免費渠道提供的數據不全,也提高成本

  • 資訊提取不易:獲得原始數據以後,還需要進一步將數據轉化爲需要的資訊,這個過程費力且不直觀

qteasy就是爲了解決上面提到的這些痛點而設計的。

qteasy的金融數據管理模塊提供了三個主要的功能,這三個功能的設計,着眼點都是爲了

  • 數據拉取:從多個不同的網絡數據提供商拉取多種金融數據,滿足不同用戶的使用習慣:

    qteasy提供的數據拉取API具備強大的多線程並行下載、數據分塊下載、下載流量控制和錯誤延時重試功能,以適應不同數據供應商各種變態的流量限制,同時數據拉取API可以方便地定期自動運行完成數據批量下載任務,不用擔心錯過高頻數據。

  • 數據清洗和存儲:標準化定義本地數據存儲,將從網絡拉取的數據清洗、整理後保存到本地數據庫中:

    qteasy定義了一個專門用於存儲金融歷史數據的DataSource類,並以標準化的形式預定義了大量金融歷史數據存儲表,不管數據的來源如何,最終存儲的數據始終會被清洗後以統一的格式存儲在DataSource中,避免不同時期不同來源的數據產生偏差,確保數據高質量存儲。同時提供多種存儲引擎,滿足不同用戶的使用習慣。

  • 資訊提取和使用:區分“數據“和”資訊,“提供接口將集中在數據表中的真正有意義的資訊提取出來,從而直接用於交易策略或數據分析:

    我們知道”數據“並不等於”資訊“,光是將數據表保存在本地不代表立即就能使用其中的資訊。而qteasy特意將數據表中的可用“資訊”以標準化的方式定義爲DataType對象,簡化數據訪問過程和策略的定義過程,統一的API使得獲取資訊的過程變得更加直接和友好

總體來說,qteasy的數據獲取模塊的結構可以用下面的示意圖來表示:

QTEASY數據管理模塊: 數據獲取模塊結構

如圖所示,qteasy的數據功能分爲三層,第一層包括多種數據下載接口,用於從網絡數據提供商獲取數據,這個過程稱爲DataFetching。第二層是qteasy的核心功能之一,定義了一個本地數據庫用於存儲大量的數據表,並且支持多種數據引擎,這一層的核心是DataSource類,第三層是數據應用層,將數據表中有意義的資訊提取出來定義爲DataType對象,提取數據的過程被稱爲Information Extraction。而這個DataType對象在qteasy內部被廣泛使用,創建交易策略,進行數據分析、可視化等後續的一切工作,都是以DataType對象爲基礎進行的。

正因爲金融數據在量化交易過程中的重要性,從下一章節開始,我們將按以下順序詳細介紹 qteasy 數據功能的所有功能模塊(閱讀順序與文件名編號一致,2 → 2.5 → 2.6 → 3 → … → 10):

  • 2. DataType 對象與所有數據類型——資訊與數據的區別、DataType 對象、所有內置數據類型清單

  • 2.5. HistoryPanel(歷史數據面板)——多標的、多指標、時間對齊的三維容器;與 get_history_data 的配合及常用切片

  • 2.6. HistoryPanel 可視化——HistoryPanel.plot() 靜態圖與交互圖、佈局與可選依賴

  • 3. 本地數據源 DataSource——DataSource 對象與基本操作

  • 4.~9. 內置數據表——各數據表的結構與用途

  • 10. 數據拉取與渠道——從不同渠道拉取並填充數據