某派
量化投資進階系列
下載 App
演算法交易精讀 封面

演算法交易精讀

流派 · 量化投資
大師 · 進階系列
聽 56 分鐘解讀 · 讀約 11,981 字精讀
在某派 App 聽音訊解讀
一句話定位 從策略靈感到實盤執行,演算法交易全流程的真實陷阱與正確路徑

這篇講什麼

陳博士是華爾街從業三十年的量化老兵。這本書把演算法交易從策略設計、回測、執行到風控的全流程講透——給真心想動手的量化進階者。

二零零八年,金融危機最慘烈的幾個月,全球股市哀鴻遍野。但某些交易室裡,有人面色平靜地坐在螢幕前——他們的程式每隔幾秒自動發出指令,漲跌都不影響它的節奏。這個畫面,很多人覺得離自己很遠。要麼以為是天才專屬,要麼以為要有千萬資金才玩得起。但陳耀榮在這本書裡說的第一件事就是:演算法交易不是魔法,是一套可以學、可以搭、可以一步步最佳化的系統。真正讓人意外的是,他告訴你:有效策略的起點,往往不是數學公式,而是你對市場的某個直覺觀察。那個「感覺某隻股票財報前總會異動」的念頭,其實就是策略靈感的雛形。量化做的事,是把這個念頭變得可驗證、可重複。從想法到程式碼,從回測到實盤,中間有哪些坑會讓你在賬面上賺錢、在現實裡虧錢——這本書把這條路上的每一個關鍵節點都攤開來講清楚了。

誰該讀這一篇

本篇 6 個核心觀點

試聽第一章音訊解讀

第 1 章 · 策略設計:從想法到程式碼
知性男聲 · 約 14 分鐘
App 內還有 220+ 大師案例都已配音訊解讀 下載 App 繼續聽 →

精讀全文

第 1 章 · 策略設計:從想法到程式碼

你有沒有想過,一個讓你賺錢的交易想法,從腦子裡蹦出來,到真正在市場上自動執行——中間到底要經歷什麼?今天我們就從最開始的地方說起:一個策略,是怎麼從一個念頭,變成一行行程式碼的。

想象一個場景。

二零零八年,金融危機最慘烈的那幾個月。全球股市一片哀嚎,無數投資者在恐慌中割肉。但在某些交易室裡,有一群人坐在螢幕前,面色平靜。他們的程式在自動執行,每隔幾秒鐘就發出一筆交易指令。漲也好,跌也好,程式不恐慌,不貪婪,只是冷靜地執行它被設計好的邏輯。

這就是演算法交易。

不是魔法。不是天才專屬。是一套可以學習、可以搭建、可以最佳化的系統。

---

**先說這本書要講什麼。**

陳耀榮寫的這本《演算法交易》,是一本非常務實的書。它不講玄學,不講「感覺」,講的是:你怎麼把一個交易想法,變成一套真正能跑起來的系統。

我們會分四章來讀。

第一章,也就是今天,我們從最源頭開始——策略是怎麼來的,資料要怎麼準備,用 Python 搭建框架是什麼意思。這是地基。

第二章,我們聊回測的陷阱。很多人做了回測,覺得策略很美,結果一上實盤就崩了。為什麼?問題出在哪裡?

第三章,我們進入執行系統。有了訊號,怎麼變成真實的訂單?市價單、限價單、拆單策略,這些細節決定你最終到手的收益。

第四章,我們落腳到風控和上線。一套策略,怎麼安全地推進實盤?怎麼防止一筆意外交易毀掉整個賬戶?

四章讀完,你會對演算法交易有一個完整的輪廓。

好,現在進入今天的主題。

---

**策略從哪裡來?**

很多人以為,演算法交易的策略是數學家在黑板上推匯出來的。

錯了。

陳耀榮在書中有一個核心觀點:大多數有效的策略靈感,來自於對市場現象的直覺觀察,而不是純粹的數學推導。

停一下,想想這句話。

你有沒有注意到,某隻股票在每個季度財報釋出前,價格會有規律地波動?你有沒有發現,某類資產在特定時間段,成交量會突然放大?這些「注意到」,就是策略靈感的起點。

量化交易的本質,不是用數學替代思考。而是用數學,把你的思考變得可以驗證、可以重複、可以擴充套件。

策略靈感的來源,大概有這幾類。

**第一類:學術研究。**

比如「動量效應」——過去一段時間漲得好的股票,未來短期內往往還會繼續漲。這個現象在學術文獻裡被反覆驗證過。你可以把它拿來,變成自己的策略框架。

**第二類:市場微觀結構。**

訂單怎麼撮合?大單拆分會怎麼影響價格?做市商是怎麼行動的?這些細節,藏著很多可以被利用的規律。

**第三類:跨市場關聯。**

A 市場漲,B 市場有沒有可能滯後跟漲?期貨和現貨之間,有沒有價差可以捕捉?

**第四類:宏觀與季節性規律。**

「一月效應」你聽說過嗎?很多市場在每年一月份,有統計上顯著的異常收益。背後是機構年底調倉、稅收結算等因素共同驅動的。

但是——

有想法,只是第一步。

---

**資料,才是真正的戰場。**

你想驗證一個想法,你需要資料。

但資料這件事,遠比大多數人想象的複雜。

陳耀榮在書中寫道:髒資料是量化策略失敗的最常見原因之一,很多人在回測裡看到的「盈利」,其實是在對錯誤資料的過度擬合。

這句話,值得反覆聽。

什麼是髒資料?

舉個例子。你下載了一份歷史股價資料,裡面有一天的價格是零。或者,有一天的收盤價比開盤價高了百分之五十,但實際上那天沒有任何重大事件。這種資料,就是髒的。

如果你拿這份資料做回測,你的策略會「學到」一個從來不存在的規律。然後你信心滿滿地上實盤,然後虧錢。

**歷史資料採集,要注意什麼?**

第一,來源要可靠。

不同資料提供商,對同一段歷史的記錄可能不一樣。價格復權的方式不同,結果會差很多。你要知道你用的是前復權還是後復權,這兩種處理方式對策略的影響是不同的。

第二,要處理「倖存者偏差」。

這是一個特別容易被忽視的陷阱。你現在能查到的股票列表,都是「活下來的」公司。那些已經退市的、破產的公司,資料裡沒有。如果你只用現存股票的歷史資料做回測,你的策略會系統性地高估收益。

想想看——

你在過去二十年裡,只研究那些「活到今天」的公司,你當然會發現它們大多數都在上漲。但那些中途消失的公司呢?它們的虧損,不在你的資料裡。

這就是倖存者偏差。

第三,時間戳要對齊。

不同市場、不同資產,資料的時間戳可能有偏差。如果你在做跨資產策略,時間對齊是基礎中的基礎。一秒鐘的偏差,在高頻策略裡可能就是生死之別。

**什麼叫「乾淨資料集」?**

陳耀榮給出的標準很清晰:

一,沒有缺失值,或者缺失值已經被合理處理。

二,沒有異常值,或者異常值已經被識別和標記。

三,價格已經正確復權,反映真實的歷史收益。

四,資料的時間範圍和頻率,和你的策略邏輯是匹配的。

這四條,缺一不可。

---

**Python,為什麼是首選?**

現在聊聊工具。

為什麼量化交易圈子裡,Python 幾乎成了標準語言?

不是因為它最快。C++ 比 Python 快得多。

是因為它最「省力氣」。

Python 有大量現成的庫。處理資料,有 Pandas;做數學計算,有 NumPy;畫圖分析,有 Matplotlib;做機器學習,有 Scikit-learn。你不需要從零開始寫每一個功能,你只需要把這些積木拼起來。

對於個人投資者和中小型量化團隊來說,開發速度比執行速度更重要。策略想法變成可測試的程式碼,Python 是最快的路徑。

**一個 Python 策略框架,基本長什麼樣?**

陳耀榮在書中描述了一個基礎框架,大概分這幾個模組。

**第一個模組:資料獲取層。**

負責從外部拉取歷史資料,儲存到本地。這一層要做好容錯處理——網路斷了怎麼辦?資料來源返回錯誤怎麼辦?

**第二個模組:訊號生成層。**

這是策略的「大腦」。你在這裡寫你的邏輯:什麼條件下買,什麼條件下賣。比如,五日均線上穿二十日均線,發出買入訊號。

**第三個模組:回測引擎。**

把訊號放到歷史資料上跑,模擬交易,計算收益、最大回撤、夏普比率等指標。這是驗證策略的核心工具。

**第四個模組:執行介面。**

連線經紀商或交易所的 API,把訊號變成真實訂單。這一層在實盤階段才會用到。

**第五個模組:風控模組。**

設定倉位上限、止損條件、異常檢測。這是保護你賬戶的最後一道防線。

這五個模組,構成了一個完整演算法交易系統的骨架。

---

**一個當下的對映案例。**

說到這裡,我想聊一個很多人現在都在做的事情——用 A 股的量價資料,搭建簡單的趨勢跟蹤策略。

邏輯很樸素:價格突破近期高點,成交量同步放大,買入;價格跌破近期低點,賣出。

聽起來簡單。

但實際操作裡,資料準備這一關就能卡死很多人。

A 股有漲跌停板制度。某一天,一隻股票漲停,次日開盤直接跌停。這種極端情況,在資料裡怎麼處理?直接用原始價格,還是做平滑處理?

還有,A 股有大量的停牌記錄。停牌期間沒有成交,復牌後價格可能跳空。這段資料,要不要納入回測?

這些問題,不是演算法問題,是資料問題。

處理不好資料,你的策略在回測裡可能表現得很好,但它實際上是在對歷史的「噪音」過擬合,而不是在捕捉真實的市場規律。

這就是為什麼,陳耀榮把資料準備放在策略設計的最前面。

地基不穩,樓蓋得越高,倒得越慘。

---

**今天的內容,做一個小結。**

策略從觀察和直覺出發,但要用數學和程式碼來驗證。

資料是一切的基礎,髒資料會讓你在虛假的「盈利」裡沾沾自喜。

Python 給了我們一個高效的框架,讓想法可以快速變成可測試的系統。

但是——

有了策略,有了資料,有了程式碼,你是不是就可以放心地去回測了?

等等。

回測,真的是你以為的那麼簡單嗎?

為什麼那麼多人,回測結果漂亮得像夢,一上實盤就全崩了?

問題出在哪裡?是資料出了問題,還是測試方法本身就有根本性的缺陷?

下一章,我們專門來拆解這個問題——回測的陷阱,到底藏在哪裡?

第 2 章 · 回測的陷阱:為什麼很多人被騙

你花了三個月,寫出一套回測收益率高達兩百percent的策略。興奮、激動、準備梭哈。

但等等。

這個數字,是真實的財富,還是你親手給自己設的一個局?

上一章我們講了演算法策略從零到一的搭建過程——怎麼找靈感、怎麼清洗資料、怎麼用 Python 把一個交易想法變成可以執行的程式碼。核心是:乾淨的資料加上清晰的邏輯,才是策略的地基。今天我們來看第二章,也是很多人踩坑最深的地方:**回測的陷阱。**

---

先說一個真實的歷史場景。

時間回到二零零五年前後。

美國量化對沖基金行業正在爆發式增長。大量頂尖數學家、物理學家湧入華爾街,帶著他們的模型和回測報告。那時候有一種說法,叫「因子淘金熱」。

誰挖到了新因子,誰就能跑贏市場。

於是,各家基金開始瘋狂地在歷史資料裡「挖礦」——測這個變數,測那個變數,測完一批再測一批。有人發現,某個星期三的月亮相位和次日股價漲跌有統計相關性。有人發現,某類公司名字裡字母數量少的,歷史回測收益更高。

聽起來荒唐嗎?

但他們的回測報告,數字漂亮得讓人心跳加速。

然後,這些策略上線了。

結果呢?

**虧了。**

不是小虧。是系統性地、大規模地虧。

為什麼?

因為他們掉進了回測最深的那個坑——

**資料窺探。**

---

陳耀榮在書中寫道,資料窺探(Data Snooping)是量化策略中最隱蔽的致命錯誤。它的本質是:你用同一批歷史資料,反覆測試了幾十個、幾百個策略,然後挑出那個「表現最好」的,宣佈它有效。

停。

想一想這個邏輯。

你拿一枚硬幣,拋了一百次,記錄結果。然後你「發現」:每次拋硬幣前喝了咖啡的那幾次,正面朝上的機率更高。

這是規律嗎?

不是。

這是**噪音被當成訊號。**

歷史資料是有限的。你測試的策略越多,你從這批資料裡「挖」出來的所謂規律,就越有可能是純粹的隨機巧合。這就是資料窺探的本質——你不是在發現市場的邏輯,你是在給自己的資料集量身定製了一套衣服。

這套衣服,只適合這批資料。

放到真實市場裡?

**撐不過三個月。**

---

與資料窺探緊密相連的,是另一個詞:

**過擬合。**

Overfitting。

陳耀榮的核心觀點是:一個在歷史資料上表現完美的模型,往往是過擬合的受害者。引數越多、規則越複雜,模型就越能「記住」歷史,但也越沒有能力「預測」未來。

打個比方。

你在準備一場考試。你把去年的真題做了一百遍,每道題的答案都背得滾瓜爛熟。

結果今年出了新題型。

你懵了。

過擬合的策略就是這樣。它在歷史資料上的「考試」成績滿分。但市場每天都在出新題。

那些引數調得過於精細的策略——比如「當五日均線上穿二十一日均線,且 RSI 介於四十三到五十七之間,且當天成交量比昨天多百分之十二點七……」

這種策略,可能在歷史資料裡表現絕佳。

但你要問:為什麼是二十一日,不是二十日?為什麼是百分之十二點七,不是百分之十二?

**答不上來。**

答不上來的引數,就是過擬合的證據。

---

說到這裡,我們要引入一個極其重要的概念區分:

**樣本內(In-Sample)**

**樣本外(Out-of-Sample)**

這是回測裡最核心的邊界線。

樣本內,就是你用來「訓練」策略、調整引數的那段歷史資料。樣本外,是你用來「檢驗」策略真實表現的另一段資料。

很多人的回測流程是這樣的:

拿到十年曆史資料。在這十年資料上調參、最佳化、再調參。最終找到一套「完美」引數。宣佈策略有效。

問題在哪?

他們用來「檢驗」的資料,和用來「訓練」的資料,是**同一批**。

這就好比你出了一道數學題,自己做完,然後自己改卷,給自己打了滿分。

**這不叫驗證。這叫自欺欺人。**

正確的做法是:把資料嚴格切分。前七成用來訓練,後三成封存起來,等策略定型之後,才拿出來做一次性檢驗。

而且,這個樣本外檢驗,只能用**一次**。

用了第二次,它就又變成了樣本內資料。

---

但即使你做到了樣本內外分離,還有一個更深的陷阱在等著你。

**滑點假設。**

陳耀榮在書中專門強調這個問題,因為它是最容易被新手忽略、也是最能直接毀掉一個策略的細節。

什麼是滑點?

你在回測裡下了一筆買單,價格是一百元。但在真實市場裡,你的訂單發出去的時候,市場已經動了,成交價可能是一百零一元,或者一百零二元。這個差價,就是滑點。

聽起來很小?

一筆交易差兩元,好像無所謂。

但演算法交易的本質是**高頻次**。

一天下單五十次。每次滑點兩元。一天就是一百元的額外成本。一年交易兩百五十天,就是兩萬五千元。

這個數字,足以把很多策略的利潤**徹底吃掉**。

更危險的是那些依賴「精確到分鐘」的高頻策略。在回測裡,你假設每筆交易都以當前報價成交。但現實中,你的訂單本身就會影響價格,尤其是在流動性差的市場裡。

**你以為你在測試一個策略,實際上你在測試一個不存在的市場。**

---

那麼,有沒有一種回測方法,能夠更接近真實?

有。

它叫做:

**Walk-Forward 測試。**

滾動前推測試。

這是陳耀榮在書中重點介紹的方法,也是專業量化機構的標準流程。

它的邏輯是這樣的:

把整段歷史資料切成很多小段。第一段用來訓練,緊接著的一小段用來檢驗。然後向前滾動一格,第二段用來訓練,再接著的一小段用來檢驗。如此迴圈,直到資料用完。

這樣,每一次檢驗用的都是「未見過」的資料。你得到的不是一個單一的回測結果,而是一系列在不同時間段、不同市場環境下的真實表現。

如果策略在大部分時間段都表現穩健,說明它可能捕捉到了真實的市場規律。如果只在某幾段特別好,其他時段一塌糊塗,那很可能——

**你的策略只是碰巧適配了那幾段特殊的歷史。**

Walk-Forward 測試不能完全消除回測的陷阱,但它讓你看到的圖景,比單次回測真實得多。

---

說到這裡,我想講一個當下的案例。

近幾年,隨著人工智慧的普及,有一類「AI 選股策略」在各種社群和平臺上廣泛流傳。它們的共同特點是:回測收益驚人,夏普比率漂亮,最大回撤極小。

釋出者往往會附上一張圖,顯示從某年到某年,淨值曲線幾乎是一條完美的斜線向上。

但如果你仔細問他們:

這個策略是在什麼時間段訓練的?

樣本外驗證做了嗎?

滑點和交易成本是怎麼假設的?

Walk-Forward 測試透過了嗎?

絕大多數情況下,你會得到沉默,或者一句「這個不重要,你看收益就好了」。

**這就是資料窺探和過擬合的現代版本。**

工具換了,陷阱沒變。

---

最後,我想說一件更根本的事。

回測的陷阱,不只是技術問題。它是一個**心理問題**。

人類天生討厭不確定性。我們喜歡看到漂亮的數字,喜歡相信自己找到了規律,喜歡把過去的成功當成未來的保證。

回測給了我們一種「掌控感」的幻覺。

數字越好看,幻覺越深。

但市場不是歷史資料的重播。它每天都在變化,每天都有新的參與者、新的資訊、新的規則。

一個誠實的量化交易者,應該把回測看作什麼?

**不是答案。是起點。**

是用來篩掉明顯錯誤想法的工具,而不是用來「證明」自己聰明的證書。

---

好,我們停一下,整理一下今天的核心內容。

資料窺探——用同一批資料反覆挖規律,噪音被當成訊號。

過擬合——引數越精細,策略越「記住」歷史,越無法適應未來。

樣本內外分離——訓練用的資料和檢驗用的資料必須嚴格隔離。

滑點假設——忽視交易成本,回測收益是假的。

Walk-Forward 測試——滾動驗證,讓策略在不同時間段接受考驗。

這五個概念,是每一個量化交易者必須刻進腦子裡的東西。

---

但是,等等。

就算你的策略透過了所有這些檢驗,回測結果真的可信了——

然後呢?

你怎麼把這個策略,真正地執行到市場裡?

一個訊號發出來,你是用市價單還是限價單?

你的大額訂單,怎麼拆分才不會把自己的成本推高?

經紀商的介面,又藏著哪些你不知道的坑?

**下一章,我們來聊聊演算法交易裡最容易被忽視的戰場:執行系統。**

第 3 章 · 執行系統:從訊號到訂單

你有沒有想過——策略再完美,如果下單的那一刻出了問題,一切都白費?回測賺錢,實盤虧錢,很多時候不是策略錯了,是執行系統出了問題。今天我們來拆開這個黑盒子。

上一章我們講了回測的陷阱。

核心是什麼?

過擬合、資料窺探、樣本外測試——這些坑,讓無數人在歷史資料上賺得盆滿缽滿,真金白銀下場卻輸得一塌糊塗。我們說,回測只是入場券,不是通關證。

今天,我們來看第三章。

假設你已經躲過了那些陷阱。你的策略透過了嚴格的樣本外測試,邏輯清晰,資料乾淨。

然後呢?

然後你要把訊號,變成真實的訂單。

這一步,聽起來簡單。

錯了。

---

先說一個場景。

時間回到二零一零年五月六日。

美國股市開盤後一切正常。下午兩點四十五分左右,道瓊斯工業指數開始異常波動。

然後——

崩了。

短短幾分鐘之內,道指暴跌將近一千點。

一千點。

這不是幾天的跌幅,這是幾分鐘之內發生的事。

後來這個事件被稱為「閃崩」,英文叫 Flash Crash。

調查結果顯示,觸發因素之一,是一個大型機構的演算法執行系統,在市場流動性已經開始枯竭的情況下,仍然按照預設邏輯持續大量賣出。

它不是在做壞事。它只是在執行命令。

但執行方式,錯了。

這就是執行系統的力量——它可以讓一個好策略落地,也可以讓整個市場在幾分鐘內失控。

---

好,我們從頭說起。

訊號產生之後,第一個問題是:

用什麼型別的訂單?

陳耀榮在書中寫道,最基礎的選擇,是市價單和限價單的取捨。

市價單,就是「我要現在買,不管價格」。

限價單,就是「我要以這個價格買,不成交就算了」。

聽起來很簡單對不對?

但背後的邏輯,完全不同。

市價單的優點是確定性——你一定能成交。缺點是,你不知道會以什麼價格成交。市場波動劇烈的時候,你以為你在買十塊錢,實際成交可能是十塊二,甚至十塊五。

這個差距,叫做滑點。

滑點。

在回測裡,很多人預設滑點為零。

在真實市場裡,滑點是實實在在的成本。

限價單反過來。你鎖定了價格,但你不能保證成交。市場如果根本沒有到你的價格,你的單子就掛在那裡,什麼都沒發生。

對於演算法交易來說,這個選擇不是非此即彼的。

陳耀榮的核心觀點是:執行策略的選擇,必須和你的交易頻率、持倉時間、以及市場的流動性狀況匹配。

高頻策略,對速度要求極高,往往傾向於市價單,因為錯過機會的成本比滑點更大。

低頻策略,對價格更敏感,更多使用限價單,寧願等,不願意被市場拖著走。

---

但是,真正的難題,不是選哪一種訂單。

真正的難題,是:

你怎麼下?

想象一下,你的策略給出了一個訊號:買入某隻股票,倉位是兩百萬元。

你直接一筆下進去?

停。

想清楚這件事。

兩百萬元的買單,打進市場,會發生什麼?

如果這隻股票每天的成交量是一千萬元,你一筆兩百萬,直接佔了市場當天成交量的百分之二十。

百分之二十。

你猜市場會怎麼反應?

價格會被你自己推上去。

你買的越多,價格越高。等你買完,你的平均成交價,已經遠高於你訊號觸發時的價格。

這叫做市場衝擊成本。

這個成本,在回測裡幾乎不存在。

在實盤裡,它可以把你的策略收益吃掉一大半。

---

所以,拆單策略出現了。

核心思路很樸素:不要一次性把訂單全部打進市場,把它拆開,分批執行。

但怎麼拆?

這裡就要說到兩個最經典的演算法:

TWAP,和 VWAP。

TWAP,全稱是時間加權平均價格演算法。

邏輯是:把你的總訂單,按照時間均勻切分。比如你要在一個小時內買完,就每隔五分鐘買十分之一。

簡單,粗暴,有效。

但它有個問題。

市場不是均勻的。

上午九點半開盤,成交量可能很大。下午兩點,成交量可能很小。你如果每五分鐘都買一樣多,在成交量小的時候,你的衝擊成本反而更高。

於是,VWAP 出現了。

VWAP,全稱是成交量加權平均價格演算法。

它的邏輯是:市場成交量大的時候,我多買一點;成交量小的時候,我少買一點。跟著市場的節奏走,儘量讓自己的成交價接近市場的平均價格。

陳耀榮在書中寫道,VWAP 是機構交易員最常用的基準之一。評估一個執行演算法好不好,很多時候就是看你的成交價,有沒有跑贏 VWAP。

跑贏了,說明你的執行演算法減少了衝擊成本。

跑輸了,說明你的執行方式,讓你多付了錢。

---

現在我們來看一個當下的對映案例。

二零二三年,A 股市場上有一類被稱為「量化砸盤」的現象引發熱議。

部分量化機構在市場流動性不足的時段,集中執行大額賣出訂單,導致個股短時間內出現異常下跌。

普通投資者看到的,是莫名其妙的暴跌。

但背後,是執行系統沒有充分考慮市場衝擊成本的結果。

這不是策略本身的問題。

這是執行層面的問題。

一個好的拆單演算法,應該感知到流動性在變差,然後自動放慢執行節奏,甚至暫停,等待市場恢復。

一個粗糙的執行系統,只管把訂單打完,不管市場死活。

兩者的區別,有時候不只是成本的差異,而是會不會引發連鎖反應的差異。

---

好,訂單下出去了。

然後呢?

然後你要知道:成交了沒有?

這就是成交回報的問題。

聽起來像廢話——下單之後當然要知道成不成交。

但在演算法交易系統裡,這件事的複雜程度,遠超你的想象。

你的一筆訂單,可能被拆成幾十筆甚至幾百筆小單,分散在不同的時間點成交。

每一筆成交,都會有一個回報:成交價格、成交數量、成交時間。

你的系統需要把這些回報,一筆一筆地收集、彙總,然後更新你的持倉狀態。

如果回報處理慢了,或者漏掉了某一筆,你的系統就會對自己的真實持倉產生誤判。

誤判持倉,然後發出新的訊號,然後下新的單。

你猜會發生什麼?

對,可能會重複買入,或者在已經賣完的情況下繼續發出賣出訊號。

這種錯誤,在測試環境裡幾乎不會出現。

在實盤裡,它可以在幾分鐘內造成嚴重損失。

---

最後,我們來說經紀商對接。

這是執行系統裡最「工程」的一個環節,但也是最容易被忽視的一個環節。

你的演算法,需要透過某種介面,把訂單傳送給經紀商,經紀商再把訂單送到交易所。

這個介面,叫做 API。

不同的經紀商,API 的規範不一樣。有些用的是 FIX 協議,有些有自己的私有介面。

陳耀榮在書中強調,經紀商對接不只是技術問題,還是風險問題。

你需要測試:

網路延遲有多高?

斷線重連之後,訂單狀態會不會丟失?

經紀商的系統崩潰了,你的演算法會怎麼反應?

這些問題,在你真正上線之前,必須一一驗證。

因為市場不會等你。

網路斷了,市場還在跑。

經紀商宕機了,你的持倉還在那裡。

一個健壯的執行系統,必須能夠處理這些異常情況,而不是在異常發生的時候,直接失控。

---

我們來做一個小結。

從訊號到訂單,這條路上有三道關:

第一道,選對訂單型別。市價單還是限價單,取決於你的策略特性和市場流動性。

第二道,用對執行演算法。TWAP 和 VWAP,不是裝飾品,是減少衝擊成本的真實工具。

第三道,做好系統健壯性。成交回報要準確,經紀商對接要穩定,異常情況要有預案。

策略是大腦。

執行系統是手腳。

大腦再聰明,手腳不聽使喚,也是白搭。

---

但是,執行系統做好了,就萬事大吉了嗎?

還差一步。

最後一步,也是最關鍵的一步——

如果市場突然極端波動,你的倉位會不會失控?如果系統出了故障,你有沒有應急預案?實盤上線,你敢一上來就全倉壓注嗎?

下一章,我們來看這本書最後也是最重要的部分:

風控與上線。

一筆錯誤的交易,到底能有多大的破壞力?

第 4 章 · 風控與上線:不要讓一筆交易毀掉一切

你的策略設計好了,回測透過了,訂單也能發出去了。

萬事俱備。

然後——系統崩了。或者一筆單子方向搞反了。或者行情突然暴動,倉位直接爆掉。

你有沒有想過:真正毀掉一個演算法交易者的,往往不是策略,而是那個他以為「不會發生」的意外?

上一章我們講了執行系統。

核心是什麼?訊號不等於訂單。從策略發出訊號,到真實成交,中間隔著滑點、流動性、演算法拆單、經紀商介面——每一環都可能吃掉你的利潤。我們說,執行是策略的最後一公里,走不好,前面全白費。

今天,我們來收尾。

第四章,也是這本書最後一章——

風控與上線。

---

先說一個真實的災難。

二零一零年五月六日,美國股市。

下午兩點四十五分,道瓊斯指數在幾分鐘內暴跌將近一千點。

一千點。

然後又在幾分鐘內反彈回來。

這就是歷史上著名的「閃崩」事件。

後來調查發現,導火索是一個自動化交易程式,在極短時間內瘋狂賣出大量期貨合約,觸發了連鎖反應。其他演算法程式感應到異常流動性,紛紛撤單、跟隨賣出——整個市場陷入了一場演算法之間的踩踏。

你猜這場踩踏裡,損失最慘的是誰?

不是那些大機構。

是那些沒有風控的小賬戶。

那些程式一路跌停買入、或者一路漲停賣出,完全沒有任何保護機制的賬戶。

等人類反應過來手動幹預,錢已經沒了。

---

陳耀榮在書中寫道,風控不是策略的附屬品,而是策略的生命線。

這句話,我想讓你記住。

很多人做演算法交易,把百分之九十的精力放在策略研究上,把風控當成最後一個「有空再加」的模組。

停。

這個順序,是反的。

應該是:先有風控框架,再有策略上線。

---

**第一關:倉位上限**

什麼是倉位上限?

簡單說,就是你的系統在任何時候,單筆、單品種、單方向,最多能用多少資金。

聽起來很基礎。

但你知道多少人在這裡翻車嗎?

場景是這樣的:你的策略在某個品種上連續發出買入訊號。邏輯很清晰,訊號很強。系統一路加倉。

然後行情反轉。

沒有倉位上限的系統,會一直加、一直加,直到賬戶爆掉。

陳耀榮的核心觀點是:倉位上限不是保守,是生存。

他在書中給出了一個思路——把賬戶資金分成三層:

第一層,單筆交易上限。每一筆單子最多動用賬戶的百分之幾。

第二層,單品種總敞口上限。對同一個標的,不管開了多少筆,總倉位不能超過某個比例。

第三層,全賬戶風險敞口上限。所有持倉加起來,賬戶承受的最大潛在虧損,不能超過一個閾值。

三層保護,層層設防。

任何一層觸發,系統自動停止加倉,甚至開始減倉。

這不是在限制你賺錢。

這是在保證你明天還能繼續玩。

---

**第二關:止損止盈系統**

止損,很多人都知道要做。

但止盈呢?

這裡有一個認知誤區——很多人覺得止盈是「保守」,是「提前鎖定利潤,錯過更大的行情」。

錯了。

止盈的本質,是保護你的策略不被極端行情破壞。

想象一個場景:你的策略是做短線均值迴歸。某天市場出現單邊暴漲,你的策略判斷「漲太多了,要回撥」,於是做空。

結果沒有回撥,繼續漲。

沒有止損,你扛著。

繼續漲。

還在扛。

然後爆倉。

止損的存在,就是給每一筆交易一個「最大容忍邊界」。超過這條線,不管你的邏輯多完美,先出去,保住子彈,再說。

陳耀榮在書中特別強調:止損不是承認失敗,是承認不確定性。

這一句話,值得反覆聽。

市場永遠有你不知道的資訊。你的模型永遠是對現實的簡化。止損,是你對這個事實最誠實的回應。

---

**第三關:故障應急**

這一關,是業餘選手和機構選手差距最大的地方。

什麼叫故障應急?

就是:當你的系統出問題的時候,你有沒有一套預案?

系統崩潰了,怎麼辦?

網路斷了,怎麼辦?

經紀商介面超時,訂單不知道有沒有成交,怎麼辦?

行情資料出錯,策略基於錯誤資料發出了一堆亂單,怎麼辦?

這些場景,聽起來很極端。

但它們都發生過。

二零一二年,美國騎士資本集團。

一次軟體部署失誤,導致系統在四十五分鐘內自動發出了數百萬筆錯誤訂單。

四十五分鐘。

損失:四億四千萬美元。

四億四千萬。

公司直接瀕臨破產,最終被收購。

陳耀榮在書中寫道,每一個演算法交易系統上線之前,必須有一份「緊急預案清單」。

這份清單要包括:

第一,如何在三十秒內手動停止所有自動交易;

第二,如何快速檢視當前所有持倉狀態;

第三,如何在系統失聯的情況下,透過其他方式平倉;

第四,出現異常訂單時,第一時間聯絡經紀商的流程。

這不是杞人憂天。

這是職業素養。

---

**第四關:實盤漸進上線**

好,假設你的風控框架搭好了。

可以上線了嗎?

不。

還有一步:漸進上線。

什麼叫漸進上線?

就是不要第一天就把全部資金交給系統。

陳耀榮給出的建議是一個「階梯式」路徑:

第一階段,模擬盤跑滿三十天,觀察系統在實盤行情下的表現,和回測有沒有明顯偏差。

第二階段,用百分之十的資金上實盤,跑兩週。

第三階段,如果表現正常,擴大到百分之三十,再跑一個月。

第四階段,逐步提升到目標倉位。

為什麼要這麼慢?

因為回測和實盤之間,永遠有你沒預料到的差異。

滑點比你想的大。

某些品種流動性比你想的差。

你的系統在某些市場狀態下,行為和預期完全不同。

這些問題,你必須用小倉位去暴露,而不是用全倉去發現。

發現得越早,代價越小。

---

**業餘 vs 機構:差距在哪裡?**

說到這裡,我們來直接對比一下。

業餘演算法交易者,通常是這樣的:

花大量時間調參,追求最高的回測收益率。

風控是事後加的,或者根本沒有。

系統第一天就全倉上線。

出了問題,手忙腳亂。

機構是這樣的:

策略研究和風控框架同步開發。

上線之前,有專門的壓力測試,模擬極端行情下的系統表現。

實盤上線有嚴格的審批流程。

有專門的風控團隊,獨立於策略團隊,全天監控系統執行狀態。

差距在哪裡?

不是聰明程度。

不是策略水平。

是對「失控」的敬畏。

機構知道,市場隨時可能出現你沒見過的情況。他們的全部努力,就是在那個情況出現的時候,損失可控,系統可以繼續執行。

業餘選手覺得,只要策略夠好,就不會有那個情況。

然後那個情況出現了。

---

**當下的對映**

今天,個人量化交易的門檻越來越低。

Python 開源庫、免費的歷史資料、低佣金的券商介面——這些工具,讓普通人也能搭出一個像模像樣的演算法交易系統。

但工具的普及,不代表風險的降低。

恰恰相反。

越容易上手,越多人跳過了那些「麻煩」的步驟——風控框架、故障預案、漸進上線。

結果就是:更多的人,用更低的門檻,在更短的時間內,把錢虧光了。

陳耀榮在書中說的一句話,我覺得是整本書最重要的提醒:

演算法交易系統的目標,不是最大化收益,而是在可控風險下,持續穩定地執行。

持續。

穩定。

可控。

這三個詞,才是終點。

---

**整書收束**

回頭看這本書,我們走了一條完整的路。

第一章,我們從零開始——如何把一個模糊的交易想法,變成乾淨的資料和可執行的程式碼。

第二章,我們踩進了回測的陷阱——過擬合、資料窺探、樣本外測試,告訴我們歷史資料上的勝利,不等於真實市場的勝利。

第三章,我們打通了執行系統——訊號到訂單,不是一步,是一條充滿摩擦的鏈條。

第四章,我們在終點站停下來,談風控——因為所有的努力,都可能被一次沒有保護的失控清零。

陳耀榮真正想告訴我們的,其實是一件事:

演算法交易不是找到一個「必勝公式」,然後躺著數錢。

它是一套嚴肅的工程——設計、驗證、執行、保護,缺一不可。

市場不會因為你的程式碼寫得漂亮就手下留情。

但如果你把每一關都認真對待,它也不會輕易把你淘汰出局。

策略是入場券,風控才是留場證。—— 陳耀榮,演算法交易

本篇出現的關鍵概念

資料窺探 (Data Snooping)
用同一批歷史資料反覆測試大量策略或引數組合,再從中挑選表現最優者的行為。由於測試次數足夠多,隨機噪音中必然會出現看似顯著的規律,但這種規律不具備預測未來的能力。陳耀榮將其列為量化策略中最隱蔽的致命錯誤,2005年前後華爾街因子淘金熱中大量策略上線即虧損,正是這一問題的集中體現。
過擬合 (Overfitting)
模型引數過度貼合曆史資料的特定細節,導致在樣本內表現完美但對新資料泛化能力極差的現象。判斷標準之一是引數無法從市場邏輯上得到解釋,例如策略規則中出現RSI介於43到57之間、成交量比昨日多12.7%這類高度精細的數值,往往是過擬合的訊號而非真實規律。
倖存者偏差 (Survivorship Bias)
僅使用當前仍存續的股票或基金的歷史資料進行回測,忽略已退市、破產或清盤標的的資料,導致回測收益被系統性高估的偏差。以A股為例,若只用現存上市公司的歷史資料建模,所有中途退市公司的虧損記錄均不在樣本中,策略表現會虛假偏好。
滾動前推測試 (Walk-Forward Testing)
將歷史資料切分為多個連續時間段,依次以前一段訓練策略、後一段檢驗表現,逐步向前滾動直至資料用完的回測方法。每次檢驗均使用策略從未見過的資料,最終得到一系列不同市場環境下的真實表現記錄,比單次樣本內外切分更能反映策略的穩健性。陳耀榮將其列為專業量化機構的標準驗證流程。

關於進階系列

進階系列

陳耀榮(Ernest P. Chan)是量化交易領域少有的兼具學術背景與實戰經歷的從業者。他在康奈爾大學取得物理學博士學位,隨後進入金融行業,先後在摩根士丹利、瑞士聯合銀行、花旗集團等機構擔任量化研究員和策略師,積累了超過三十年的華爾街一線經驗。 陳耀榮的職業軌跡橫跨機構量化研究與獨立交易兩個階段。在大型機構任職期間,他深度參與了統計套利、高頻做市與跨資產量化策略的研發工作,積累了對執行系統、資料基礎設施與風控框架的系統認知。此後他轉型為獨立量化交易者,並創立了量化投資諮詢機構QTS Capital Management,這段經歷使他對個人投資者和中小型量化團隊面臨的實際約束有著清醒認識。 他的寫作風格以務實著稱。《演算法交易》一書出版後在量化從業者群體中廣泛流傳,原因在於它不停留在理論框架層面,而是直接處理從策略設計、資料清洗、回測驗證到實盤執行的每一個具體環節。書中對資料窺探、過擬合與滑點成本的系統性警示,填補了許多量化入門書籍刻意迴避的空白地帶。 對於本篇精讀而言,陳耀榮最重要的貢獻不是提供某一具體策略,而是建立了一套評估策略可信度的完整標準——從資料質量到回測方法,再到執行系統的細節處理,構成了量化進階者從想法到實盤的完整路徑圖。

檢視進階系列全部投資筆記 →

本篇 6 句最值得抄進筆記的話

常見問題

演算法交易回測收益高但實盤虧損是什麼原因
最常見的原因有三類。第一是過擬合,策略引數過度貼合曆史資料,對新資料沒有泛化能力。第二是資料窺探,在同一批資料上反覆測試大量策略後挑選最優者,實際上是在擬合隨機噪音。第三是忽視交易成本,回測中將滑點設為零,但真實市場中每筆交易的成交價與報價存在偏差,以一天五十筆交易、每筆兩元滑點計算,一年累計成本可達兩萬五千元以上,足以抹平大多數策略的利潤。
什麼是Walk-Forward回測,和普通回測有什麼區別
普通回測將歷史資料一次性切分為訓練集和測試集,樣本外資料只驗證一次。Walk-Forward測試則將資料切成多個連續時間段,依次以前一段訓練、後一段檢驗,逐步向前滾動。每次檢驗使用的都是策略從未見過的資料,最終得到策略在多個不同市場環境下的真實表現記錄。如果策略只在某幾段特別好、其他時段表現差,說明它可能只是碰巧適配了特定歷史時期,而非捕捉到了穩健的市場規律。
量化回測中倖存者偏差如何影響結果
倖存者偏差指僅使用當前仍存續股票的歷史資料進行回測,忽略了已退市、破產公司的資料。由於能查到的股票都是活下來的公司,其歷史價格大多呈上漲趨勢,基於這批資料建立的策略會系統性高估收益。正確做法是使用包含退市股票歷史資料的完整資料集,確保回測樣本覆蓋了真實市場中所有參與者的完整表現,而不只是倖存者的軌跡。
演算法交易用市價單還是限價單更好
沒有絕對的優劣,取決於策略型別和市場流動性。市價單保證成交但無法控制價格,在波動劇烈時滑點可能顯著放大成本;限價單鎖定價格但不保證成交,可能錯過交易機會。陳耀榮的核心判斷是:高頻策略對速度要求極高,錯過機會的成本往往大於滑點損失,傾向於市價單;低頻策略對價格更敏感,寧願等待合適價格,更多使用限價單。兩者的選擇必須與交易頻率、持倉週期和目標市場的流動性狀況相匹配。
Python做量化交易需要掌握哪些庫
陳耀榮在書中描述的基礎框架涉及幾個核心庫:Pandas用於歷史資料的讀取、清洗和時間序列處理;NumPy用於數學計算和向量化運算;Matplotlib用於策略表現的視覺化分析;Scikit-learn用於機器學習類因子的建模與驗證。此外,實盤執行階段還需要對接經紀商或交易所的API介面。對於個人投資者和中小型量化團隊而言,Python的核心優勢不是執行速度,而是開發速度——從想法到可測試程式碼的路徑最短。

讀完這篇,你還會喜歡

在某派 App 繼續學習
220+ 大師案例 · 知性男聲音訊解讀 · 與 25 位大師 1v1 對話
完整音訊版 10 大投資流派 25 位大師 1v1 對話 離線收聽
下載某派 App
App Store 評分 4.7 · 已上架美區中文
在某派 App 聽 56 分鐘完整音訊解讀
含 220+ 大師案例 · 與 25 位大師 1v1 對話
下載 App