
+
選擇的回測和自動執行的平台 通過對2014年2月26日邁克爾·霍爾 - 摩爾 在這篇文章中自動執行的概念將被討論。 從廣義上講,這是允許的交易策略的過程中,通過電子交易平台,以產生交易執行信號而沒有任何隨後的人工干預。 最上QuantStart迄今為止討論的系統已被設計成可實現為自動執行策略。 本文將介紹的軟件包,並同時提供回溯測試和自動化執行能力的編程語言。 首先要考慮的是如何回測策略。 我個人的看法是,一個回測環境中的一流的編程語言定制開發提供了最大的靈活性。 相反,供應商開發的綜合性回測平台總是要做出如何backtests進行了假設。 儘管這樣,可用編程語言的選擇是大和多樣化,而這往往是壓倒性的。 它不是發展哪個語言可能是合適的前明顯。 當編纂的策略進入系統的規則,定量交易者必須確信其未來業績將反映其過去的表現。 通常有兩種形式的回測系統內正在使用的檢驗這一假設。 從廣義上講,它們被劃分為研究回測試和事件驅動回測試。 我們會考慮定制backtesters對供應商產品的這兩種模式,看看他們如何比較。 研究工具 當識別算法交易策略,通常不需要完全simualte市場互動的各個方面。 相反,近似可提供快速測定潛在的戰略表現。 這樣的研究工具往往使不切實際的假設有關交易成本,有可能填補價格,做空限制,場地的依賴,風險管理和頭寸調整。 儘管有這些缺點,例如策略的性能,仍然可以有效地進行評估。 研究常用的工具包括MATLAB,R,Python和Excel中。 這些軟件包附帶矢量圖形功能,使快速的執行速度和易於戰略實施。 MATLAB和熊貓矢量化系統的示例。 通過這樣的研究工具,可以測試多種策略,組合和變體以快速,反复方式而不需要充分“充實”一個現實的市場相互作用的模擬。 雖然這樣的工具通常用於兩個回測和執行,這些科研環境一般不適合於這個方法的盤中交易時就分分鐘刻度更高頻率的策略。 這些庫不傾向於能夠有效地連接到實時市場數據供應商或接口與券商的API在一個堅固的方式。 儘管有這些缺點,交易執行,研究環境是高度專業的定量交易行業中使用。 它們提供了“初稿”為爭取在一個現實的回溯測試環境更rigourous檢查促銷前的所有戰略思想。 事件驅動的回測 一旦戰略被認為是合適的研究必須更真實地評估。 這樣的現實試圖佔多數在先前的文章中描述的問題(如果不是全部)。 理想的情況是,能夠使用歷史回溯測試以及現場執行相同的貿易代碼。 這是通過一個事件驅動backtester實現。 事件驅動的系統被廣泛應用於在軟件工程中,通常為基於窗口的操作系統內處理的圖形用戶界面(GUI)輸入。 他們也是理想的算法交易為實時市場的訂單或貿易填充的概念可以被封裝為一個事件。 這樣的系統通常寫入高性能語言如C ++,C#和Java。 考慮這樣的情況的自動交易策略被連接到一個實時市場飼料和一個代理(這兩個可以是一個相同的)。 新的市場信息將被發送到系統,這將觸發一個事件,以產生一個新的交易信號,從而執行事件。 這些系統在連續循環中等待運行,以接收事件,並適當地處理它們。 有可能產生的子組件,例如一個歷史數據處理程序和經紀模擬器,它能夠模仿其活對應。 這樣的方式回溯測試策略非常相似,現場執行。 時相比,更簡單的研究工具這種系統的缺點在於它們的複雜設計。 因此,“上市時間”較長。 他們更容易出現錯誤和需要的編程和軟件開發方法有很好的了解。 在工程術語延遲被定義為一個模擬和響應之間的時間間隔。 在量化交易它通常是指一個執行信號的產生和接收來自一個經紀人該執行的執行的填充信息之間的往返時間延遲。 這種延遲是很少的低頻日間的戰略問題。 在潛伏期的預計價格變動會不會影響戰略,以任何程度。 同樣不是更高頻率的策略,其中等待時間變得極為重要事實。 在高頻交易的最終目的是為了減少等待時間,盡可能減少延誤。 減少等待時間包括最小化算法交易系統,並正在執行的訂單上的最終交換之間的“距離”。 這可能涉及縮短地理距離系統之間,從而減少旅行時間以及網絡佈線。 它也可以包括減少在網絡硬件或選擇一個券商用更複雜的基礎設施進行的處理。 許多券商競爭的等待時間來贏得業務。 縮短延遲變成為“互聯網距離”,其被定義為兩個服務器之間的網絡距離的函數呈指數更昂貴。 因此,對於高頻貿易商一個折衷必須支出延遲還原的和從最小滑移的增益之間到達。 這些問題將在代管下面的部分討論。 語言選擇 一些推動語言的選擇問題已經列出。 現在,我們將考慮單獨編程語言的優點和缺點。 我已經大致劃分語言轉換為高性能/更難發展VS低性能/更容易發展。 這些都是主觀方面,有些人會根據他們的背景不同意。 之一的編程定制回測環境中最重要的方面是,程序員熟悉所使用的工具。 對於那些新的編程語言的景觀下面將澄清往往是在算法交易使用。 C ++,C#和Java C ++,C#和Java是通用的面向對象的編程語言的例子。 這意味著,他們可以不使用相應的集成開發環境(IDE),都是跨平台的,具有廣泛的圖書館幾乎任何可以想像的任務,並允許快速的執行速度如果使用得當。 如果最終執行速度期望然後C ++(或C)可能是最好的選擇。 它提供了最大的靈活性來管理內存和優化執行速度。 這種靈活性是要付出代價的。 C ++是棘手學習好,常常會導致微妙的錯誤。 開發時間可以比在其他語言中要長得多。 儘管有這些缺點,這是很普遍的金融業。 C#和Java是相似的,因為它們都需要所有的組件是除原始數據類型,如浮標和整數的對象。 他們從C ++不同,通過執行自動垃圾收集。 垃圾收集增加了性能開銷,但會導致更快速的發展。 這些語言是開發一個backtester因為他們有本地GUI功能,數值分析庫和快速的執行速度這兩個很好的選擇。 就個人而言,我用C ++創建,需要極快的運行速度事件驅動backtesters,如高頻交易系統。 這是只有當我覺得一個Python事件驅動的系統瓶頸,因為後者的語言將是我這樣一個系統的首選。 MATLAB,R和Python MATLAB是一種商業化的IDE數值計算。 它已被廣泛接受的理論,工程和金融領域。 它有科學計算很多數值庫。 它擁有的正在開發的任何算法是受矢量化或並行化的前提下,快速的執行速度。 儘管有這些優勢是價格昂貴使得它無法吸引對預算的零售商販。 MATLAB有時用於直接執行到券商,如盈透證券。 R是一個專門的統計腳本環境。 它是免費的,開源的,跨平台的,並含有豐富的可免費提供的統計軟件包的實施非常先進的分析。 R是非常廣泛的應用在學術統計和量化對沖基金行業。 雖然可以與R連接到經紀沒有很好地適合該任務和應被視為更多的研究工具。 它也缺乏執行速度,除非操作矢量化。 我歸納的Python這個項目下,雖然它坐落的地方MATLAB,R和前面提到的通用語言之間。 它是免費的,開源和跨平台的。 它被解釋為反對編譯。 這使得它比C ++它本身慢。 但是,它包含用於執行幾乎所有的任務可以想像,從科學計算通過對低層web服務器設計庫。 特別是它含有與NumPy,SciPy的,熊貓,matplotlib和scikit學習,它提供了強大的數字研究環境,矢量化時,可媲美編譯語言的執行速度。 蟒蛇也擁有庫連接到券商。 這使得它成為“一站式商店”,用於創建一個事件驅動的回測和現場執行環境,而無需踏入其他更複雜的語言。 執行速度是綽綽有餘的盤中交易者交易的分鐘以上的時間尺度。 Python是非常簡單的拿起和相比,如C ++低級別的語言學習。 由於這些原因,我們做QuantStart文章中大量使用的Python。 集成開發環境 術語IDE具有內算法交易多種含義。 軟件開發人員使用它來表示一個圖形用戶界面,允許語法高亮,文件瀏覽,調試和執行代碼的功能編程。 算法交易者用它來指與歷史或實時數據下載,圖表,統計評估和現場執行一個完全集成的回測/交易環境。 對於我們來說,我用這個詞來指任何回測/交易環境,往往基於GUI的,這是不被認為是通用編程語言。 雖然一些定量交易員可能認為Excel中是不適合的交易,我發現它是為“健全檢查”的結果非常有用。 所有的數據都在眾目睽睽下直接可用的事實,使得它可以直接實現非常基本的信號/過濾策略。 券商如盈透證券還允許DDE插件,允許Excel以接收實時市場數據和執行交易指令。 儘管使用的方便性Excel是用於數據或數值計算的水平的任何合理的規模極其緩慢。 我只用它來錯誤檢查與其他策略進行開發時。 尤其是,它是非常方便的用於檢查一個戰略是否受到先行偏差。 這是直截了當的,以檢測在Excel由於軟件的電子表格性質。 如果你感到不舒服的編程語言和正在開展的日間戰略,那麼Excel中可能是一個不錯的選擇。 商業/零售回溯測試軟件 市場零售圖表,“技術分析”,並回測軟件的競爭十分激烈。 通過這些軟件提供的功能包括價格的實時圖表,豐富的技術指標,定制的回溯測試漢語語言和自動執行。 一些供應商提供了一個全功能於一身的解決方案,如TradeStation。 TradeStation是誰生產的交易軟件(也稱為TradeStation),提供跨多種資產類別的電子訂單執行的在線經紀。 我目前不知道的自動化執行直接的API。 相反,訂單必須放在通過GUI軟件。 這是相對於盈透證券,誰擁有一個精簡的交易接口(交易平台),但同時提供其專有的實時市場/訂單執行的API和FIX接口。 另一種非常流行的平台是MetaTrader的。 它採用的是外匯交易創建“智能交易”。 這些是用專用語言定義腳本,可以用於自動交易。 我還沒有與任何TradeStation或MetaTrader的很多經驗,所以我不會花太多時間討論其可取之處。 如果你不舒服與深入的軟件開發,並希望有很多的細節需要照顧這樣的工具是有用的。 然而,這種系統具有很大的靈活性處死,你常常與一個單一的經紀業務。 開源和基於Web的工具 這兩個目前比較流行的基於網絡的回測系統Quantopian和QuantConnect。 前者利用的Python(和ZipLine,見下文),而後者使用C#。 兩者都提供了豐富的史料。 Quantopian目前支持現場交易與盈透證券,而QuantConnect正在努力現場交易。 算法中,操盤手是一個總部位於瑞士的公司,同時提供一個開源並為他們的系統的商業許可證。 從我可以收集產品顯得相當成熟,他們有很多機構客戶。 該系統可實現全面的歷史回溯測試和複雜事件處理和他們扎入盈透證券。 企業版提供多得多的高性能。 Marketcetera提供一個回溯測試系統,可以綁定到許多其他語言,如Python和R,以充分利用你可能已經編寫的代碼。 該“戰略工作室”提供了編寫回測代碼,以及優化的執行算法,並隨後從歷史回測過渡到生活模擬交易的能力。 我以前沒有使用過它們。 ZipLine是Python庫的權力,Quantopian服務上面提到的。 這是一個完全事件驅動的回測的環境和目前支持美國股市上一個微小的酒吧基礎。 我還沒有廣泛使用ZipLine的,但我知道其他人誰覺得這是一個很好的工具。 還有很多領域留下來改善,但球隊正在不斷努力的項目,這是非常積極的維護。 也有一些Github上/谷歌代碼託管,你不妨看看項目。 我沒有花任何大量的時間來調查他們。 這些項目包括OpenQuant。 貿易通PyAlgoTrade。 制度回溯測試軟件 機構級回測系統,如Deltix和QuantHouse是不是經常通過零售算法交易者利用。 該軟件許可證以及一般預算用於基礎設施之外。 話雖這麼說,這種軟件被廣泛使用的定量基金,自營交易的房屋,家庭辦公室等。 這種系統的好處是顯而易見的。 它們提供一個全功能於一身的解決方案的數據收集,戰略發展,歷史回溯測試和跨越單一設備或組合的現場執行力,達到高的頻率水平。 這樣的平台上有過“在現場”的使用,因此被認為是穩健廣泛的測試和大量的。 該系統是事件驅動和返回檢驗環境通常可以模擬現場環境,以高的準確度。 該系統還支持優化的執行算法,試圖最大限度地降低交易成本。 這是格外有用的交易者具有較大的資本基礎。 我必須承認,我還沒有Deltix或QuantHouse的很多經驗。 話雖這麼說,預算單獨把他們掉大部分散戶投資者接觸不到的地方,所以我不會在這些系統上糾纏。 主機託管 該軟件景觀的算法交易現已調查。 現在,我們可以把我們的注意力轉向實施,將執行我們的戰略的硬件。 一個零售交易員很可能會在市場執行時間從家裡自己的策略。 這將涉及到把他們的PC上,連接到券商,更新他們的軟件市場,然後讓算法白天自動執行。 相反,在管理與顯著資產專業的定量基金(AUM)將有一個專用的交換,同一地點的服務器基礎設施,以盡量減少延遲地執行其高速策略。 家用台式機 最簡單的方法,以硬件配置很簡單,就是開展一個算法戰略,家用台式電腦通過寬帶(或類似)連接方式連接到券商。 雖然這種方法很簡單上手它從許多弊端受到影響。 台式機是受停電的,除非輔以一台UPS。 另外一個家庭互聯網連接也是在ISP的擺佈。 斷電或網絡連接故障可能發生在交易的關鍵時刻,留下了算法交易與未平倉合約是無法關閉。 此問題也發生在操作系統強制重新啟動(這實際上已經發生在我身上在專業設置!)及元件故障,從而導致了同樣的問題。 基於以上原因,我毫不猶豫地推薦一款家用台式機的方法來算法交易。 如果你決定去追求這種方式,確保有兩個備份計算機和備份互聯網連接(如3G加密狗),您可以使用到停機的情況下收出位置。 從家用台式機的下一級是利用虛擬專用服務器(VPS)的。 一個VPS是經常被當作一個“雲”服務的遠程服務器系統。 它們比相應的專用服務器便宜,因為一個VPS是實際上大得多服務器的一個分區。 它們具有分離的虛擬操作系統僅提供給每個用戶的環境。 CPU負荷被多個VPS,並且系統RAM的一部分之間共享被分配到VPS。 這是所有進行過被稱為虛擬化的過程。 常見的VPS供應商包括亞馬遜EC2和Rackspace的雲。 它們提供低內存和基本的CPU使用的入門級系統通過對企業就緒的高內存,高CPU的服務器。 對於大多數算法散戶交易者的入門級系統,足以滿足低頻日內或日間的戰略和更小的歷史數據的數據庫。 車輛定位系統為基礎的系統的優勢包括全天候可用性(儘管有一定的現實停機!),更強大的監控功能,方便“插件”的額外服務,如文件存儲和管理的數據庫和一個靈活的架構。 一個缺點是正在進行的費用。 隨著系統的發展專用硬件成為單位的表現更便宜。 這個價位假設託管遠離交流。 相比於家用台式系統延遲不總是通過選擇VPS提供商改善。 您家的位置可能更接近比你的雲服務提供商的數據中心的特定金融交易。 這是通過選擇一個公司,提供專為算法交易分別位於或接近交流面向VPS服務緩解。 這可能會花費更多比一般的車輛定位系統供應商如亞馬遜和Rackspace公司。 交易所主機託管 為了得到最好的延遲最小化,有必要直接在交換數據中心colocate專用服務器。 這是一個昂貴的選擇,幾乎所有的零售算法交易,除非他們是很好的資本。 這是真正的專業的數量化基金或券商的領域。 正如我上面提到的一個比較現實的選擇是從一個供應商,位於附近的一個交易所購買VPS系統。 可以看出,有很多選擇,回溯測試,自動執行和託管的戰略。 確定正確的解決方案取決於預算,編程能力,要求定制,資產級可用性程度以及是否交易是進行在零售或專業基礎。 邁克爾·霍爾 - 摩爾 邁克是QuantStart的創始人,曾參與了定量金融行業在過去的五年中,主要是作為一個定量的開發,後來成為一個定量交易員諮詢對沖基金。
No comments:
Post a Comment