有哪些程序化交易方面的 GitHub 作者值得關注?


謝邀。終於等到合適的問題祭出這張圖了!!!

上面的是之前在PyCon2016上展示過的一張圖表,由我本人和vn.py社區用戶對Github上Star數量排名前10的量化交易相關項目做了一個統計排名(如有疏漏歡迎指正)。從上面這個圖裡可以看出幾個非常有意思的信息:

  1. 前10名的項目里,有7個Python、2個Java和1個Node.js,Python Rocks!!!!!
  2. 第一名的項目zipline背後有著目前已經估值過億的商業公司Quantopian支持,同時也是歷史最久的量化開源項目之一,Star數量遙遙領先。
  3. 排名二、三的Tushare(大神Jimmy開發)和vn.py(小弟開發)都是由國人主導且主要為國內市場用戶設計(儘管也有外盤相關的功能)的量化交易項目,顯示出最近兩年國內的量化行業發展速度非常快,不要再去聽什麼「量化冬天來了」的言論了,說100句廢話也比不上真實的數據來得實在。
  4. 比特幣相關的項目有3個,且都是策略模型(其中1個還有用到機器學習的技術),之前我本人對比特幣興趣缺缺,看到這個數據後瞬間來了精神。

最後發個請求吧:用過開源項目覺得對自己有幫助的記得來Github點個Star!


ricequant/rqalpha

Ricequant對開放有非常強的意願,因此我們也一直在研究、討論和探索如何將開源和線上的雲端服務更好的結合,讓大家更快、更好的開發出好的策略。

我們正式發布了RQAlpha - 基於純python量化回測引擎!

(智能投顧現在這麼火,你也可以自己寫出自己的智能投顧策略:)

為什麼開放?

我們相信RQAlpha會和Ricequant很好的一起配合使用。Ricequant提供了一套完整的運行和展示環境,而RQAlpha則可以讓你搭建本地運行環境和使用自己的工具鏈。一起使用RQAlpha和Ricequant會有很多好處。使用RQAlpha可以讓你可以有對開發環境有完全的控制權 - 使用你最喜愛的IDE,使用debugger來解決麻煩的bug,用profile來查找性能瓶頸來使策略運行提速。

當你有一個已經開發差不多的不錯的策略,你可以複製、黏貼你的策略到Ricequant,我們基本能保證你不需要怎麼更改你的策略就可以在Ricequant上運行了,那麼可以使用到我們高質量和更齊全的數據進行回測以及提交到實盤模擬交易進行實時運行了,還會有實時的交易信號可以發送到你的郵箱和微信

如何使用?

你可以簡單的使用以下命令行安裝在自己的本地電腦上:

pip install rqalpha

當然還有1,2個依賴需要單獨安裝,請參考我們的github文檔:https://github.com/ricequant/rqalpha

策略運行效果:

特色

  • 容易使用:RQAlpha可以讓你集中精力在策略的開發上。可以參考./examples 下的範例
  • 需要傳入歷史數據,計算的結果是pandas的DataFrame, 和PyData的生態系統很好的結合在一起
  • 可以使用Python的統計、機器學習等科學計算庫如matplotlib, scipy, statsmodels和sklearn等
  • 免費提供了Ricequant的日級別數據,可以通過互聯網自己更新data bundle
  • 很少數的可以做A股回測的開源項目

如果您想參與和貢獻進來這個項目,可以發郵件給 public@ricequant.com 聯繫,或者加入QQ群「487188429」。未來我們會支持更多功能。


2017.5.29: 別到處看了,用rqalpha吧。快速出原型,設計的也不錯,除了不容易分散式

====================================================

本人程序員,針對回測框架說下:

推薦pyalgotrade,輕快明朗。和tushare(行情庫)很容易組合使用,開箱即用請看pyalgotrade-cn

zipline有些複雜,回測慢,不易添加a股行情

下圖為幾個回測框架的對比:

quantdigger 也可以看看,還沒研究過,等後續補充
====================================================
看了下quantdigger代碼,作者寫的還是挺好的,挺用心的一個項目,主要對比pyalgotrade說個細節吧:
quantdigger對策略事件的定義種類還是略顯單薄: https://github.com/QuantFans/quantdigger/blob/e0263311f46d7f70a58ddecf13f0214521fb073c/quantdigger/engine/qd.py
pyalgotrade的策略事件定義義:https://github.com/gbeced/pyalgotrade/blob/2c78a21cc3f93f6457c20541c23c74d00e1b1533/pyalgotrade/strategy/__init__.py
確實開源項目上不服老外不行。
====================================================

vn.py的話,作者宣傳做得不錯,代碼沒怎麼分層,gui,業務邏輯和策略混布,可擴展和魯棒性有隱患。建議作者聽聽git上意見盡量重構下。
常聽作者的live學到很多證券知識還是比較贊。

對於開源庫的選擇影響後期工作的效率和質量,pyalgotrade和zipline總體感覺還是好一些。據說pyalgotrade的作者是個金融從業20多年的老兵。

可參考文章

Python Backtesting Libraries For Quant Trading Strategies


之前的一篇專欄文章《每一個寬客都應該收藏的量化「利器」》對量化相關的開源項目做過詳細整理。這些都是值得關注的項目!

交易和回測

  • TA-Lib

    介紹:TA-Lib的簡稱是Technical Analysis Library,主要功能是計算價格的技術分析指標。 是技術分析者和量化人員在策略開發中常用的量化分析包。
  • easytrader

    介紹:提供券銀河/銀河客戶端/廣發/湘財證券/雪球的基金、股票自動程序化交易以及自動打新,支持跟蹤 joinquant /ricequant 模擬交易 和 實盤雪球組合, 量化交易組件。作者如果我說是90後,你敢信?

  • vnpy

    介紹:vn.py - 基於python的開源交易平台開發框架,在github上是一個比較火的項目,目前對接的交易介面特別豐富,無論是股票介面還是期貨介面。
  • 實盤易

    介紹:實盤易(ShiPanE)Python SDK,通達信自動化交易 API 及量化平台。
  • easyquotation

介紹:實時獲取新浪 / Leverfun 的免費股票以及 level2 十檔行情 / 集思路的分級基金行情, 很小,但非常實用。

  • pyalgotrade-cn

    介紹:Pyalgotrade-cn 在原版的基礎上加入了A股歷史行情回測,並整合了tushare提供實時行情。以便大家對自己的策略進行回測和模擬測試。這個項目提供了比特幣的交易介面。
  • pyktrader 基於pyctp介面,並採用vnpy的eventEngine,使用tkinter作為GUI的python交易平台
  • trade

    介紹:trade是金融應用的一個包。 它主要是用於分析主題投資和事件驅動策略。 主題代表可以交易的任何東西,而事件則代表影響一個或多個主題的任何內容,如證券交易所政策或股票分割。它是針對與金融市場有關的任何一種主題和事件進行開發的投資工具包。
  • zipline

    介紹:一個事件驅動股票策略量化回測框架,由Quantopian開源,目前國內的很多Python編程語言的在線量化回測平台都是以zipline為模板開發應用的。
  • QuantSoftware Toolkit

    介紹:QSToolKit(QSTK)是一個基於Python的開源軟體框架,旨在支持組合構建和管理。 為金融學生、計算機學生和具有編程經驗的量化分析師建立QSToolKit。支持建模分析、回測分析和實盤交易。
  • quantitative

    介紹:quantitative是一個事件驅動和多功能的反向測試庫。 用戶可以用定量測試他們的交易模型。由於仍在開發中,謹慎使用。
  • analyzer

    介紹:用於實時金融數據收集、分析和開發交易策略的一個金融分析包。
  • bt

    介紹:bt是用於測試定量交易策略的Python的靈活的backtesting框架。 bt建立在ffn之上,封裝了很多機器學習、信號處理和統計函數。bt的目的是建好輪子,讓量化人員把重點放在策略開發上。

  • quantconnect 介紹:國外一款在線的量化回測平台。
  • backtrader

    介紹:一個功能豐富的Python測試和交易框架。backtrader能夠讓策略研究員專註於編寫可重用的交易策略、指標和分析器,而不是花時間構建基礎設施。理念類似bt.
  • pythalesians

    介紹:網上對這個量化分析包的介紹資料並不多。
  • pybacktest

    介紹:在Python 結合Pandas包的矢量化測試框架,旨在幫助寬客回測更容易、 緊湊、簡單、快速。
  • pyalgotrade

    介紹:PyAlgoTrade是一個事件驅動的演算法交易Python庫。 儘管設計初衷是回溯測試,但現在已經可以實盤交易,並且包含比特幣的交易。pyalgotrade-cn是國內版針對中國市場的開源量化包。
  • tradingWithPython

    介紹:從名字就可以看出,這是一個使用Python 來進行交易的一個量化分析包,使用它可以完成一系列金融量化教程的學習。
  • algobroker

    介紹:這是一個演算法交易執行引擎。
  • pysentosa

    介紹:pysentosa是一個針對sentosa自動化交易系統的Python介面,作者Wu Fuheng
  • finmarketpy

    介紹:finmarketpy是一個基於Python的庫,幫助你能夠使用簡單易用的API分析金融數據以及回測交易策略。
  • volatility-trading 基於Euan Sinclair的波動率交易的波動率估計器
  • quant 在這裡收集了一些量化金融和演算法交易的資料,大多數基於Quantopian、Zipline、Pandas的ipython notebook。

風險分析

  • pyfolio

    介紹:組合投資和風險分析的庫,是與zipline配合使用的一個組合風險分析工具。BigQuant平台可直接使用,已安裝完成。
  • qrisk

    介紹:和pyfolio一樣,也是配合zipline使用的,主要用來分析因子風險。

  • finance

    介紹:財務風險計算庫,該項目的目的是提供易於使用的python代碼進行財務風險計算。
  • qfrm

    介紹:定量金融風險管理,用於度量、管理和可視化投資組合風險的極好的OOP工具。
  • visualize-wealth

    介紹:投資組合構建與定量分析
  • VisualPortfolio

    介紹:用於可視化分析投資組合的工具

Python

  • numpy

    介紹:一個用python實現的科學計算包。包括:1、一個強大的N維數組對象Array;2、比較成熟的(廣播)函數庫;3、用於整合C/C++和Fortran代碼的工具包;4、實用的線性代數、傅里葉變換和隨機數生成函數。numpy和稀疏矩陣運算包scipy配合使用更加方便。
  • scipy

    介紹:SciPy是一款方便、易於使用、專為科學和工程設計的Python工具包。它包括統計、優化、線性代數、傅里葉變換、信號和圖像處理、常微分方程求解等等。
  • pandas

    介紹:Python Data Analysis Library 或 pandas 是基於NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。
  • quantdsl

    介紹: quantdsl包是Quant DSL語法在Python中的一個實現。Quant DSL 是財務定量分析領域專用語言,也是對衍生工具進行建模的功能編程語言。Quant DSL封裝了金融和交易中使用的模型(比如市場動態模型、最小二乘法、蒙特卡羅方法、貨幣的時間價值)。
  • statistics

    介紹:python內建的統計庫,該庫提供用於計算數值數據的數學統計的功能。
  • PyQL

    介紹: PyQL構建在Cython之上,並在QuantLib之上創建一個很淺的Pythonic層,是對QuantLib的一個包裝,並利用Cython更好的性能。

  • pyfin

    介紹:針對於中國市場的Pandas定量投資金融工具包
  • vollib

    介紹:Vollib是用於計算期權價格、隱含波動率的紀念日工具包。能夠非常快速和準確的技術來獲得期權的隱含波動率。
  • QuantPy

    介紹:python量化金融框架。目前還是一個alpha版本,可以從雅虎網站獲取每日收益的投資組合類。計算夏普比率和有效邊界,並實現投資組合優化。
  • Finance-Python

    介紹:純python實現的金融計算庫,目標是提供進行量化交易必要的工具,包括但不限於:定價分析工具、技術分析指標。其中部分實現參考了quantlib。
  • ffn

    介紹:ffn是一個專門為從事量化金融工作的人們提供金融數據分析功能的python包。 它位於重量級包(Pandas,Numpy,Scipy等)的基礎上,並提供了廣泛的功能模塊,包括性能測量、圖形可視化和數據轉換。
  • pynance

    介紹:PyNance是用於從股票和衍生品市場檢索、分析和可視化數據的開源軟體。 比較特別的是它能夠用於生成機器學習演算法的特徵和標籤的工具。
  • tia

    介紹:TIA是針對彭博資料庫設置的,它提供bloomberg數據訪問、更簡便的pdf文檔生成、回溯測試功能、技術分析功能、收益率分析和幾個常用的Windows utils的工具包。
  • BigQuant

    介紹:人工智慧量化交易平台,擁有豐富的金融數據,可直接使用90%的主流機器學習/ 深度學習Python包。


用pyalgotrade吧,原作者寫的架構就很好,我最近又給重寫了些,已經封裝了國內股市和期貨的回測和實盤,添加了一批Demo,github:francinexue/xuefufrancinexue/xuefu,

順手把我人大經濟論壇上的一個帖子內容轉過來:分享自己手敲的python+tushare+pyalgotrade獲取數據加回測體系 - 量化投資 - 經管之家(原人大經濟論壇)

前面把國內開源的python量化項目讀了一遍,後來打算在自己用的pyalgotrade基礎上抄各家之長,近期將在github上頻繁更新。
具體已實現或待實現的包括:
1.最早的支持pandas以及mongodb,postgres的示例
2.使用pyalgotrade各種方法,如talib等你能想到開發的過坑的示例
3.在pyalgotrade中進行ctp實盤,模擬,回測的示例,支持win32,64,linux64位,vnpy之前好像不支持win64,打算再加vnpy支持,方面vnpy用戶拷代碼或貢獻給作者
4.tick級回測,實盤支持,原生的pyalgotrade支持不好,這邊重寫了遍。
5.實盤股票行情一鍵支持tushare,並能提前載入前面的歷史行情,之前也是有人貢獻出一版,但結構不大合理,速度略慢(那個作者水平要高我一截的),我再給重寫了版
6.把股票的雪球模擬等也給封裝進去,讓大家省省心
7.最後的目標是讓大家只設定選擇股票市場,期貨市場還是某某,然後選擇是回測,實盤,還是模擬這幾個參數,其它就關注寫策略就行。讓策略最靈活,讓其它的不用管是我的目標
8.界面放在最後更,初步打算網頁版
9.另外針對前面比較火的quicklib和vnpy罵戰,作為一個不懂交易的程序員摻和兩句,vnpy作者更實在些,quicklib底層封裝的比較虛,沒突破全局鎖,反而影響效率。當然我們封裝的ctp介面也沒能突破,就是把c++原生的方法全給抄到python里一遍

10.docker環境最近也配好了,陸續上傳


當然是vn.py

https://github.com/vnpy

基於python的交易框架,簡單易上手,最主要是作者就是從事量化交易相關工作的老司機,各種交易功能完善且非常適合中國國情.

看到vn.py的作者@用python的交易員關注了這個問題,我就來厚顏無恥的回答了…


謝謝邀請(雖然那麼多Charles我也不知道艾特哪個lol),但這問題我真答不了… 自己寫的代碼都在公司的系統里,平時讀的也多是公司自己的代碼。偶爾實現個啥東西有問題了就google一下,但很少專門看github上的程序化交易。


zipline效率太低,而且有些好玩的玩法它做不了,大規模的***上根本無法滿足要求。

vn.py是個很好的prototype .但是代碼來看有些亂,還是老老實實重構吧。低延遲消息匯流排來將各個交易介面解耦合,將語言(C艹和py)解耦合是王道。。。

逃。。


quantopian/zipline

量化投資最出名的一個框架


必須支持vnpy,很好,陳大有同學功德無量


個人覺得開源軟體使用成本是個問題,作者沒有那麼多 精力去專職維護、升級,我認為一個好的框架、項目, 商業化 運營才是最好的發展規劃。使用的編程語言方面盡量是 支持多語言的,比如BotVS 同時支持 JavaScript 和 python 語言。 這樣能服務於 掌握 不同編程語言的開發者,並且對於效率和開發難度可以有更多的方案 去選擇(比如開發 高頻、效率要求高的使用C++,不追求運行效率的就用腳本語言)。

感謝 Github 上的 zeropool 大神提供很多的開源代碼 https://github.com/zeropool/botvs


今天介紹一個新鮮到冒氣的開源框架。

一個用來操作二維數據序列計算的go 語言庫,本身是一個量化投資分析領域裡回測框架的基礎組件之一。

參考python裡面的 pandas的用法, 實現了go語言版本的數據表格和序列計算。

日前已經能夠識別csv格式數據文件,讀取到內存中, 按序列進行計算。

索引和存儲都盡享節約計算機的計算能力。

目前開源中,希望能獲得更大的進步和性能提升。

這是一個回測框架裡面用到的 dataframe庫。


我就有個疑問,策略所有的語言都可以寫,python或者其它語言怎麼執行交易呢?中國對個人交易者不開放自動介面


推薦閱讀:

如何看待github開源軟體的作者獲中國科學大獎?
在開發過程中使用git rebase還是git merge,優缺點分別是什麼?
如何用其他方式下載 GitHub 客戶端?
如何克服解決 Git 衝突的恐懼症?
如何評價開源中國的碼雲?

TAG:Python | GitHub | 程序化交易 | 量化交易 |