利用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期貨量化交易(程式碼)機器學習特徵
- 利用機器學習進行惡意程式碼分類機器學習
- VNPY 單品種期貨的網格交易策略的實現
- 經典量化策略——做市商交易(期貨)
- 期貨量化合約交易系統開發多少錢一套?(期貨量化合約交易系統開發流程)
- 利用Hog特徵和SVM分類器進行行人檢測HOG特徵
- 數字貨幣/期貨量化交易系統開發(交易演算法)| 量化交易系統開發原始碼示例演算法原始碼
- 數字貨幣量化交易平臺 數字貨幣量化交易平臺有哪些 雲度數字貨幣量化交易 什麼是量化交易 雲度量化介紹 數字貨幣市場的量化交易工具有哪些? 量化交易需要注意什麼?
- 利用sklearn進行字典&文字的特徵提取特徵
- [乾貨]如何從不均衡類中進行機器學習機器學習
- 利用聚寬(Joinquant)資料來源為vnpy新增期貨行情資料
- 機器學習二——利用numpy庫對矩陣進行操作機器學習矩陣
- 如何使用Python、Transformers和scikit-learn對文字進行分類?PythonORM
- 數字貨幣期貨合約交易系統開發,自動對衝量化交易所開發
- 量化合約/合約量化/秒合約/永續合約/現貨期權期貨/交易所繫統開發案例及原始碼原始碼
- “進化與適應”:除期貨交易外,高盛可能將涉足加密貨幣交易加密
- 【量化交易】頂底分型策略
- AI和機器學習對量化交易領域的影響AI機器學習
- 量化現貨交易系統開發(功能詳解)| 量化現貨交易系統(原始碼demo示例)原始碼
- python中的scikit-learn庫來實現SVM分類器。Python
- VNPY 自帶跨時間週期交易策略MultiTimeframeStrategy 分析
- 現貨期權期貨/合約量化/量化合約/秒合約/永續合約/交易所繫統開發成熟技術及原始碼原始碼
- 入門系列之Scikit-learn在Python中構建機器學習分類器Python機器學習
- 人工智慧-機器學習-Python-第三方庫-scikit-learn(用於特徵工程)人工智慧機器學習Python特徵工程
- 機構投資者在華爾街首次進行比特幣期貨實物交易比特幣
- 期貨量化交易模型系統開發優勢有哪些(原始碼demo示例)模型原始碼
- 針對量化交易的機器學習中,交易策略傾向於空倉的問題機器學習
- 使用scikit-learn機器學習庫裡面的xgboost機器學習
- python機器學習庫scikit-learn:SVR的基本應用Python機器學習VR
- 為VNPY增加資料庫記錄交易資料功能資料庫
- python:利用iloc語句對列表的分類變數進行操作Python變數
- 利用 AutoML 進行大規模影象分類和物件檢測TOML物件
- 合約現貨量化交易開發系統原始碼|量化交易機器人對沖策略原始碼機器人
- 現貨期權期貨交易所開發(詳情)丨現貨期權期貨交易所繫統開發(PHP/JAVA開發)PHPJava
- 利用粒子群優化演算法(PSO)來優化vnpy的量化策略引數優化演算法
- 量化投資中的特徵工程特徵工程
- 數字貨幣量化交易系統開發搭建執行架構指南架構
- 加密貨幣交易模式系統搭建開發:量化交易帶來的優勢加密模式