開發一個自動交易系統需要哪些步驟和準備?

這是一個個人構想,但不知道該如何實現,甚至來說不知道是否具有可操作性。希望有相關人士和前輩回答一下。

自動交易系統:希望通過大數據去構建一種數學模型或者尋找某種規律。(比如:匯率的變化或者股市的變化)當符合這一盈利規律時進行買賣操作,設置盈利率達到千分之3或者虧損率達到萬分之2時即重新搜索。並進行自動交易。

這樣的系統是否可以實現?

需要哪些專業知識的 支撐?

在實現過程中可能會遇到哪些問題和難點以及最大的阻力是什麼?

(題主目前本科,若提問又不全面的地方還望指正)

謝謝


非常容易實現,也不需要什麼錢。有大量的開源軟體包,還有免費的應用,比如Quantopian | Algorithmic Investing

你所要做的就是學會用python寫演算法。整件事情的核心是演算法,價值最大的也是演算法。


交易策略的研發是一個相當複雜的過程,是以許多相關且獨立的步驟所構成,認真落實好每個步驟才能有成功的交易策略,並且在開發過程中,還要善於利用下一個步驟所得到的資訊,來改進調整上一個步驟,如此才能得到一個完善的交易策略。

  以下是開發步驟

  1、交易策略的公式化。

  2、轉化具體規則為可定義格式。

  3、進行初步測試。

  4、交易策略的優化。

  5、推進分析。

  6、多周期多市場的測試。

  7、模擬交易。

  8、實盤交易。

  9、評估實際交易績效。

  10、交易系統的改進和完善。

  步驟1:首先,任何交易策略一開始都只是一個想法,當然想法可以有多種多樣。不管你的想法怎樣,你都要能夠把它們清晰完整地表達出來,最好的方法是拿一張紙,把它們一點一點寫下來,然後仔細讀看它們是否有邏輯混亂、重複之處,最後得到的就是交易策略的規則,即初步的框架。如果你的規則不夠明確,邏輯不連貫,缺乏關鍵因素,或者有錯誤,那接下來的步驟就會很辛苦。對新手而言,他們往往不能完整地列出所有的規則,導致後面的步驟無法進行下去。

  步驟2:當你把所需要的規則都列出來後,就要把這些規則轉變成你所使用的測試平台的計算機語言,軟體平台也有很多種,像國內的有文華、MC等,國外的TS、MT、YT等,如果是計算機專業人員還可以通過基於CTP的平台自己開發,不用的平台都有不同的語言,優缺點各異,像TS的Easylanguage,是從程式語言PASCAL演變過來的,由於天然的易讀性被交易員普遍接受,而MT則類似於C語言。在這一步,你所要做的就是選擇一款實用、性價比高的平台去把你的規則轉變成計算機語言。

  步驟3:當策略中所有的程式碼都能準確地編譯後,就能看到初步的測試結果,在這一步,你可以看到你的策略是否會給你帶來贏利,並且你要做的是觀察信號圖是否和你的想法一致,如果不一致,則證明策略原碼出現了錯誤,返回步驟2進行修改,如果一致,接下來要做的是檢驗初步測試報表,了解策略的風險報酬比,交易次數等,這裡最好多測試幾個品種,不一定要求全部獲利,但如果多數出現虧損,那你最好還是放棄這個策略。相反,如果結果看起來不錯,那就是一個好的開始。

  步驟4:策略的優化,這一步是最引人入勝的。最佳化策略就是要把策略的性能提高,讓策略賺取更大的利潤且風險控制在一定的水平。我們大多數的策略都會設有參數,而策略的優化就是參數的優化,不同的參數會產生不同的績效,過度地增加參數進行限制會產生過度配適問題,過度限制過去的行情無異於減少未來行情重現的概率,這一點我們一定要把握適度,不能為了優化而優化,結果只會適得其反。

  步驟5:當進行完優化後,我們要對其進行推進分析,這是開發交易策略中最嚴謹的步驟。這一步的核心是檢驗交易策略的穩健性,即是否存在過度配適的問題。那麼我們如何來進行推進分析,簡單來講就是要進行一個對比,優化後的策略對以前的數據和之後的數據間的對比,那麼我們就要分成樣本內和樣本外兩種,通過測試得到不同的績效,然後進行比較,衡量兩者的報酬率,關於怎麼選取數據這個問題就不詳細講了,如果兩者之間存在很大差異,就證明策略穩健度不高,可能存在過度配適,這樣就要回到步驟4再重新改善。

  步驟6:當策略通過推進分析後,就說明策略具有一定的穩健度,接著進行多周期多市場的測試,進行這一步,並不是要找一個全能的策略,實際上能夠在不同的周期、不同的市場都表現得很好的策略真的不常見,而且我認為也不需要在所有的市場都適用,因為每個市場都有自己的特性。進行測試得到的結果如果在大多數的情況下都能獲得正期望,那麼恭喜你,這個策略具有很好的適應性,因為不同市場不同的走勢能讓策略得到不同的表現。

  步驟7:模擬交易,因為之前測試的都是基於靜態數據而來的,我們不知道未來行情策略會表現如何,是否有信號消失、滑點大小等,這些都是不確定因素,所以我們先跑一段時間的模擬盤,看看是否存在什麼未預料的情況,當然跑多久,這裡建議最好6個月,但是我想要說,即使你能做好所有的準備工作,到真正實盤也還是會有新問題等著你,意外總會發生。

  步驟8:實盤。對程序化自動的交易者,只需完全讓計算機運作。

  步驟9:為了讓交易系統能夠成功運行,交易者必須持續監控實際交易績效,了解其交易績效是否和如同測試預期。很多交易員很快就放棄一些策略,因為策略出現了虧損,即使虧損頻率和最大限度仍在策略報表所提供可容忍的範圍內。導致該問題往往是對交易策略缺乏信心,或策略不適合自己,解決方法是對策略進行重新認識,認真做好交易記錄,一段時間後對策略績效進行一個總結。

  步驟10:交易策略績效評估,在市場的不同時期,會有不同的表現,這是正常的,我們通過統計評估,可以發現策略的強度和弱點,然後增加策略的強度和減少不足。對於是否手動干預系統,我的看法是這樣,系統就是你的好朋友,如果你對他非常了解和熟悉,當他出現某一種情況時,你會知道他是怎麼想的,這時手動干預就可以補掉系統的不足,如果你對他不熟悉,那麼手動干預只會弄巧成拙。


按照你的這個需求

我來整理一下關鍵詞先啊!

1.大數據

2.數學模型

3.尋找規律

4.實時買賣

5.自動交易

基本上以上每一個關鍵字可以覆蓋一個學科,這些學科有些交叉多,有些處於應用的不同層

我估計目前你可能一個都不了解,想要學得話,基本如下

1data mining

2.Stochastic Optimization

3. machine learning

以上三個交集很深,基本可以認為是一個學科 functional analysis 是公共基礎。

4,5偏重應用的實現, 包括 parallel computing, cloud computing, container, middleware, 等等等等....

真的從0開發這麼個東西,沒有幾十億下不來的,我說的是美元哦!!。。。


成本比較低的就是EA了,如果你有編程基礎,就了解一下MQ。下載一個MT4就有了。

大概總結:

1、購買歷史數據(MT4自帶的數據不準確,嚴重影響回測)

2、設計交易策略(看大量的書籍,什麼比爾威廉斯、菲阿里之類的)

3、建立模型(沒有建模基礎就先從EXCEL入手吧)

4、編程(進場條件、進場時機、持倉時間、平倉原則、止盈止損、資金管理==)

5、回測數據(回測方法很多,EA出來才能延伸討論)

6、投入實盤(沒什麼好說的,獲利為王)


你說的概念有點類似「高頻交易」(不完全一樣,高頻交易也依靠大數據建模,但更多是依靠市場的反應來判斷交易,影響金融市場的因素太多,完全依靠大數據建立精準的走勢分析模型短期很難實現,比如國際政治、金融政策、戰爭等等很多因素很難搜集和分析),至於高頻交易已不是新概念了,在很多交易所已有不少成功案例了。(有個金融小說叫《閃電男孩》講的就是這個,當然小說中的很多概念並不正確)

高頻交易有一些公布的演算法可以參考,但這僅僅是皮毛,在這個領域,僅僅做個Demo之類的軟體毫無意義,大家拼的就是模型、演算法和速度,換句話說,開發一個可實現自動交易的軟體沒價值,價值在於模型的完善、演算法的準確和極限反應速度。

開發高頻交易軟體最主要的門檻是需要金融和IT兩個方向的複合人才,知呼里好像也有從事這方面開發的牛人,你可以搜索一下。


推薦閱讀:

大數據分析到底是應該以洞察總體或群體的特徵為目標,挖掘潛在客戶需求方向?還是應該以洞察個體消費特徵為目標,制定針對性的營銷方案和服務?
求助,關於數據清洗中的缺失值(NaN)處理?
大數據與媒體的具體關係在哪方面,僅僅作為一個記者的話大數據有用嗎?

TAG:人工智慧 | 軟體工程 | 自動化 | 交易系統 | 大數據分析 |