論程序化交易
時(shí)間:2023-03-17 09:40:01 | 來源:電子商務(wù)
時(shí)間:2023-03-17 09:40:01 來源:電子商務(wù)
最近盧奴耕者想結(jié)合市場分力的構(gòu)成,開發(fā)一套程序化交易,就翻了翻已經(jīng)被很厚塵土壓著的程序化源代碼庫。順便總結(jié)一下當(dāng)年接觸過的程序化交易。
在曾經(jīng)的某個(gè)時(shí)期盧奴耕者覺得自己交易最大的障礙就是無法完美的控制自己的情緒。于是盧奴耕者把目光放在程序化交易上,當(dāng)然當(dāng)時(shí)國內(nèi)市場并沒有良好的程序化交易平臺(tái),國內(nèi)交易軟件所提供的平臺(tái)自由度不高,許多的想法無法實(shí)現(xiàn)。于是盧奴耕者把主要的精力放在了MT4上。開始猛攻了一段時(shí)間的編程。為什么要自己學(xué)習(xí)編程呢?因?yàn)樽约阂矅L試過找程序員來寫。最終的結(jié)果和想要的差別太大,無論怎么溝通都無法實(shí)現(xiàn)自己的策略,期間換過許多的程序員,結(jié)果都一樣。通過和程序員的深入溝通發(fā)現(xiàn)了問題的所在。
程序化交易是交易者和程序員兩個(gè)思想很難無縫銜接的工作。一個(gè)交易做得好的交易者并不一定能夠清晰完整地把自己的交易策略表達(dá)清楚,甚至許多交易者的交易策略更多的來源于”盤感”也就是經(jīng)驗(yàn)主義。這樣的思想是無法用準(zhǔn)確的計(jì)算機(jī)邏輯語言表述清楚的。強(qiáng)行的表述,最終的成品根本無法在歷史回測中得到想要的結(jié)果。更別提真實(shí)地去面對市場。而一個(gè)好的程序員對于交易的理解不一定深刻,程序員的思維是受過嚴(yán)格邏輯訓(xùn)練的,這樣的思維其實(shí)并不適合做交易,交易中的大部分情況下并不需要清晰的邏輯思維,交易中的很多結(jié)果也并非存在清晰的因果關(guān)系。交易是一個(gè)混沌的市場,強(qiáng)行的去理清混沌中的秩序是一件非常難的事情。
舉個(gè)例子來說,盧奴耕者想要5日均線上穿10日均線就做多(這僅僅是例子),那么我們在實(shí)際中所看到的上穿已經(jīng)是很明顯的上穿了。這里先科普下均線的形成,5日均線就是前5天收盤價(jià)(這里可以自行設(shè)置)的平均值,這個(gè)值在二維的K線窗口中是一個(gè)點(diǎn),所謂的5日均線就是把這些個(gè)點(diǎn)連接起來。其他周期的均線也是這樣。
這里交易者理解的上穿一定是10日均線已經(jīng)遠(yuǎn)離5日均線。但是在程序員的眼中,只要10日均線在當(dāng)前盤面上的點(diǎn)大于5日均線在當(dāng)前盤面上的點(diǎn)就是上穿。哪怕是大0.01也叫上穿。好了這里就需要另一個(gè)概念的引入,就是粘合,盧奴耕者現(xiàn)在問交易者,你認(rèn)為什么是粘合?相信大部分人都無法用準(zhǔn)確的數(shù)字來描述清楚什么是粘合。這就造成了交易者和程序員之間的溝通障礙。因?yàn)榻灰渍咦约憾紵o法準(zhǔn)確的描述什么是粘合,那么如何讓程序員寫出能夠過濾粘合的程序呢?
當(dāng)然上邊只是盧奴耕者隨便舉的一個(gè)例子。實(shí)際上的交易系統(tǒng)更加復(fù)雜,這種復(fù)雜就造成了交易者的策略很難用程序化語言表述出來。在這種情況下盧奴耕者只能通過自己學(xué)習(xí)編程來實(shí)現(xiàn)程序化交易。
當(dāng)盧奴耕者學(xué)習(xí)了一段時(shí)間后,就開始購買程序,拆解源代碼的過程。這里盧奴耕者購買了許多的程序,這里面不乏價(jià)格昂貴的。當(dāng)時(shí)國內(nèi)的一家公司提供的程序售價(jià)60萬人民幣。當(dāng)時(shí)盧奴耕者買了一套,可以說這個(gè)程序通過了盧奴耕者的各種測試,無論歷史回測,還是真正的跑實(shí)盤交易,最終的交易結(jié)果盧奴耕者十分滿意。但是當(dāng)盧奴耕者拆解了他的源代碼以后就發(fā)現(xiàn)了問題的所在,歷史回測中規(guī)避了會(huì)產(chǎn)生虧損的幾單交易,策略用的是馬丁格爾。這里簡單科普一下什么是馬丁格爾:簡單點(diǎn)說這個(gè)其實(shí)就是一個(gè)虧錢后加倍的一個(gè)策略,任何一次的盈利都可以找回之前的全部損失。所以這個(gè)程序之所以實(shí)盤表現(xiàn)得不錯(cuò)的原因也是這個(gè)。以0.01手起步,隔一段距離就翻倍進(jìn)場。任何的一個(gè)回調(diào)都可以盈利出局,看似不錯(cuò),但是盧奴耕者拆解完源代碼后就不在實(shí)盤運(yùn)行了。
當(dāng)時(shí)盧奴耕者記得實(shí)盤運(yùn)行了4個(gè)月,平均每個(gè)月能有20%的盈利。盧奴耕者不繼續(xù)使用的原因是盧奴耕者知道交易市場極端事情經(jīng)常發(fā)生,我們認(rèn)為離自己很遠(yuǎn)的黑天鵝在市場上經(jīng)常出現(xiàn)。馬丁格爾策略的致命點(diǎn)就是如果遇上不回頭的大單邊行情就會(huì)直接大虧。盧奴耕者前些年還親眼見過一個(gè)依托于程序化交易的量化團(tuán)隊(duì),他們的交易報(bào)告中有一單是從0.01手直接加到了60多手。這樣的倉位隨時(shí)有爆倉的風(fēng)險(xiǎn),最后不得不以手動(dòng)平倉的方式減小損失。
市面上大部分的商用程序化交易還是依托于馬丁格爾,因?yàn)檫@個(gè)策略的確在很長一段時(shí)間可以盈利,交易報(bào)告非常漂亮,很有賣點(diǎn)。但是經(jīng)不起一次的風(fēng)險(xiǎn),這里不乏有些沖動(dòng)的小的資產(chǎn)管理團(tuán)隊(duì),拿著散戶的錢,用馬丁格爾去交易。經(jīng)受不住一次的大單邊最終只能黯然收場。
在盧奴耕者的源代碼庫里還有一些依托于指標(biāo)的程序化交易策略。這些指標(biāo)在盤面上也很漂亮,最高點(diǎn)最低點(diǎn)的標(biāo)注可謂是精準(zhǔn)。但是當(dāng)盧奴耕者拆解完它的源代碼后發(fā)現(xiàn),這里面有未來函數(shù)。這里需要科普一下什么是未來函數(shù),盧奴耕者就不引用它的定義了,簡單點(diǎn)說就是你當(dāng)前看到的指標(biāo)拐點(diǎn),會(huì)隨著價(jià)格的更新而發(fā)生改變,你剛依托于指標(biāo)提示的拐點(diǎn)下單,然后拐點(diǎn)就改變了,是不是有種被指標(biāo)欺騙的感覺。目前還有許多公司在拿這些東西商用。也許是商家本身無知,也許商家為了營銷無所不用其極。這里盧奴耕者希望大家可以遠(yuǎn)離以這類指標(biāo)為依托的程序化交易。這里面典型的就是zigzag指標(biāo)。大家有興趣可以自行研究一下。
盧奴耕者源碼庫里剩下的最多的就是各類指標(biāo)的堆砌了。怎么講呢,這里的程序化交易大部分還算中規(guī)中矩,有贏有虧。有意思的是這樣的程序化交易和盧奴耕者隨機(jī)下單的程序勝率差不多。盧奴耕者為了更加透徹的研究程序化交易,盧奴耕者不僅自己寫了很多的策略模型,而且還在自己的朋友圈里征集策略來測試,當(dāng)然有許多人是不會(huì)把自己的策略分享出來的,他們以為自己的策略真的可以盈利(許多人都有這樣的錯(cuò)覺,關(guān)注其他文章可以找到答案)還有許多人需要把自己的策略轉(zhuǎn)化成程序,這樣自己就可以解放了。盧奴耕者寫了很多,廢了很大的周折排除了他們策略中模糊的部分(這一點(diǎn)傳統(tǒng)的程序員做不到,盧奴耕者對于交易的理解很容易就知道他們的模糊點(diǎn)該如何表達(dá),如何優(yōu)化)然后去測試10年歷史數(shù)據(jù),很遺憾事實(shí)證明沒有一個(gè)可以持續(xù)穩(wěn)定的盈利??赡茏罱K的回測結(jié)果是盈利的。比如十年4倍5倍等等。
但是這里盧奴耕者要說另外一個(gè)概念:一個(gè)好的交易系統(tǒng)不僅僅要最終能夠盈利,還要中間不能有大幅度回撤。就說一個(gè)盧奴耕者寫的程序,其中一個(gè)程序策略很簡單,就是簡單的K線組合界定,策略的擁有者聲稱這個(gè)策略幫助它在市場上翻了5倍。好吧,程序化實(shí)現(xiàn)。最終結(jié)果是8倍。但是,這個(gè)策略里有數(shù)次回撤在30%以上。許多人可能會(huì)說沒關(guān)系啊最后不是賺回來了嗎,說這話的人不了解交易,有些外行,如果這數(shù)次的回撤發(fā)生在連續(xù)的幾次或者間隔不遠(yuǎn)的幾次呢?如果把固定的下單量改成按照資金比例下單呢?事實(shí)證明這是不行的。以程序化為依托拿真金白銀去市場上博弈,如果不能在程序的設(shè)計(jì)階段就做到風(fēng)險(xiǎn)最小,那么交易者對自己的財(cái)產(chǎn)是極度不負(fù)責(zé)的(其實(shí)大部分人確實(shí)是不負(fù)責(zé)的)。交易本身就是在刀尖上跳舞,如果非要拿著不完美的程序化去市場上交易就不單單是跳舞了,就是在跳舞的過程中加入了劈叉的動(dòng)作。
盧奴耕者代碼庫中還有一些其他的程序化交易。這里就不多說了,因?yàn)槭O碌倪@些就沒有代表性了??戳撕芏啵瑢懥撕芏?。最后盧奴耕者發(fā)現(xiàn)這些交易系統(tǒng)都不符合市場的本質(zhì)。那么程序化的出路在哪里。最后盧奴耕者總結(jié)出了程序化生存的根本:就是捕捉市場上的必然。這里先簡單提一下,會(huì)有其他文章詳細(xì)介紹。比如美國的非農(nóng)業(yè)就業(yè)人口數(shù)據(jù)的公布,會(huì)引起美元的大幅度波動(dòng),以美元為結(jié)算的對手貨幣就會(huì)出現(xiàn)大幅度的波動(dòng),這里面大幅度波動(dòng)就是必然。只需要寫個(gè)程序在上邊做突破買單,在下邊做突破買單就是可以在模擬上穩(wěn)定盈利。這里說的模擬會(huì)肯定盈利,實(shí)盤還有其它問題,盧奴耕者會(huì)在其它文章描述。
隨著現(xiàn)在國內(nèi)的金融衍生品市場越來越國際化,程序化交易成為了交易市場的下一個(gè)風(fēng)口,盧奴耕者本人也非常看好程序化交易的未來,但是盧奴耕者對于未來能出現(xiàn)好的程序化交易持悲觀態(tài)度。首先:國內(nèi)市場的程序化交易門檻兒過高,現(xiàn)成的嵌入分析軟件的平臺(tái)所提供的編程環(huán)境并不友好。第二:對接cpt又需要強(qiáng)大的編程能力和團(tuán)隊(duì)運(yùn)作。第三:就是國內(nèi)市場的歷史數(shù)據(jù)獲取成本過于昂貴,沒有精準(zhǔn)的歷史數(shù)據(jù)就做不了回測,做不了回測就大大的增加了程序的測試成本。第四:國內(nèi)很難獲得TICK級的數(shù)據(jù)。第五:國內(nèi)市場在程序化交易上的認(rèn)知偏差,幾年不看程序化市場,現(xiàn)在出現(xiàn)了許多新的名詞比如因子,神經(jīng)網(wǎng)絡(luò),Alpha模型,人工智能、自學(xué)習(xí)等等。這些基本就是舊瓶裝新酒,現(xiàn)在程序化這個(gè)圈子什么都提,就是不提交易。
綜上盧奴耕者固執(zhí)地以為程序化的交易本身還是交易,程序化交易只不過是交易的另一種操作形式?,F(xiàn)在的程序化交易市場的各種高科技名詞的堆砌并不能直指交易的本質(zhì),看似華麗,實(shí)則無用。就像你學(xué)會(huì)了再花哨的武術(shù)架子,但是對手離你五米,你夠不到有什么用。所以這種“小資”的程序化交易代表不了未來。
盧奴耕者自信自己在交易市場是有一定閱歷的,而且當(dāng)年為了程序化也孜孜不倦的追求過,相信盧奴耕者比許多人做的都多,看得也多。在這樣的情況下盧奴耕者都沒有挖掘到一個(gè)可以盈利的程序化交易系統(tǒng),那么普通的交易者遇上真正有盈利能力的程序化交易的概率能有多少呢?少交點(diǎn)智商稅吧。尤其是在未來的一段時(shí)間,國內(nèi)市場依托于程序化交易也就是量化交易的基金和私募會(huì)涌現(xiàn)出一批又一批。擦亮眼睛,別讓人割了韭菜。
如果覺得不錯(cuò),不要忘記關(guān)注,收藏,點(diǎn)贊。如有疑問可以評論一起探討。