1. 程式人生 > >【量億資料-金融資料-量化交易】PyAlgoTrade框架研究

【量億資料-金融資料-量化交易】PyAlgoTrade框架研究

最近研究量化交易,看了幾個回測的框架,最後盯上PyAlgoTrade這個專案。感覺很不錯,支援
策略回測和實盤交易,提供全面的技術分析介面,算是python的量化交易框架裡比較出色的作品。所以對這個框架進行了一番研究。

程式化交易系統的程式設計正規化:事件驅動的程式設計

量化交易,一般是採用統計學和數學工具,對資產的各個方面進行定量分析,並制訂程式化的交易策略嚴格執行來獲得收益。這裡面有兩大核心任務, 一個是資料分析,一個是程式化交易。

與純粹的資料分析不同,因為有交易動作的存在,同時,在實盤交易中,還要實時更新價格、成交量等資料。這裡面可以很明顯的看到系統的結構:

資料分析模組—-行情介面和資料來源—-交易訂單管理模組—-交易下單API

這幾個模組之間還存在狀態一致性的維護。因此,交易系統的設計,一般採用事件驅動的設計。比如MetaTrader 4的設計,MQL也是採用事件回撥來計算指標或者進行EA交易。PyAlgoTrade也是基於這個理念開發的。PyAlgoTrade自己封裝了一套事件分發機制,具體的實現可以參考:
observer
dispatcher這兩個模組

資料結構的取捨

量化交易中的資料以資產價格或者成交量的時間序列為主,這類序列化資料的分析框架有很多。大部分的科學計算框架,比如:Numpy、SciPy、statsmodels、scikit-learn等等,都支援序列或者Array的分析。在Python的科學計算框架體系中,Numpy是核心,其核心的ndarray

資料結構也被廣泛使用於其他資料分析框架之中。但是儘管ndarray適用於分析領域,在程式化交易中,仍然希望資料結構內的變化依然能有一個對外的通知,需要一個帶有事件支援的資料結構。因此PyAlgoTrade並沒有採用ndarray或者pandas的dataframe作為基礎資料結構,而是自行封裝了一個DataSeries結構,以及針對每個K線或者蠟燭圖的Bar結構。

與資料分析框架的整合方式

儘管因為需求的原因,需要單獨實現一套資料結構,但是要使用主流的分析框架,依然需要使用ndarray這樣的資料結構。這裡就存在一個數據轉換的問題。同時,由於實盤交易的原因,PyAlgoTrade策略實現上,以複寫onBars

方法(其意義與MQL中的onTick方法類似)為主,因此也是需要每次更新Tick資料就進行一次計算。
這裡就涉及到一個移動視窗問題。PyAlgoTrade也對此做了一定的封裝。這裡可以參考:
technical.EventWindow這個類。
talibext.indicator模組中包含了talib的封裝。

相關推薦

資料-金融資料-量化交易PyAlgoTrade框架研究

最近研究量化交易,看了幾個回測的框架,最後盯上PyAlgoTrade這個專案。感覺很不錯,支援 策略回測和實盤交易,提供全面的技術分析介面,算是python的量化交易框架裡比較出色的作品。所以對這個框架進行了一番研究。 程式化交易系統的程式設計正規化:事件驅動的程式設計

資料量化交易主要有哪些經典的策略?

量化交易起源於國外,在國外已經至少有長達幾十年的發展歷程,以下是百度百科對量化交易的解釋。 量化交易是指以先進的數學模型替代人為的主觀判斷,利用計算機技術從龐大的歷史資料中海選能帶來超額收益的多種“大概率”事件以制定策略,極大地減少了投資者情緒波動的影響,避免在市場極

數量技術宅|金融資料分析系列分享為什麼中證500(IC)是最適合長期做多的指數

更多精彩內容,歡迎關注公眾號:數量技術宅。探討資料分析、量化投資問題,請加技術宅微信:sljsz01 投資股票指數相比個股的優勢 我們在投資股票的時候,如果持倉集中在一隻或者有限幾隻股票上,恰好不幸遇到“長生生物”、“康美藥業”這樣造假、暴雷的公司,將會對賬戶總資產造成極大的損失。可以說選股是一門極度需要

數量技術宅|金融資料系列分享套利策略的價差序列計算,恐怕沒有你想的那麼簡單

更多精彩內容,歡迎關注公眾號:數量技術宅。想要獲取本期分享的完整策略程式碼,請加技術宅微信:sljsz01 價差計算的“誤區” 我們在測試兩個或多個金融資產相互運算產生的策略訊號時,免不了需要涉及將不同的價格時間序列,按照時間軸進行對齊,套利策略就是其中之一。然而,大部分介紹套利策略、統計套利類的文章,對

金融市場量化交易配對策略(一):尋找配對股票(基於聚寬python2.7平臺)

需要基礎金融理論知識、python numpy、pandas庫知識量化交易以先進的數學模型替代人為的主觀判斷,利用計算機技術從龐大的歷史資料中海選能帶來超額收益的多種“大概率”事件以制定策略,極大地減少了投資者情緒波動的影響,避免在市場極度狂熱或悲觀的情況下作出非理性的投資決

傳智播客鄭州校區分享資料庫框架詳解

    // 問題二:如何設定實體中的資料到資料庫的表中對應的列上     public void setValues(M m, ContentValues values) {         // values.put(DBHelper.TABLE_NEWS_TITLE, news.getTitle())

框架iOS框架研究

更多內容歡迎光臨作者部落格: 學習iOS開發已有數年時間,基本的各種庫操作都能夠熟練完成,但是對於iOS的整體框架還需要重新學習一邊。每天的工作其實都離不開這套框架,它上至使用者所見之介面,下至底層作業系統,就相當於一個工具箱,不論你的App多麼複雜或者多麼簡單,都

量化交易入門筆記-資料獲取函式 二

gt_fundamentals() 函式 該函式可查詢一隻股票或多隻股票的財務資料,其語法如下: get_fundamentals(query_object, date=None, statDate=None) 引數解析: query_object : 這是

量化交易入門筆記-資料獲取函式 一

history()函式 history()獲取歷史資料,可查詢多個標的單個數據欄位,返回資料格式為 DataFrame 或 Dict(字典),其語法格式如下: history(count, unit='1d', field='avg',

《零起點Python大資料量化交易》 pdf下載

本書是國內較早關於Python大資料與量化交易的原創圖書,配合zwPython開發平臺和zwQuant開源量化軟體學習,是一套完整的大資料分析、量化交易的學習教材,可直接用於實盤交易。本書有三大特色:一,以實盤個案分析為主,全程配有Python程式碼;二,包含大量的圖文案例和Python原始碼

金融申請評分卡資料準備

今天我們來聊聊資料準備中的資料清洗。 其實資料清洗這四個字對於常常做資料分析建模的同學們一定不陌生,不管在實際工作中有沒有真正做清洗,我們都會先把這個口號喊出來,資料清洗這塊其實我也一直不太願意拿出來說,因為這種活實在太結合業務理解了,而且還見仁見智,並不是簡簡

資料分析:python:金融資料指標分析

python:金融資料指標分析 # -*- coding: utf-8 -*- """ Created on Wed Jul 4 17:31:47 2018 @author: 孫正陽 """ #@匯入功能模組資料包 import numpy as np im

JQData——能在本地呼叫的全品種量化金融資料

JQData是什麼 JQData是聚寬資料團隊專門為金融機構、學術研究和量化研究者們提供的本地量化金融資料服務。使用JQData,可快速檢視和計算金融資料,無障礙解決本地、Web、金融終端呼叫資料的需求。歷經3年沉澱,15萬寬客及數百家機構投研交易驗證。 使用上,JQData適用Windows、Mac、L

量化交易:建立簽名、從okex平臺獲取ticker資料和k線資料

import hashlib import json import pandas as pd from urllib.request import Request, urlopen pd.set_option('expand_frame_repr', Fals

每日安全資訊專家警告網路安全形勢嚴峻:2018年度共計有10網民資料遭外洩...

據Nord數字化資訊專家Daniel Markuson近期的一篇文章,2018年是網路安全情況相當糟糕的一年,全球大部分企業遭遇網路攻擊,數以億計的使用者資料記錄遭外洩曝光。據Markuson統計,2018年度網路攻擊導致的全球企業使用者資料外洩,影響了共計達10億網民,這些外洩資料都有潛在

量化:從okex獲取k線資料,symbol(交易對), 去重處理,存入到mongodb資料庫

import json import time import pymongo from threading import Thread import pandas as pd from urllib.request import Request, urlopen

資料案例每天數百使用者行為資料,美團點評怎麼實現秒級轉化分析?

6. 效果:上述方案目前在美團點評內部已經實際落地,穩定執行超過半年以上。每天的資料有幾百億條,活躍使用者達到了上億的量級,埋點屬性超過了百萬,日均查詢量幾百次,單次查詢的TP95時間小於5秒,完全能夠滿足互動式分析的預期。相比於原有sql方案,達到了3-4個數量級的效能提升。

量化分析師的Python日記第6天:資料處理的瑞士軍刀pandas下篇

原始資料的中很可能存在一些資料的缺失,就如同現在處理的這個樣例資料一樣,處理缺失資料有多種方式。通常使用dataframe.dropna(),dataframe.dropna()可以按行丟棄帶有nan的資料;若指定how='all'(預設是'any'),則只在整行全部是nan時丟棄資料;若指定thresh,則

《零起點Python大資料量化交易》CH01

作業1:# -*- coding: utf-8 -*- import numpy as np # ======================= def sta001(k,nyear,xd): d2=np.fv(k,nyear,-xd,-xd); d

機器學習文字資料的向量化(TF-IDF)---樣本集例項講解+python實現

1.文字資料的向量化1.1名詞解釋CF:文件集的頻率,是指詞在文件集中出現的次數DF:文件頻率,是指出現詞的文件數IDF:逆文件頻率,idf = log(N/(1+df)),N為所有文件的數目,為了相容df=0情況,將分母弄成1+df。TF:詞在文件中的頻率TF-IDF:TF