利用Scikit-learn機器學習庫的特徵分類進行vnpy期貨量化交易
這個算是一個小坑,因為我也還在學習過程中,程式碼慢慢完善。一開始在python 2.7,vnpy 1.9.2環境中實現。後面在python 3.7也基本實現,增加支援了xgboost。程式碼寫的繁雜,多多抱歉。
首先說說Scikit-learn是Python語言中專門針對機器學習應用而發展起來的一款開源框架,相對於現在深度學習庫tensorflow,由於Scikit-learn本身不支援深度學習,也不支援GPU加速,但是相對於tensorflow那種近乎黑箱的多層神經網路,還是比較好從數學來解釋分析。
分類是指識別給定物件的所屬類別,屬於監督學習的範疇,最常見的應用場景包括垃圾郵件檢測和影象識別等。目前Scikit-learn已經實現的演算法包括:支援向量機(SVM),最近鄰,邏輯迴歸,隨機森林,決策樹以及多層感知器(MLP)神經網路等等。這裡會使用邏輯迴歸,決策數, MLP神經網路和SVM向量機,其實都是兩句程式碼事情。
不考慮內部的複雜數學邏輯,這裡功能性的使用Scikit-learn特徵分類的功能。
1) 選取的特徵值,為了避免資料值非邏輯化,這裡不直接使用點位最高點這些,而使用那些和具體點位無關的指標,比如atr,cci,rsi,std和bar的漲跌百分比。
2) 利用這些特徵值進行分類,這裡對於期貨走勢就是三類,1 是之後上漲,0是之後無規律,-1是之後下跌,這裡使用線性迴歸分析當前時點之後6根K線的走勢,如果斜度下,那麼當前時點歸為-1下跌類,斜度上,為1上漲,如果取信p值不夠,或者上下斜率不大,為0。
那麼特徵值就是atr,cci,rsi,std和bar的漲跌百分比,當然你可以加入KDJ,MACD更多;類別就是三類1,0,-1,利用機器學習,找出特徵值和類別的隱含邏輯,進而指導交易,非常粗糙。
整體程式碼邏輯如下,這裡大量借鑑這個 <https://mp.weixin.qq.com/s?__biz=MjM5MDEzNDAyNQ==&mid=2650314212&idx=1&sn=0f04627d34f4305e0386fc7562563bff&chksm=be454f828932c694f8ce107249457e0ffba705e6e9531807e86a1f468a3a549001c00bb5389e&scene=21> 。
1. 期貨K線資料, 匯入k線資料,並整理加入特性和類屬性
• 利用之前做的DataAnalyzer,讀取Mongodb或者csv的1分鐘k資料, 放入Dataframe來處理,按照定義合併出n分鐘k線,這裡n為10
• 還是利用DataAnalyzer,利用ta-lib方法。給Dataframe加入atr,cci,rsi,std,macd和漲跌百分比。
• 使用新方法addTrend,利用scipy.stats的線性迴歸求出當前時點之後的斜率,給與分類值-1,0,1.
2. 資料處理,為了後面機器學習,把特徵陣列和類陣列劃分出來,並且劃分訓練機和測試集。
(1)劃分出特徵陣列 X,和類別陣列y
(2)劃分訓練集和測試集
• model_selection.train_test_split()
3. 特徵工程,之前需求很多特徵,其實有些並沒有體現規律,或者完全隨機,那麼沒有意義,可以刪除
• 根據P值選:feature_selection.SelectFpr()
• 按照百分比選出最高分特徵:feature_selection.SelectPercentile()
這裡使用SelectPercentile,
4. 模型定義調參/選擇
這裡使用下面模式進行分析,然後利用網格調參
1)LogisticRegression 邏輯迴歸
2)DecisionTreeClassifier 決策樹
3)SVC 支援向量分類
4)MLP 神經網路
• 交叉驗證+網格搜尋:model_selection.GridSearchCV()
5. 模型測試和評價,使用選取最好的模型,進行測試看看拼接
• 模型預測:model.predict()
• Accuracy:metrics.accuracy_score()
• Presicion:metrics.precision_score()
• Recall:metrics.recall_score()
6. 模型儲存和呼叫
• 模型儲存:joblib.dump()
• 模型呼叫:joblib.load(),這裡就可以在vnpy中使用了,其實放在其他交易平臺也差不多。
後面程式碼整理放在後面帖子,最後,只做參考,我發現雖然準確率有差不多70%,但是都是要你空倉,大智慧。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2648687/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用Scikit-learn機器學習庫的特徵分類進行vnpy期貨量化交易(程式碼)機器學習特徵
- 利用機器學習進行惡意程式碼分類機器學習
- 機器學習二——利用numpy庫對矩陣進行操作機器學習矩陣
- [乾貨]如何從不均衡類中進行機器學習機器學習
- 入門系列之Scikit-learn在Python中構建機器學習分類器Python機器學習
- 使用scikit-learn機器學習庫裡面的xgboost機器學習
- VNPY 單品種期貨的網格交易策略的實現
- AI和機器學習對量化交易領域的影響AI機器學習
- 人工智慧-機器學習-Python-第三方庫-scikit-learn(用於特徵工程)人工智慧機器學習Python特徵工程
- Scikit-learn 機器學習庫介紹!【Python入門】機器學習Python
- python中的scikit-learn庫來實現SVM分類器。Python
- 機器人想要什麼:利用機器學習有效地進行教學機器人機器學習
- VNPY 價差交易模組的使用學習
- 【機器學習】支援向量機分類機器學習
- 機器學習-特徵提取機器學習特徵
- 機器學習 | 特徵工程機器學習特徵工程
- 機器學習——特徵工程機器學習特徵工程
- 機器學習特徵工程機器學習特徵工程
- 機器學習常用的分類器比較機器學習
- 機器學習-無監督學習(人臉識別,使用NMF進行特徵提取)機器學習特徵
- 現貨量化交易機器人開發穩定版丨現貨量化交易機器人系統開發(成熟及方案)機器人
- 針對量化交易的機器學習中,交易策略傾向於空倉的問題機器學習
- 經典量化策略——做市商交易(期貨)
- 如何使用Python、Transformers和scikit-learn對文字進行分類?PythonORM
- 機器學習的靜態特徵和動態特徵機器學習特徵
- 機器學習之特徵工程機器學習特徵工程
- 合約現貨量化交易開發系統原始碼|量化交易機器人對沖策略原始碼機器人
- 利用sklearn進行字典&文字的特徵提取特徵
- 期貨量化合約交易系統開發多少錢一套?(期貨量化合約交易系統開發流程)
- 機器學習--有監督學習--分類演算法(預測分類)機器學習演算法
- 數字貨幣/期貨量化交易系統開發(交易演算法)| 量化交易系統開發原始碼示例演算法原始碼
- 《scikit-learn機器學習實戰》簡介機器學習
- 從零開始學機器學習——初探分類器機器學習
- Feature Tools:可自動構造機器學習特徵的Python庫機器學習特徵Python
- 機器學習之特徵組合: 多非線性規律進行編碼機器學習特徵
- 如何用機器學習對文字分類機器學習文字分類
- 機器學習 – 特徵選擇演算法流程、分類、優化與發展綜述機器學習特徵演算法優化
- 機器學習2-特徵工程機器學習特徵工程