為什麼回測效果非常好的策略實盤卻不行? | 知乎問答精選

 

A-A+

為什麼回測效果非常好的策略實盤卻不行?

2017年06月05日 知乎問答精選 暫無評論 閱讀 47 ℃ 次

【李騰的回答(27票)】:

原因1:用到了「未來信息」。回測時,很容易在每個投資時點用到其後的數據,這樣會使策略回測表現虛高。實盤中會發現策略執行不了。

原因2:過度擬合。例如你用過去T日的平均收益率作為未來投資期收益率的預測,當選擇不同的參數T時,有時回測效果優於基準,有時劣於基準,你選擇其中回測效果最佳的那個T,自然會有尚佳的表現。如果你的策略帶有不止一個參數,那麼就能優化出效果更好的最優參數。可惜的是,最優參數擬合的通常是訓練樣本中的隨機噪音,不是規律。所以一到樣本外就失效了。

【楊改之的回答(33票)】:

本來只是看到 @清醒瘋子 回答了這個問題,順手抖個機靈,沒準備把回答說明白,懶得很。但是想到之前作為某些方向的小白在知乎裡也受益頗多,因此就多寫一些吧,算是回饋社群,也算是領證結婚給大家發喜糖^_^。

我的建議是,依次瞭解並檢驗下面的內容,原因是在我的經驗裡,這些問題出現的概率是由高到低的:

1. 算錯了。不是我亂回答好嘛,是血的教訓啊。在我做量化測試的歷史裡,回測出現有顯著盈利能力結果時,95%以上是這個原因導致的錯誤。例如,某個負號在計算時漏掉了、百分號忘記除了、不同語言下迭代0和1起始點的混淆,等等等等,往往會給出一個好到我覺得必將改變世界的結果。所以本人現在都養成了只要結果很好,一定先徹查是否算錯的習慣。

順便給個我用來判斷結果是否過好的檢測手段。鑒於我的交易策略跨度比較大,因此需要一個適用性廣泛的手段,我的做法是用期望為0的正態分佈模擬資產回報率,首先使用歷史數據估計出標準差,然後模擬n段測試期等長的回報序列,從而得到n個交易策略盈虧結果,如果實測結果在這n個結果的尾部兩端,就說明結果過好或過壞。這是單資產的交易策略,如果是多資產,融合相應的組合流程即可。當然也存在一些變種,例如求得概率結果而非直觀的盈虧結果等進行判斷。不過本人大部分時間都不會做的那麼詳細,受打擊的次數多了,稍微看看都知道是不是有問題了。

2. 未來函數。其他答案中多次出現了這個提法了,說明確實是一個根本性問題。未來函數的殺傷力在於,它會出現的不知不覺。例如一個著名的分析師語言:「在熊市末期積極建倉,在牛市末期賣出股票」,我要是知道這是末期了,我還聽你這些話幹什麼啊。還比如做量化的時候對曲線的平滑、整體模型的估計、統計特徵的提取等等,都應該注意未來函數的出現。

要控制它的出現,唯一要做的就是小心,因為邏輯中的錯誤,比前面說的「算錯了」更難以檢查出來。我自己的經驗是,在編製測試流程時嚴格按照時間順序進行,樣本內的計算就強迫自己徹底屏蔽樣本外的數據。一句話,經驗是財富。

3. 存活者偏差。這是「未來函數」族群中的王者,單獨拿出來說。下面的內容來自維基百科:

倖存者偏差(英語:survivorship bias),另譯為「生存者偏差 [1]」或「存活者偏差」。常用俗語「死人不會說話」來解釋其成因。 意思是指,當取得資訊之管道,僅來自於倖存者時(因為無從由死者獲得來源),此資訊可能會存在與實際情況不同之偏差。常見於財務金融領域之文章。

此情況常見於投資理財之節目或文章,例如當投資理財之電視節目僅邀請投資成功者上節目談論其成功投資之經驗,觀眾會將該成功投資者投資之方式,視為高成功率之投資方式,但觀眾並不會在電視節目看到以相同或類似投資方式,但最後失敗的投資者,因而高估此投資方式之成功機率。

用指數或者全市場樣本進行長期交易策略測試的同志們,請一定小心指數成分股的變更和股票退市對策略的影響!

4. 過擬合。先給定義,來自百度百科:

為了得到一致假設而使假設變得過度複雜稱為過擬合。想像某種學習算法產生了一個過擬合的分類器,這個分類器能夠百分之百的正確分類樣本數據(即再拿樣本中的文檔來給它,它絕對不會分錯),但也就為了能夠對樣本完全正確的分類,使得它的構造如此精細複雜,規則如此嚴格,以至於任何與樣本數據稍有不同的文檔它全都認為不屬於這個類別。

標準定義:給定一個假設空間H,一個假設h屬於H,如果存在其他的假設h』屬於H,使得在訓練樣例上h的錯誤率比h』小,但在整個實例分佈上h』比h的錯誤率小,那麼就說假設h過度擬合訓練數據。 ----《Machine Learning》Tom M.Mitchell

好吧,數據挖掘的人寫的東西,看來國內搞金融的人都高端大氣不願意用百科,有空我把wiki的英文翻譯過來好了。針對量化交易的小方向來說,就是說交易策略中參數用多了、或者交易流程設置過於複雜了,導致交易策略過度提取了樣本數據中的某些顯性信息,而誤讀了整體數據中的真實信息。如果你有較好的統計基礎或者計量基礎,你應該明白過擬合的含義,學界為了R方和結果顯著性不顧一切亂來的太多了,負面例子不勝枚舉,如果不太理解請補課。

5. 泛化能力。與「過擬合」關係密切,在絕大部分情況下就是「過擬合」問題導致的結果,不過含義是截然不同的,且存在例外,因此單列出來。最出名的例外就是現在紅火到爆的Deep Learning了,實際上就是隱層數增加的人工神經網絡,所以亦稱Deep Neural Network,雖然由於隱層的問題,參數一度多到無法正確估計,但是有了Autoencoder之類的處理方法之後屌絲逆襲殺掉了SVM。最近去百度的吳恩達就是這方面的專家,更不用提Hinton他老人家,Google的科技吉祥物好嘛。扯遠了,回來,下面的定義來自百度百科:

概括地說,所謂泛化能力(generalization ability)是指機器學習算法對新鮮樣本的適應能力。學習的目的是學到隱含在數據對背後的規律,對具有同一規律的學習集以外的數據,經過訓練的網絡也能給出合適的輸出,該能力稱為泛化能力。

好吧,這還是搞數據挖掘的人寫的東西。用我們這個方向上更易理解的話說就是:樣本內的數據的某些特徵規律,在樣本外的數據中也存在,這種特徵可以提取出具有盈利能力的交易策略。因此,這種存在性越強、或者說樣本外盈利能力越強,泛化能力就越強。

在我個人的交易哲學中,已知數據全部都是樣本內數據,人為劃分樣本內外的做法是學術術語,有可能會產生自欺欺人的後果。個人看法,僅供參考,而且為了交流方便我仍然會在下面使用這種學術說法。為了將這種泛化能力的欺騙性盡量降低,我的做法是在某一段樣本期內劃分樣本內外,然後將這段樣本期作為樣本內,在另一段時期做樣本外檢驗,依此迭代,能做幾層做幾層。抱歉我暫時沒法把這個流程說清楚,有靈感了我來改答案。但是確實很有效,一般做兩層,大部分好策略就不好了,根本不用實盤浪費時間浪費錢。

泛化能力是量化交易盈利的靈魂,涉及到哲學和技術兩個層面。有空我會增加這部分的內容。

6. 真實交易環境限制。@Awing Xu 寫的很好,請移步參考。

閃爍信號的問題主要出現在中長期交易中,大部分是使用日度數據進行回測造成的。解決方案包括設定一個與交易點差距的閾值,使得交易行為的到達條件不那麼敏感;或者固定在一天的某個時間點監測並進行交易,忽略其他時段的價格變動,等等。

實際交易中不可能成交的價位。

使用市場單,價位變動,單個價位容量不能滿足,市場劇烈波動影響成交價。

場內規制,莊家或報價商打止損。

這三個我統一歸納為交易中的摩擦,不知道有沒有理解錯,如有,致歉。第一個我展開說一下,由於下單環境的不同,單子到達交易所的時間也就不同,較大的時間差往往造成策略計算時的價位不可能成交的情況,波動大時尤甚。另一種情況則是流動性較低時,買賣單無法被對手及時匹配所導致的價位變動。這一問題可以通過提高議價能力、優化下單和計算環境等來緩解。第二個和第三個問題,主動的解決方案包括狹義的Algo Trading所代表的分單建倉等技術,以及對交易規則的合理應用等。這是另一個大的研究方向,不作展開。

與閃爍信號主要出現在長期策略不同,摩擦在高頻交易中極為明顯。高頻中稀薄的盈利往往會被大量摩擦蠶食,進而導致理想環境下的盈利策略失去盈利能力。實踐中,一個優秀的策略測試流程一定會考慮到摩擦因素,而針對套利類交易來說,對於摩擦損失的估計和預判甚至是整個策略的核心所在。

真實交易環境的限制涵蓋很廣。斷電、斷網、計算機故障等因素也是其中之一。肯定還有其他的問題限制,歡迎補充。集思廣益,不甚感激。

7. 策略週期。策略是有週期的,站在風口上,豬都會飛。在趨勢行情下,盤整策略會虧,在盤整行情下,趨勢策略會虧。那我用技術手段,區分趨勢行情和盤整行情呢?這是對未來行情的預測,提前固化的預測手段是具有時效性的,依然是一個大的週期問題。存不存在不會過期的盈利性策略呢,我認為有,具體的內容我會在後面混沌等內容中展開來講,因為太哲學。目前而言,我寄希望於找到一個有效週期足夠長的策略,我還沒有找到,但會繼續努力。

實際上,策略週期是「泛化能力」在時間上的著重體現,基於這個思路,我對這個性質的檢測方式仍然是兩層的樣本內外檢驗,只不過會對樣本期的長短、時段變化更為關注,研究這些變化帶來的結果的變化。到了這裡,我已經開始感到自身的軟弱無力,交易是一個看天吃飯的活計,量化交易也不例外。

-----------------------

馬上要寫混沌、社會學、哲學的東西了,有點畏懼,歇一歇先。

混沌(不是掛羊頭賣狗肉的那些東西,只是混沌的理念:長期不可預測)

心理史學(借用於科幻小說)下的多方博弈

本來想把哲學思維繼續一下,但是考慮到那更偏向於另一個問題,市場為何會波動以及波動特性,算了。

【知乎用戶的回答(16票)】:

謝邀,實盤不理想有以下幾點

策略中使用了未來函數,實際交易中不可能成交的價位。

閃爍信號,回測沒有閃爍的問題,實際交易中信號出現然後消失了,但倉位已建。

使用市場單,價位變動,單個價位容量不能滿足,市場劇烈波動影響成交價。

手續費和價差沒有包括在回測中,高頻率交易尤其敏感。

使用某一時間段市場波動,不適合現市場波動,回測要檢驗多種市場狀況。

還有因素如場內規制,莊家或報價商打止損。

長期策略問題較少,高頻問題較多。

。。。。。。。。。。

看了大伙的回答,發現少了回答一個重大問題,數據擬合。 為什麼遺漏了,是因本人覺得這是交易員和程序員開發策略的分別,國內怪圈是公司開發策略,編程員,數據發掘,交易都是同一人,不知各位情況是否一樣,我是看各公司招聘條件是這樣的。扯遠回正題。

市場只是驚人相似,不是重複。混沌理論中分型指明這一點(混沌是物理理論,請參考物理學正解),所以策略開發時不應參數優化,這是本人理解,使用一個參數是有理由的,客觀的。這裡的客觀是某些統計模型計算出的參數或不變的條件。就算主觀的參數也比優化的好,思路出來的結果,不能使用優化去改變。盡可能使用相對不變的條件作為策略開發,如果使用的條件是不斷變化的,怎麼可能設計出有統計意義的策略?

不知理解正確與否,請指點。

【陳鵬舉的回答(4票)】:

有可能是因為過度優化。

規則越是簡單的策略,比如簡單的MACD策略,實盤的結果越容易接近於回測。

使用的時間間隔單位越大的策略,實盤和回測的效果也越接近。(因為濾掉了很多「噪音」)

對參數設置很敏感的策略,稍微調高調低一下參數結果就大相逕庭的策略,也很難期望其在未來能執行得很好。

在對歷史數據回測時,如果使用了複雜的規則,加上各種奇奇怪怪的「常數」,加上反反覆覆地優化調整迴避了歷史數據中出現過的各種「陷阱」,那麼這樣優化出來的策略,很可能在實盤中會表現大大低於預期。因為這種方式優化出來的策略只適用於特定的這個歷史時期。

如果一定要用複雜的策略,那一個緩解這個問題的辦法,一是用更長時期的歷史數據回測,二是在其它品種上用同一策略回測。該策略必須在其它多種品種中表現都不會太差,具有一定的universal通用性,才能期望該策略在本品種的未來市場上同樣有效。

【劉沫沫的回答(2票)】:

未來函數

過度擬合

影響市場

這三點就不細說了。上面的回答非常好。說個觀點供大家參考:

每個人只看得見自己想看的東西! 而這個並不是真相。

我所看到的和解決方法:

1.對於期望值為正的交易策略,做短線使用最近的交易週期找到參數。參數和品種和時間有重要的關係,樣本選擇很重要。同理,長線選擇長的交易週期的參數。我覺得過度擬合的解決方法就是隨市場變化而變化參數。

2.對於一種交易系統,多品種和多週期的使用能發揮出他的效果。一種品種的樣本測試非常好,而市場變化該品種失去流動性了,長時間的震盪能把趨勢追蹤的追隨者止損致死!

3.在交易策略中,沒有融入資金管理的概念,就是策略沒問題,但是過度的重倉或是長時間的不符合預期的行情把你的賬戶爆倉了,或者你沒有執行下去的信心了,一波大行情浩浩蕩蕩讓你不知所措。

暫時想到這些,以後補充吧..

【清醒瘋子的回答(2票)】:

1?歷史不會重複。前三年賺錢的品種,可能後三年虧錢。前三年的市場特徵,可能跟後三年的市場特徵不同。

2?實際操作環境會比測試時惡劣太多。

3?手賤影響不小。

【葛枰的回答(1票)】:

我在編策略時的一些思考,不是科班出身,想法可能跟他們不同:

1未來函數

2過度擬合造成的樣本頻率太低

這兩個我不說了,也遇到過。

3瞬時波動造成的k線動作。如果你是低級別k線策略,在流動性不高的市場,遇到這種波動是無法交易的,因為容量低。如果是高流動性商品,但是打壓嚴重,或者就是對倒的利益輸送,在買單賣單上你介入不進去,除非你的是是自動下單而且通道好,打個時間差。

4如果短期策略必須對介入價格非常明確,這裡不是說高頻,不能存在人為的干預,這種買入賣出非常明確,是cross不是大於小於。

5如果是中長期策略,經典的問題就是人的問題,能堅持麼?人對他的運行影響大不大,讓一個什麼都不懂的能參與麼?回撤你應該是考慮了,也不說了。

6買賣價位上是否存在某週期內低點,或者某週期內高點的問題,這一定意義上也是未來時,我不知道你做的什麼期貨或者股票,股票的話這點尤其很嚴重,介入點選擇為當日低點,這也是用未來時,用的話必須選擇很大的滑點,或者採用分批進場。

我這個民間投資者就是想到這麼多,給個建議,按收益排列交易數據後,按時間排列統計,你會有別的發現。最後預祝題主發大財!

【李承素的回答(3票)】:

先說一下對已有回答的不同意見:

1、過去不能代表未來。事實上我們做交易大部分流派的基石就是」已有的事後必再有,已行的事後必再行,日光下並無新事(《聖經.傳道書》)「。只不過策略本身可能在過度擬合等方面犯了錯誤。

2、滑點。策略的週期越長,越偏向於高賠率低勝率的趨勢系統,滑點的影響就越小。這個一般不是實盤出問題的主要原因。

3、流動性。這個一般在回測之前就要選好,如果是高頻策略且準備大資金介入,就不要在半死不活的市場品種浪費時間。

再補充幾個沒提到的,都是實際經驗,分享討論一下:

1、回測週期匹配的問題。如果實測週期與回測不匹配,誤差就會很大。回測較短週期的數據,常常因為事件的影響或短期內大趨勢的影響等,導致「效果很好」;而回測十數年以上的大週期,實盤策略短時間內又看不出效果。這是假設你模型本身沒問題,且具有長生命力。

2、模型本身的問題。參數越多的模型,死的越快,需要不斷更新;而非常簡單的策略,卻可能是市場中的」永動機「,最多沉寂幾年,便又再生。所以想要策略長生不老,需在優化和過度優化中做個選擇,也可能是在收益率與策略生命中的選擇。

3、資金管理的問題。回測只是解決了出入場信號的問題,要把倉位管理加入到回測當中。如果回測和實盤都使用同樣的資金管理系統,偏差不會太大。

4、心理。大家都提了,但是再多的強調也不為過。如果純自動交易,則不存在。

【楊影楓的回答(3票)】:

@楊改之在理論方面其實答得已經相當全面了,我就從實際交易經驗來說說平時如何對策略進行回測和未來效果預估。

1

回測結果來看,首先如果你的策略超級賺錢,年化收益率/最大虧損值能達到20倍以上,每年獲利都超過200-300%,那麼最大的可能是——————你用到了未來函數。仔細檢查流程,看是否在某個環節會用到了在實際情況中不可能得到的市場信息。比如在一分鐘開始階段就用到了本分鐘的最高最低價,或忽略了K線內最高最低價產生的先後順序。最好的杜絕未來函數的方法是在回測時編程採用流程控制,將行情數據每個tick推入,得到交易結果。

2

檢查參數使用數目。很顯然,參數使用越多,策略泛化能力的越差。就日內趨勢類策略而言,在回測時需要遍歷的參數最好不要超過三個。當然具體還是要視策略本身的構造和樣本內外測試結果而定,不能一概而定。

3

交易頻率判斷,交易頻率越低,策略的泛化能力越差。交易頻率低,說明策略本身就是參數優化後找到的特例結果。

4

觀察本身市場結構是否發生了變化,策略本身都有自己的適應點和不適應點,進入市場後很可能正好運氣不好,趕上了不適應期。所以要對本身策略有一定的宏觀理解,來判斷當前行情是應該賺錢還是虧錢,判斷如果虧錢是因為本身行情層面不給力還是策略層面出了問題。

5

其他交易細節,比如報單時延、期望成交價格拿到概率、平均滑點、其他交易規則限制等等等等就不一一列舉。

【知乎用戶的回答(3票)】:

先膜拜一下LZ,問了好多問題,好勤奮。

開始正題。

像未來數據,滑點等顯而易見的原因我就不多說了,這些都很容易理解。

主觀投資方法也不多說了,因為和主題無關。

其實一直困擾我的問題更有點像「哲學」問題:

這個問題的一種提法是:

我們能用數學模型預測未來嗎?

換一種我認為更好的問題提法:

我們能用數學模型逼近乃至完全描述世界(金融產品)的運作規律嗎?

第一種提法是第二種提法的必要非充分條件。

換句話說,

如果我們能用數學模型逼近世界(金融產品)的運作規律,

那我們就有了真實的預測能力。

簡單一點,我用「模型對規律的逼近度」這個描述來替代上面的描述。

為了解釋這個問題,要先闡述三個我自己的觀點。

一、物理世界和人類社會的建模,就規律逼近度上講,本質上沒有區別,只是強弱的問題。

比如,物理模型的規律逼近度會很強 —— 牛頓三大定律那麼好用;

經濟學的規律逼近度就差很多,經濟學的預測能力,大家都懂的。

所以簡單說一個模型行不行,那是不科學的。

比如說牛頓三大定律就是真理,經濟學就是狗屎,很不理性。

我們真的只能說(樂觀估計):「這個模型有多行?」

二、模型的規律逼近度只是度量相關關係,而非因果關係

大部分人,包括我自己在內,未必真正理解什麼叫做因果關係。

在經濟學中,老師經常告訴大家,要先尋求經濟意義,再進行建模。

相對層面上,這樣看起來確實很有效。

但往深了想,我們所謂的「意義」,未必那麼有意義。

舉幾個例子,也許會更容易理解。

為什麼蘋果會掉到地上?

牛頓說,是因為有地球引力。

愛因斯坦說,是因為地球附近的空間彎曲了。

我說,因為有一群無法看到的調皮神仙,會把每一個蘋果按到地上。

這個例子告訴我們說,所謂因果關係,其實跟我們看問題的角度有關係,而這個角度是我們可以自己臆造的。用比較現代的語言來講,可以弱弱理解為「假說」(並不準確)。

再舉一個例子,「雄雞一唱天下白」

這兩者明顯不是好的因果關係,

更好的(未必是真的因果)「因果關係」是,

太陽出來了,所以雄雞叫了,所以天下白了。

這個例子告訴我們,很多有明顯相關關係的事情,很可能並不具有我們想像的因果關係。

再舉一個例子,「種豆得豆,種瓜得瓜」。

可是,種豆未必得豆,種瓜未必得瓜呀。

如果天氣不好,種豆也不會得豆。

如果土壤很差,種豆也不會得豆。

如果沒有水,種豆也不會得豆。

所以天氣、土壤、水等等缺一不可。

那麼憑什麼說「種豆」跟「得豆」是因果關係呢?

我們甚至都不能賦予「種豆」這一因素更大的權重 —— 因為任何因素都是缺一不可的。

這個例子告訴我們,我們往往以為的主要原因,從絕對理性的角度講,其實只是我們的「近視「和偏見。

所以因果其實是非常複雜的事情,用數學或者邏輯的方法實在是沒辦法搞清楚的。

然而,好消息是,對預測來說,我們也並不需要搞清楚因果關係才能賺錢。

我們只要知道雄雞一叫,天就大概率要亮了,這樣就已經足夠賺錢了。

所以從內心深處上講,我是比較反對花太多時間講經濟意義、邏輯道理的,又沒用還特浪費時間。

(但是為了說服別人,我經常也裝模作樣地說一些道理和意義,還聽起來都特別有道理,哈哈。)

三、假設的實證比推理過程更重要

學過經濟學的都知道,所有的經濟理論都是先有一系列的假設,再通過數學推理得到的。

在這裡,很多人往往會有一種傾向,總覺的那一系列的高大上的推理是最重要的。

但在實際中,恰恰相反,假設的實證最為重要 —— 有多少人還記得每一個理論背後的假設?

問題的關鍵是,現實肯定不會完全滿足假設條件。

那麼這個差距究竟會對模型造成多大的影響?

這其實才是實際投資中的核心問題。

但這些問題在傳統經濟金融學中,往往涉及的非常少(也可能是我孤陋寡聞)。

綜上所述,要進行量化投資建模,步驟其實是:

1. 建立相關性假設(不是因果關係),比如A -> B

2. 量化描述相關性假設

3. 實證(不是推理)假設的歷史有效性

4. 判斷假設的未來有效性

我們用一個簡單的趨勢跟蹤策略來描述之:

1. 相關性假設是,如果出現了較大的趨勢,那麼趨勢會大概率延續

這裡有一個很大的陷阱是,老是想通過什麼羊群效應或者高大上的行為金融學去找解釋,找原因,不信的話,可以試試看,現實的耳光會無情地扇在你的臉上。

2. 我們簡單一點,上穿均線買入,下穿均線賣出。

3. 哇,回測結果好棒!

4. 實盤虧死了T_T...

問題出在哪裡?

1. 趨勢會延續這個相關性假設真的很有「規律逼近度」嗎?

2. 量化描述沒有別的更好的方法嗎?

3. 回測是唯一標準嗎?

4. ......

其中第1,3點是最難的。2也不容易,但相對簡單。

對1來說,用數學的方式沒辦法證明,最多證偽。

2是數學建模的內容,水平有限,也不多說了。

3是我想講的重點。

先舉一個極端變態的例子:

我們現在已經知道今天每一分鐘的股指漲跌情況:

我寫出以下策略:

if(time=9:15:00)

買進,持倉一分鐘平倉賣出

if(time=9:16:00)

賣出,持倉一分鐘平倉買進

if(time=9:17:00)

....

總共有270個。

然後根據每分鐘的實際情況,把買進或者賣出,填上去就可以了。

如果你更勤奮一點,可以再加上日期,擴大樣本,一直寫下去:

if(time=20140611 - 9:16:00)

....

回測百戰百勝吶!

很變態吧,很無語吧。

先不要著急批判這個策略。

實際上,有時候很多策略看起來非常有邏輯道理,

但實際上已經掉到這個陷阱裡面去了,還渾然不覺。

這個陷阱有一個很好聽的名字,「過度擬合」。

如何避免過度擬合?

我的結論是,數學上,我們只能給出一些置信度什麼的,

但真的沒辦法完全排除過度擬合的嫌疑。

極端一點,牛頓三大定律,

其實也是對世界的擬合,

只不過擬合的置信度很高 —— 衛星不都轉得好好的嗎?

但是到了微觀世界或者光速世界,就又完全不一樣了。

怎麼辦?

有人會說,那我分兩組樣本,一組建模,一組測試,不就好了。

可是,這也一種擬合,因為不好的策略在你測試的時候,也被扔掉了,所以本質上並無差別。

再高級一點,還有很多看似好用的標準:

參數優化的時,收益對參數變化不能太敏感。

收益在參數空間中的分佈是比較連續的。

等等。

這些有用嗎?我覺得未必。

另外,還有一個概念,很多人容易忽視:

為了解釋這個概念,我們建立一個簡單的模型:

假設我們只買入,一段時間後賣出。

我們的目的是為了挖掘A->B的模式,

其中A代表一種技術形態,B代表買入後收益的分佈。

目標就是:在樣本中找到盡可能多的A,讓B對我們更有利。

在做這件事情的過程中,

很多人只關心如果出現A,再出現B的概率。

但事實上,有一件事情非常重要,

那就是A->B在整個樣本中的概率有多少。

很多人死在這個上面了,特別是高頻策略中。

為什麼這麼說?

先舉一個簡單的例子:

我們做一個策略:

在一分鐘線上,如果股指一分鐘上漲超過2%,我們馬上賣出,持倉5分鐘後賣掉。

這個估計只會交易一次,就是光大8.16事件那次。

然後賺錢了。

有人會說,不對呀,你的交易樣本太少了,只有一個,沒有統計意義。

我承認,沒有統計意義。

但事實上,交易樣本絕對數量是一個標準,還有一個標準是,交易樣本佔整個樣本空間的比例。

比如如果,你有10億的樣本 ,

你找到了一個交易1000次的策略表現很好,

但由於1000次在10億次當中的比例實在太小了,

我們完全有理由懷疑,這只是隨機效應。

很多高頻策略,失效極快,

未必是跟市場變得有效有關係,也許策略本來就無效。

這個判斷標準在關聯分析中叫做支持度,同樣地,也有置信度。

當然,支持度,置信度也都是人為設定標準的。

那麼什麼標準最合適?誰都不知道,只能憑運氣和經驗。

總之,由於科學理論的只可證偽性,連牛頓三大定律都可以失效,

那麼回測很好,實盤失效那實在是太正常不過了。

---------------------------

PS:

我本人是從相對精確的計算機科學走到量化投資這種模糊科學的,

以前習慣了用精確的形式去描述一件事情,當涉及到模糊描述時,

我內心其實也是有點掙扎,那種不能完全確信的感覺如同魅影。

這也直接導致了我在使用回測很好甚至實盤很好的策略的時候,

都戰戰兢兢,如履薄冰,總覺得不那麼靠譜。

希望有高人能幫忙解惑,不勝感激。

【知乎用戶的回答(1票)】:

too good to be true,這句話從來不會錯,恩。謝邀。我記得相似的問題知乎已經有了,為什麼又……回測只是交易策略開發的一小部分,大部分的回測都是不嚴謹的,要不然citadel花那麼大血本存數據幹嘛……況且市場變化那麼快,去年能賺錢的策略今年不賺錢很正常

【知乎用戶的回答(0票)】:

沒有永動機

【蘭色的回答(0票)】:

我必須認真回答一下這個問題,又要避免太長

首先, @清醒瘋子 說的不對,歷史會重複,這是我們進行技術分析的基礎,專業的說法是「歷史不會簡單的重複」所謂簡單,這裡面學問大了,和社會主義初級階段中的初級一樣深不可測

你想弄明白為什麼回測和實盤不一樣,答案其實在回測和實盤的區別裡

1、實盤是盲人摸象,回測至少你大概知道之後的結果

2、實盤裡你沒有足夠的耐心,因為回測你可以在幾分鐘內走完幾年的k線,主要的差距在心理變化,而心理變化比技術重要得多

3、實盤你有真實倉位的心理壓力,回測你也沒有

4、如果你不是利用真正的回測來做單,而是打開k線,不做遮蔽,,看一下頂底,找一下頂底的特點,然後對自己說頂底都符合我的判斷,我應該下單、平倉,等等,那之前的1-3你都不用看。

【Jameswang的回答(0票)】:

有的策略對盤口的micro structure要求很高.比如股指跨期.如果回測,很多單子都能成交.實盤的時候,大家都在搶啊.那回測的就肯定傻了啊.

【KaiserLi的回答(0票)】:

堅持的時間不夠長,資金不夠多。

【知乎用戶的回答(0票)】:

引用 拉斯.特維德 的《金融心理學》:

現在,讓我們總結時間和無知之神秘力量的四項基本原理

第一項原理:市場走在前面。目前所有的和潛在的投資者的中的看法通常不是某個人所能掌握的。也許「其他人」知道一些我們不知道的事情?我們永遠不能確信。我們不得不承認,要走在市場惹事並且在價格上笑話此認識之前,是一項艱巨的任務。

第二項原理:市場是非理性的。市場可能對時間反應非常快,但這同樣是主觀的,感情的並且被狂想所控制,這種狂想又被變幻的趨勢所左右。有時候,價格與投資者的經濟情況和利率同步波動,在大眾的瘋狂和冷漠中搖擺不定,而不是由證券價值決定。每個投資者都試圖理性,但實際上卻表現出非理性行為。

第三項原理:環境是混沌的。宏觀經濟預測通常太不精確,對投資無任何幫助。尤其明顯的是,由於經濟間的相互關係常常受到小的,但非常關鍵的細節影響,這種細節可能改變一切,但無人可以預測到或猜測到。更糟糕的是:上述原理同樣適用於金融市場。

只要市場存在一天,上述原理就一直適用。雖然不是所有人都明白其真正含義。

但是現在還有第四項原理,這是由於那些使用技術圖形分析市場的技術分析師們創立的。這條原理是:圖形是自我實現的。如果許多人在相同的圖形上畫出相同的線,並且輸入到裝有相同決策軟件的計算機中,則其效果是自我強化的。因此這第四項原理是:

第四項原理:圖形是自我實現的。如果許多人使用同樣的圖形系統,他們可能從中活力,而無論這些圖形的實際含義是什麼。

——————————————————————————————————————————

之前看過這本書,直接搬過來。

【知乎用戶的回答(0票)】:

市場加速進化。兩個意思,一,市場是進化的。二,進化是加速的。

【何子垠的回答(0票)】:

不邀自來

主要是我對程序化很感興趣,現在一直在做。回測數據失真,最主要原因還是未來參數的影響,具體的,前面幾位老師說的很詳細了。

我想說說自己的體會,我不懂編程,都是寫好策略,找期貨公司裡的程序員做。之前就知道未來參數的影響,不僅是優化回測數據,而且真正交易時,由於參數過多或是滯後,可能會帶來交易次數的下降或是頻繁止損。所以我盡量少用參數,多是用K棒組合配合均線來描述,能不用系統指標就不用,最後發現,有些可以用語言描述的,無法準確的反應到計算機程序中,想用計算機語言把各種K棒形態描述清楚,對我來說比較困難,現在依舊在努力中……

其實凡事易簡不易繁,程序員給我做了個演示,就幾句程序:30日均線上多,線下空,虧10%平,回撤30%止盈,用四年的豆粕數據回測,四年收益10倍多。我當時看完很震撼,其實就這麼簡單,可很少有人這麼做,即便是主觀長線趨勢性交易,即便做對了,能拿的住的有幾個。

程序化目的是求穩,絕對收益是次要的,只是大多數人都即要收益,又想省事,這是肯定不行的,不要奢求太多,幾套策略跑,一年復合收益率超五成的,就是非常優秀的程序化交易了

標籤:-對沖基金 -期貨 -量化交易 -外匯投資


相關資源:





給我留言