『壹』 選股策略回測用 Matlab 好還是用 Python 好
都是工具,也都可以開發選股策略的回測,推薦Python.理由:Python免費且開源Python編程語言簡潔優美專Python有眾多的量化屬包,包括獲取數據、處理數據、回測、風險分析。目前國外、國內很多平台和項目都是使用PythonPython開發策略,簡潔高效,這里舉幾個例子:1.[量化學堂-策略開發]金叉死叉策略2.[量化學堂-策略開發]海龜策略3.[量化學堂-策略開發]淺談小市值策略4.[量化學堂-策略開發]多頭排列回踩買入策略5.[量化學堂-策略開發]藉助talib使用技術分析指標來炒股6.[量化學堂-策略開發]大師系列之價值投資法7.[量化學堂-策略開發]事件驅動策略(基於業績快報)8.[量化學堂-策略開發]基於協整的配對交易9.[量化學堂-策略開發]使用cvxopt包實現馬科維茨投資組合優化:以一個股票策略為例這些策略涵蓋了股票量化主要的策略類型,但是使用Python語言,每個策略代碼都不多。
『貳』 python回測系統 模擬回測 最簡單量化回測系統有哪些支持期貨和股票
github上有一個jdhc簡單回測 是用python寫的比較簡單,需要設置些參數。
『叄』 用Python怎麼做量化投資
本文將會講解量化投資過程中的基本流程,量化投資無非這幾個流程,數據輸入------策略書寫------回測輸出
其中策略書寫部分還涉及到編程語言的選擇,如果不想苦惱數據輸入和回測輸出的話,還要選擇回測平台。
一、數據
首先,必須是數據,數據是量化投資的基礎
如何得到數據?
Wind:數據來源的最全的還是Wind,但是要付費,學生可以有免費試用的機會,之後還會和大家分享一下怎樣才Wind里摘取數據,Wind有很多軟體的借口,Excel,Matlab,Python,C++。
預測者網:不經意間發現,一個免費提供股票數據網站 預測者網,下載的是CSV格式
TB交易開拓者:Tradeblazer,感謝@孫存浩提供數據源
TuShare:TuShare -財經數據介麵包,基於Python的財經數據包,利用Python進行摘取
如何存儲數據?
Mysql
如何預處理數據?
空值處理:利用DataFrame的fill.na()函數,將空值(Nan)替換成列的平均數、中位數或者眾數
數據標准化
數據如何分類?
行情數據
財務數據
宏觀數據
二、計算語言&軟體
已經有很多人在網上詢問過該選擇什麼語言?筆者一開始用的是matlab,但最終選擇了python
python:庫很多,只有你找不到的,沒有你想不到,和量化這塊結合比較緊密的有:
Numpy&Scipy:科學計算庫,矩陣計算
Pandas:金融數據分析神器,原AQR資本員工寫的一個庫,處理時間序列的標配
Matplotlib:畫圖庫
scikit-learn:機器學習庫
statsmodels:統計分析模塊
TuShare:免費、開源的python財經數據介麵包
Zipline:回測系統
TaLib:技術指標庫
matlab:主要是矩陣運算、科學運算這一塊很強大,主要有優點是WorkSpace變數可視化
python的Numpy+Scipy兩個庫完全可以替代Matlab的矩陣運算
Matplotlib完克Matlab的畫圖功能
python還有很多其他的功能
pycharm(python的一款IDE)有很棒的調試功能,能代替Matlab的WorkSpace變數可視化
推薦的python學習文檔和書籍
關於python的基礎,建議廖雪峰Python 2.7教程,適合於沒有程序基礎的人來先看,涉及到python的基本數據類型、循環語句、條件語句、函數、類與對象、文件讀寫等很重要的基礎知識。
涉及到數據運算的話,其實基礎教程沒什麼應用,python各類包都幫你寫好了,最好的學習資料還是它的官方文檔,文檔中的不僅有API,還會有寫實例教程
pandas文檔
statsmodels文檔
scipy和numpy文檔
matplotlib文檔
TuShare文檔
第二,推薦《利用Python進行數據分析》,pandas的開發初衷就是用來處理金融數據的
三、回測框架和網站
兩個開源的回測框架
PyAlgoTrade - Algorithmic Trading
Zipline, a Pythonic Algorithmic Trading Library
『肆』 python量化哪個平台可以回測模擬實盤還不要錢
Python量化投資框架:回測+模擬+實盤
Python量化投資 模擬交易 平台 1. 股票量化投資框架體系 1.1 回測 實盤交易前,必須對量化交易策略進行回測和模擬,以確定策略是否有效,並進行改進和優化。作為一般人而言,你能想到的,一般都有人做過了。回測框架也如此。當前小白看到的主要有如下五個回測框架: Zipline :事件驅動框架,國外很流行。缺陷是不適合國內市場。 PyAlgoTrade : 事件驅動框架,最新更新日期為16年8月17號。支持國內市場,應用python 2.7開發,最大的bug在於不支持3.5的版本,以及不支持強大的pandas。 pybacktest :以處理向量數據的方式進行回測,最新更新日期為2個月前,更新不穩定。 TradingWithPython:基於pybacktest,進行重構。參考資料較少。 ultra-finance:在github的項目兩年前就停止更新了,最新的項目在谷歌平台,無奈打不開網址,感興趣的話,請自行查看吧。 RQAlpha:事件驅動框架,適合A股市場,自帶日線數據。是米筐的回測開源框架,相對而言,個人更喜歡這個平台。 2 模擬 模擬交易,同樣是實盤交易前的重要一步。以防止類似於當前某券商的事件,半小時之內虧損上億,對整個股市都產生了惡劣影響。模擬交易,重點考慮的是程序的交易邏輯是否可靠無誤,數據傳輸的各種情況是否都考慮到。 當下,個人看到的,喜歡用的開源平台是雪球模擬交易,其次是wind提供的模擬交易介面。像優礦、米筐和聚寬提供的,由於只能在線上平台測試,不甚自由,並無太多感覺。 雪球模擬交易:在後續實盤交易模塊,再進行重點介紹,主要應用的是一個開源的easytrader系列。 Wind模擬交易:若沒有機構版的話,可以考慮應用學生免費版。具體模擬交易介面可參看如下鏈接:http://www.dajiangzhang.com/document 3 實盤 實盤,無疑是我們的終極目標。股票程序化交易,已經被限制。但對於萬能的我們而言,總有解決的辦法。當下最多的是破解券商網頁版的交易介面,或者說應用爬蟲爬去操作。對我而言,比較傾向於食燈鬼的easytrader系列的開源平台。對於機構用戶而言,由於資金量較大,出於安全性和可靠性的考慮,並不建議應用。 easytrader系列當前主要有三個組成部分: easytrader:提供券商華泰/傭金寶/銀河/廣發/雪球的基金、股票自動程序化交易,量化交易組件 easyquotation : 實時獲取新浪 / Leverfun 的免費股票以及 level2 十檔行情 / 集思路的分級基金行情 easyhistory : 用於獲取維護股票的歷史數據 easyquant : 股票量化框架,支持行情獲取以及交易 2. 期貨量化投資框架體系 一直待在私募或者券商,做的是股票相關的內容,對期貨這塊不甚熟悉。就根據自己所了解的,簡單總結一下。 2.1 回測 回測,貌似並沒有非常流行的開源框架。可能的原因有二:期貨相對股票而言,門檻較高,更多是機構交易,開源較少; 去年至今對期貨監管控制比較嚴,至今未放開,只能做些CTA的策略,另許多人興致泱泱吧。 就個人理解而言,可能wind的是一個相對合適的選擇。 2.2 模擬 + 實盤 vn.py是國內最為流行的一個開源平台。起源於國內私募的自主交易系統,2015年初啟動時只是單純的交易API介面的Python封裝。隨著業內關注度的上升和社區不斷的貢獻,目前已經一步步成長為一套全面的交易程序開發框架。如官網所說,該框架側重的是交易模塊,回測模塊並未支持。 能力有限,如果對相關框架感興趣的話,就詳看相關的鏈接吧。個人期望的是以RQAlpha為主搭建回測框架,以雪球或wind為主搭建模擬框架,用easy系列進行交易。
『伍』 有沒有基於python pandas的回測框架
關鍵詞:開源、python/pandas、易學方便、可以並行、參數優化、事件驅動、亞ms速度、持續回維護、支持股票答/期貨等
介紹:
在事件驅動的回測框架中,引擎逐個讀取Bar或Tick並處理。數據採集模塊生成市場數據事件,流經策略模塊(Strategy類)產生交易信號,資產組合模塊根據策略信號,並結合風險管理來判斷是否委託下單,模擬的交易所根據滑點、手續費狀況等返回成交結果。
使用XQuant後,大部分時候我們不需要關心底層是如何處理的,只需要在Strategy類中完成從數據到信號的處理即可,這有利於我們快速開發策略。
詳細見Github,歡迎star、issue,PR。
【Update】結合其他回答有必要更新一下,供大家參考:
明晰兩個問題:
1)事件驅動在大部分時候都是必須的,盡量去模擬真實交易過程中的數據播放過程,避免引入未來函數等,機器學習的feature之類可以預先算好存起來;
2)pandas用來I/O,內部的數據結構還是用python自帶的,這樣達到0.1ms/條的數據處理還是挺容易的,如果還是嫌速度慢,可以利用多核優勢,並行運算。
『陸』 誰有python寫的股市策略回測系統的源碼
首先復十年的日級別數據量的確不大制,使用Python來說的話不應該出現memoryerror,應該是在編程方面需要再多留意,我們在Ricequant上使用的分鍾數據大概是200-300個GB左右,也是Python和Java共同合作完成的。 語言只是一個語言,興許會有各種語法的...
『柒』 選股策略回測用 Matlab 好還是用 Python 好
首先十年的日級別數據量的確不大,使用Python來說的話不應該出現memoryerror,應該是在編程方面需要再多留意,我們在Ricequant上使用的分鍾數據大概是200-300個GB左右,也是Python和Java共同合作完成的。
語言只是一個語言,興許會有各種語法的不同,但是在談語言的時候我們需要了解背後的工具箱和社區,以及它為什麼處理一些事情比另外的一些語言要好。
本身Python初期用來做金融回測等是應該被放棄的,用來開發策略也應該是被放棄的,因為相比matlab的矩陣運算來做開發,實在是太方便了。只不過後來Python推出了series、pandas等一系列的強悍library,pandas的語法基本在「無恥」地模仿matlab和R,而pandas的開發者正是美國大名鼎鼎的對沖基金AQR,因此使data crunching和對數據的一些操作大大便利,此外,又包裝了海量的開源社區的數學和科學計算庫,也能處理各種的machin learning等等的問題。
從科學計算的語言的發展來看,從最初的人們對浮點數計算的需求加入了fortran,再一路進行,讓工具更加的讓科學計算容易再容易(Python也封裝了大量早期的數學家們用fortran寫的數學計算基礎庫,這些經歷了幾十年的考驗、加速等等):
numpy: basic array manipulation - 基礎的數組處理
scipy: scientific computing in python, including signal processing and optimization - 科學計算,包括信號處理和優化等
matplotlib: visualization and plotting - 幾行代碼就可以做圖形化顯示了
IPython: write and run python code interactively in a shell or a notebook - 互動式編程環境,這是能將來替代掉matlab的一個必備,即在一行一行代碼的輸入、顯示過程中學習、改進
pandas: data manipulation - 最重要的矩陣運算等
scikit-learn: machine learning - 機器學習
但是隨著以後的發展Python的開源屬性就會體現的越來越強大,可以讓更多的人享受到其便利和貢獻進來,包括Quantopian也放出了zipline的python回測框架,只需要引入yahoo數據即可進行回測,並且Python的速度由於跟C的很好的結合可以達到非常快的速度,而且可以將來和其他系統很容易整合對接實盤交易介面。
由於歐美已經有很多的投行和對沖基金在往Python的技術棧靠攏,因此選擇了Python即掌握了一門重要的工具,並且無需跟一家私有化公司進行捆綁。
當然,最後的最後,所有的python回測你都可以來Ricequant - Beta上完成,我們支持海量的市場、財務數據,還有不斷加入的和大數據公司合作的輿情數據等等,同時策略回測完還可以做實時模擬交易,享受到實時數據的計算。在雲平台上已經支持了幾乎所有的Python科學計算庫,無需花時間安裝、測試等等。
『捌』 選股策略回測用 Matlab 好還是用 Python 好
語言就是用來幹活的,中間文件用HDF5或者csv轉存,需要時間序列分析的時候上內R.畢竟Python的sm庫還是很爛的容,但是PCA和大量的多因子計算,Python R MATLAB都差不多。
回測講究並發效率和一些多參數回測的參數調優以及一些MC方法的估計時,py運行效率(相對於MATLAB)會高一些
總體來說,別太把語言當回事,就跟吃飯用筷子還是勺子還是叉子,要根據食材來
『玖』 選股策略回測用matlab好還是用python好
我沒錢,支持免費開源
拋開版權不說,初期入手策略測試、數據分析用matlab非常方便
但是策略測試方法、框架弄清楚後,要做正規的回測,還是Python方便,這里的正規是指嚴格的事件流驅動,雖然速度慢,但是避免未來函數影響、接近實盤的邏輯。
Python在這方面已經有很多庫了,quantopian的zipline應該算鼻祖了,國內的優礦網和ricequant都跟zipline很像,另外還有知乎大神的zn.py,PyAlgoTrade等
『拾』 用Python 做策略回測,耗時很長,有什麼加速辦法
1. 在動手優化之前,先profile看看,程序時間都花在哪些地方了:
python -m cProfile -o output.prof your_program
跑完之後,會生成一個output.profile文件。接下來需要對這個文件進行分析,這方面的工具我推薦SnakeViz,神器。安裝非常簡單,pip install snakeviz 即可。
snakeviz output.prof
運行之後,會打開一個瀏覽器窗口,好好看看,哪些函數耗時最多,耗時是因為調用次數太多呢,還是因為單次調用耗時長,明確優化重點;
2. 減少重復計算,緩存計算結果。看看 functools.lru_cache。
3. 能用list comprehension的地方,不要用for;能用numpy的地方,不要手寫循環,不要用pandas;
4. 看你的回測,40w個tick的話,數據量不算大,應該是直接load到內存里的吧?
5. 還是慢的話,上Numba — Numba,就是安裝麻煩一些,使用起來非常方便,速度提高一兩個數量級沒問題;
6. 如果你用的包PyPy都支持的話,試試pypy;
7. Cython、c mole,上面的都沒效果的話,這個是最後的候選方案了。