註冊

【Hcita視角】 一個案例看懂外匯交易中的機器學習

2018-01-17 13:34:26 和訊 

  本文首發於微信公眾號:GOE提風。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

  隨著“AlphaGo”、“無人駕駛”、“大數據處理”等名詞不斷出現在公眾的視野中的時候,人工智能和機器學習這些詞被不斷的提起。甚至很多人認為:2016年是算法時代的元年,2017年人工智能將會得到更加快速的發展。筆者也相信這是一個趨勢,因為基於算法的機器學習是人工智能的核心,運用恰當的話,的確非常強大,給各行各業帶來全新的面貌。

  目前,在國內外量化交易領域已經有少數CTA策略或者外匯EA會涉及一部分機器學習。那麽機器學習到底是如果運作的呢?今天就給大家演示下用簡單機器學習去做外匯行情預測。

  1、首先,把需要處理的數據準備好

【Hcita視角】 一個案例看懂外匯交易中的機器學習

  Mt4中用腳本處理好數據,再寫入csv裏,作為我們的訓練數據。

  數據量為1.8萬條,數據取樣為XAUUSD 1h周期。

  2、導入數據,進行處理

  import pandas as pd

  import numpy as np

  from sklearn.cross_validation import train_test_split

  from sklearn.preprocessing import StandardScaler

  #獲取經過mt4處理的數據集

  data = pd.read_csv('XAUUSDtick.csv')

  #數據x,y分類

  X = data.iloc[:,[1,2]].values

  y = data.iloc[:,[3]].values

  y = y.ravel()

  X_train,X_test,y_train,y_test = train_test_split(X , y , test_size = 0.35, random_state = 0)

  sc = StandardScaler()

  sc.fit(X_train)

  X_train_std = sc.transform(X_train)

  X_test_std = sc.transform(X_test)

  3、用sklearn的感知機模型訓練數據

  from sklearn.linear_model import Perceptron

  #叠代次數1000次,學習率0.3

  ppn = Perceptron(n_iter = 1000, eta0 = 0.3, random_state = 0)

  ppn.fit(X_train_std,y_train)

  y_pred = ppn.predict(X_test_std)

  print 'Misclassified samples:%d' % (y_test != y_pred).sum()

  print 'Accuracy:%.2f'% accuracy_score(y_test,y_pred)

  好,我們運行代碼,得到結果:

  Misclassified samples:2942

  Accuracy:0.47

  4、用邏輯回歸模型預測漲跌

  from sklearn.linear_model import LogisticRegression

  lr = LogisticRegression(C=1000.0 , random_state =0)

  lr.fit(X_train_std,y_train)

  y_pred = lr.predict(X_test_std)

  print 'Misclassified samples:%d' % (y_test != y_pred).sum()

  print 'Accuracy:%.2f'% accuracy_score(y_test,y_pred)

  運行下:

  Misclassified samples:2852

  Accuracy:0.49

  看看學習之後的曲線:

【Hcita視角】 一個案例看懂外匯交易中的機器學習

  好了,以上就是一個簡單的機器學習案例。如果你能看懂的話,就會發現它不是那麽的高深莫測,寫一個機器學習的程序也是比較簡單,但是想要得到一個比較好的結果,確是相當困難的。如果你還是不能看懂的話,那就可以通俗的理解為:機器學習就是一個黑匣子(Black Box),你扔一堆數據進去學習下,然後如果效果好的話,你就可以把實時的數據交給它,讓它給你一個預測,如果效果不好的話,那就只能繼續努力了。

  我們從上面這個簡單的機器學習可以看到,這個模型是不具有預測性,也就是說效果是不好的。其實,拿機器學習來做金融市場時間序列的預測,結果基本上也是不行的。很多實證的研究也表明金融時間序列的收益都是隨機波動的,不具有自相關的特性。

  那既然機器學習在預測未來行情上,不具備顯著性。那麽為什麽還要用它呢?

  我們都知道,AlphaGO自稱一天能和自己下幾百萬盤棋,它是通過無數次的自我學習戰勝了人類棋手。其實,從統計學上來說,機器學習就是能夠不斷訓練,不斷的犯錯,不斷的學習,從而提高估計的精度和概率。那麽對於外匯交易來講,機器學習可以很好的用在交易策略開發上,比如說在策略參數的選擇上,我們就可以嘗試用機器學習來幫助我們根據行情選擇較好的參數。

  機器學習還在不斷的發展,各種已有的積累也容易被很快的更新和淘汰,想要了解這項技術,不斷的學習最前沿的相關知識和理論是必要的。至少能夠讓我們知道,外匯市場中很多宣傳自己的EA是使用人工智能來預測行情的基本上都是在做“銷售”。

  還是那句話,機器學習沒有那麽高深莫測,重點是用到合適的地方。

(責任編輯:何美鈴 HF117)

   【免責聲明】本文僅代表合作供稿方觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

看全文
和訊網今天刊登了《【Hcita視角】 一個案例看懂外匯交易中的機器學習》一文,關於此事的更多報道,請在和訊財經客戶端上閱讀。
寫評論已有條評論跟帖用戶自律公約
提 交還可輸入500

最新評論

查看剩下100條評論

熱門新聞排行榜

和訊熱銷金融證券產品

【免責聲明】本文僅代表作者本人觀點,與和訊網無關。和訊網站對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,並請自行承擔全部責任。