開發一個自動交易系統需要哪些步驟和準備?
這是一個個人構想,但不知道該如何實現,甚至來說不知道是否具有可操作性。希望有相關人士和前輩回答一下。
自動交易系統:希望通過大數據去構建一種數學模型或者尋找某種規律。(比如:匯率的變化或者股市的變化)當符合這一盈利規律時進行買賣操作,設置盈利率達到千分之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 Optimization3. 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)處理?
※大數據與媒體的具體關係在哪方面,僅僅作為一個記者的話大數據有用嗎?