------從零開始學(xué)量化------
簡書:量化目錄傳送門
知乎:量化目錄傳送門
1. 技術(shù)框架選擇
python + mongodb(HDF5備選) + tensorflow
2. 為什么選擇這一套技術(shù)框架
2.1 為什么是python
在其他領(lǐng)域,語言的選擇可能不是一個重要的問題,但在量化方向坑傅,我相信語言的選擇是一個很重要的問題战得,語言將直接決定你的生產(chǎn)率。why???
- python在數(shù)據(jù)分析悍募、量化建模蘑辑、量化回測方向,有許多優(yōu)秀的開源框架坠宴,你不用自己去造這些輪子Q蠡辍!喜鼓!
- python在數(shù)據(jù)分析副砍、量化建模、量化回測方向庄岖,有許多優(yōu)秀的開源框架豁翎,你不用自己去造這些輪子!S绶蕖心剥!
- python在數(shù)據(jù)分析、量化建模背桐、量化回測方向优烧,有許多優(yōu)秀的開源框架,你不用自己去造這些輪子A辞汀F杪Α!
重要的事情說3遍!7自稹捍掺!
下面我們看一下github上star數(shù)排在前列的量化開源框架,清一色的python再膳,這最具有說服力葫松,(列表中的統(tǒng)計時間為2018-06-27)。
排名 | 開源項目 | Star數(shù)量 | 開發(fā)語言 | 項目用途 |
---|---|---|---|---|
1 | zipline | 7.2k | python | 量化回測框架 |
2 | tushare | 5.9k | python | 財經(jīng)數(shù)據(jù)接口包 |
3 | vn.py | 5.9k | python | 交易平臺開發(fā)框架 |
4 | rqalpha | 2.7k | python | 量化交易框架 |
5 | abu | 5.3k | python | 量化交易框架 |
6 | easytrader | 2.2k | python | 交易平臺開發(fā)框架 |
我曾經(jīng)嘗試用java去寫量化睦刃,但java的量化開源框架實在太少棚放,金融指標(biāo)都要自己實現(xiàn),在做量化的時候灾杰,慢慢地發(fā)現(xiàn)蚊丐,我根本不是在做量化,而是在寫框架代碼艳吠。90%的時間去造輪子麦备,只有10%時間去做量化,根本沒有一點生產(chǎn)力昭娩。最終完全放棄java凛篙,對我3年java職業(yè)生涯說再見,一切從新開始栏渺。
2.2 為什么選擇mongodb
金融數(shù)據(jù)主要有兩個特點:
- 金融數(shù)據(jù)是典型的時間序列數(shù)據(jù)呛梆。數(shù)據(jù)存入數(shù)據(jù)庫后就很少再需要修改了,最主要的操作是查詢磕诊。
- 數(shù)據(jù)量級大,tick級的數(shù)據(jù)很容易上tb級別填物。
因此存儲金融數(shù)據(jù),可以選擇:
- 關(guān)系型數(shù)據(jù)庫(mysql, sqlserver等)
- 非關(guān)系型數(shù)據(jù)庫(mongodb, redis等)
關(guān)系型數(shù)據(jù)庫霎终,我在工作中用的比較多滞磺,也很熟悉,用的最多的是mycat + mysql的組合莱褒。實際操作中击困,如果選用mysql,數(shù)據(jù)庫engin選擇myisam保礼,存儲數(shù)據(jù)采用行轉(zhuǎn)列沛励,當(dāng)數(shù)據(jù)量達(dá)到億級別,數(shù)據(jù)庫性能會出現(xiàn)明顯下降炮障。如果采用分片分表目派,對于個人來說,會增加硬件成本和維護(hù)成本胁赢,得不償失企蹭。不過關(guān)系型數(shù)據(jù)庫用來記錄交易流水等業(yè)務(wù),是個不錯的選擇,可以很方便的使用事務(wù)谅摄。
非關(guān)系型數(shù)據(jù)庫徒河,待更新。送漠。顽照。。
數(shù)據(jù)庫的選擇闽寡,知乎上有一個問答代兵,推薦使用hdf5,具體詳情爷狈,可以查看傳送門植影。
一次線下和雪山討論的時候,他向我推薦了mongodb涎永,因為mongdb在3.0版本已經(jīng)支持?jǐn)?shù)據(jù)壓縮思币,所以存儲tick級別的數(shù)據(jù)已經(jīng)不是什么問題。他也提到可以選擇hdf5,但是hdf5在并行寫的時候羡微,可能會存在性能的瓶頸谷饿。所以此處,我聽從老司機(jī)的建議拷淘,優(yōu)先選擇mongodb各墨。
2.3 為什么選擇tensorflow
機(jī)器學(xué)習(xí)選擇google的tensorflow指孤,主要是因為:
- google的研發(fā)實力启涯。
- 商業(yè)化的產(chǎn)品必然優(yōu)于學(xué)院派,這是資本驅(qū)動的力量恃轩。
而框架中加入tensorflow结洼,是因為我一直堅信,機(jī)器學(xué)習(xí)是未來的方向叉跛,現(xiàn)在的機(jī)器學(xué)習(xí)就像萌芽中的互聯(lián)網(wǎng)松忍,當(dāng)他走向成熟之后,他迸發(fā)出的能量將橫掃眾多傳統(tǒng)領(lǐng)域筷厘。
金融與機(jī)器學(xué)習(xí)的結(jié)合將是未來的趨勢鸣峭,而這兩個領(lǐng)域的結(jié)合,也堪稱完美酥艳。一邊是金融摊溶,不會使得自己囊中羞澀。一邊是機(jī)器學(xué)習(xí)充石,緊跟時代的步伐莫换,走在趨勢的前沿。(至于金融是如何幫助我們實現(xiàn)財務(wù)自由,我安利一本周金濤的濤動周期論拉岁,當(dāng)我在閱讀這本書的時候坷剧,我被作者的金融大局觀深深折服。書中提到2019年將是85后人生中的第一次機(jī)會喊暖,2019年將是資產(chǎn)的低點惫企,讓我們拭目以待。)
對于計算機(jī)專業(yè)陵叽,想轉(zhuǎn)量化的同學(xué)雅任,我覺得機(jī)器學(xué)習(xí)是我們的一個突破口。因為從計算機(jī)跨領(lǐng)域到金融咨跌,意味著一切從零開始沪么,在起跑線上暫時輸給了職業(yè)量化者。但是機(jī)器學(xué)習(xí)的學(xué)習(xí)壁壘高锌半,我們可以揚(yáng)長避短禽车,用機(jī)器學(xué)習(xí)作為突破口,從程序員轉(zhuǎn)型成一個寬客刊殉。
3. 量化中使用的Python開源框架
- tushare
- pandas
- ta-lib
- seaborn
- zipline
- vnpy
其中:
tushare用于獲取股票歷史數(shù)據(jù)殉摔,在量化系統(tǒng)中,作為量化數(shù)據(jù)的來源记焊。
pandas提供了大量金融數(shù)據(jù)分析的工具逸月,在量化系統(tǒng)中,作為量化數(shù)據(jù)的存儲結(jié)構(gòu)遍膜。
ta-lib提供了金融指標(biāo)的實現(xiàn)方法碗硬,在量化系統(tǒng)中,作為金融技術(shù)指標(biāo)的計算庫瓢颅。
seaborn提供了數(shù)據(jù)可視化的接口恩尾,在量化系統(tǒng)中,作為量化結(jié)果的可視化展示庫挽懦。
zipline提供了量化交易回測的框架翰意,在量化系統(tǒng)中,作為量化回測引擎信柿。
vnpy提供了交易和數(shù)據(jù)的接口冀偶,基本覆蓋了國內(nèi)外常規(guī)交易品種(證券、期貨渔嚷、期權(quán)进鸠、外匯、CFD)圃伶,在量化系統(tǒng)中堤如,作為實盤自動化交易的框架蒲列。
后面的章節(jié),將一步一步使用以上框架搀罢,開始量化之旅蝗岖。
如果你對我的文章有興趣,可以關(guān)注一下我的簡書和知乎榔至,后期會在簡書和知乎上定期更新抵赢,傳送門在下方:
簡書:瀟瀟夜雨歸何處
知乎:瀟瀟夜雨
我相信,有趣的靈魂總會相遇_笕 G稹!
你的關(guān)注枫弟,是我前進(jìn)的動力P舷怼!淡诗!