螢幕上的兩條曲線像一道無形的裂痕,橫在林晨心頭。
那個 18.7% 的回測收益率帶來的短暫興奮早已冷卻。此刻,他更關注的是訓練集損失曲線平滑下降,而驗證集曲線卻在某個節點後開始微微上揚的分化現象。過擬合。這個在機器學習領域老生常談的問題,在量化交易的語境下,意味著模型可能只是“記住”了歷史資料的噪音,而非真正學會了市場規律。把這樣的模型投入實盤,無異於矇眼走鋼絲。
“不能急著上實盤”。林晨關掉回測圖表,向後靠在椅背上,書房裡只聽得見主機風扇低沉的嗡鳴。窗外的鵬城夜空,零星燈火點綴著密集的樓宇輪廓。他揉了揉發酸的眼眶,思路逐漸清晰。
問題發現了,最佳化方向也有了,但在這之前,還有一個更根本的環節被他忽略了——風險控制。一個只能預測漲跌(哪怕預測精度尚可)的策略,是殘缺的。它沒有回答:如果預測錯了怎麼辦?該投入多少資金?虧損到什麼程度必須退出?盈利了又該何時落袋為安?
這些,才是交易系統中決定生死存亡的部分。收益決定了你能走多高,而風控決定了你能不能活下來。
接下來的幾天,林晨暫時擱置了模型最佳化的具體編碼工作,轉而一頭扎進了風險管理的知識海洋。他泡在 QuantConnect、聚寬等平臺的社群論壇,翻閱那些真正經歷過市場牛熊的量化交易者分享的經驗帖——尤其是那些關於爆倉、關於回撤控制的血淚教訓。同時,他系統性地查閱學術論文和經典書籍,從最基礎的《期貨市場技術分析》中關於資金管理的章節,到更現代的《主動投資組合管理》中關於風險預算的複雜模型。
他像個海綿一樣吸收著,並在筆記本上(這次是真正的紙質筆記本,他感覺有些核心思路需要手寫下來加深記憶)梳理出關鍵點:
倉位管理: 這是風控的第一道閘門。絕對不能把所有資金押注在一次交易上。他學習了固定比例法(每次投入總資金的固定百分比)、凱利公式(在已知勝率和賠率情況下的最優下注比例),以及更具動態性的波動率調整倉位法(市場波動大時自動降低倉位)。
止損策略: 這是防止單次虧損無限擴大的“保險絲”。他研究了固定價格止損、移動止損(如跟蹤止損)、技術指標止損(如跌破某條均線)以及基於波動率的百分比止損。每種方法都有其適用場景和優缺點。
止盈策略: 與止損相對,但同樣重要,目的是鎖定利潤,避免坐過山車。除了固定目標止盈,還有移動止盈、分批止盈等更靈活的方式。
組合風險: 當他未來同時執行多個策略、交易多個品種時,還需要考慮策略之間的相關性,避免所有策略在同一時間遭遇同類型風險,導致整體回撤過大。
“最重要的原則”,林晨在筆記本上重重寫下,“永遠是活下去。收益可以慢慢積累,但本金一旦大幅虧損,需要更高的收益率才能回本,而且心態極易崩潰”。
理論需要落地。他重新開啟 PyChar在之前那個略顯單薄的“策略”類旁邊,開始建立一個全新的“Risknager”(風險管理器)類。這個類將作為未來交易系統的核心元件之一,獨立於預測模型,專門負責計算倉位、發出止損止盈指令。
他決定先從相對穩健的方法入手。在倉位管理上,他實現了一個基於賬戶總淨值的固定比例方法,並設定了一個最大單筆倉位上限(比如總資金的 2%)。同時,他寫了一個簡單的波動率監測模組,計算標的近期價格波動率(如 ATR 指標),當波動率異常升高時,倉位比例會自動下調。
止損方面,他選擇了“百分比止損”結合“移動止損”的混合方式。入場後,先設定一個基於入場價的固定百分比作為初始止損(例如 -5%)。一旦價格向有利方向移動超過一定幅度,止損價就自動上移(跟蹤止損),鎖定部分利潤,同時給予行情繼續發展的空間。
止盈則相對靈活,他設定了兩重止盈:第一重是固定比例止盈(如 +10%),到達後平掉一半倉位,剩下的一半採用更寬鬆的移動止損,博取更大趨勢的可能。
程式碼敲擊聲中,一個個函式被構建起來:calculate_position_size、check_stop_loss、update_trailing_stop、check_take_profit……他力求邏輯清晰,引數可配置,方便後續調整和最佳化。
“光有邏輯還不夠,得能直觀看到效果”。林晨心想。他修改了回測框架,將新的風控模組整合進去。回測引擎在模擬交易時,每一筆買賣決策不僅要看模型的預測訊號,還必須經過 Risknager 的稽核:能買多少?有沒有觸發止損或止盈?
他選用了同一段歷史資料重新回測。這一次,回測報告出來後,累計收益率從之前的 18.7% 下降到了 15.2%。表面看收益降低了,但林晨仔細分析交易明細和資金曲線圖後,眉頭反而舒展開來。
最大的單筆虧損被嚴格限制在了 -5% 左右,沒有出現之前可能存在的深度套牢。資金曲線的回撤(從高點回落的最大幅度)明顯變小,曲線看起來更平滑,少了些陡峭的“懸崖”。雖然犧牲了一些潛在利潤(比如有些倉位被過早止損或止盈),但整個交易過程顯得可控了許多。
“這才像個樣子”。林晨長舒一口氣。一個完整的、可執行的量化交易系統雛形,終於在他手中拼接起來。它現在至少包含了幾個關鍵模組:資料獲取與處理、特徵工程、AI 預測模型(儘管還需最佳化)、風險管理系統、回測框架。骨架已經搭好,剩下的就是不斷填充血肉、最佳化細節。
他給這個初生的系統專案命名為“Phoenix Trader”(鳳凰交易者),寓意著從灰燼中重生。建立了一個新的 Git 倉庫,將程式碼謹慎地提交上去,並寫下了詳細的 READ 說明。
完成這一切,已是深夜。林晨站起來活動了一下僵硬的肩頸,走到窗邊。遠處,鵬城灣的方向隱約有燈光閃爍。他知道,距離用這個系統真正賺到錢,還有很長的路要走。模型需要最佳化,風控引數需要更精細的測試,實盤環境下的滑點、網路延遲、交易介面穩定性等問題都還是未知數。
但至少,方向越來越清晰了。他不再是那個只盯著預測準確率的“模型鍊金術士”,而開始像一個真正的“系統架構師”一樣思考,思考如何構建一個健壯的、能夠長期在複雜金融市場中生存並獲取利潤的機器。
這種從混沌到有序、從單點突破到系統構建的過程,帶來了一種更深沉、更紮實的成就感。它驅散了部分因失業和財務壓力帶來的焦慮,取而代之的是一種專注於解決問題的平靜力量。
他忽然想起侄兒林浩。那孩子也在流水線上,重複著看不到太多變化的工作。自己現在摸索的這條路,雖然艱難,但至少每一步都在創造新的東西,都有學習和成長。或許,這也是一條可以分享的路?
這個念頭一閃而過。眼下,最重要的是讓“鳳凰”先真正飛起來一小段。林晨回到電腦前,開啟模擬交易賬戶的介面。他決定,在投入真金白銀進行極小額實盤測試之前,先讓系統在模擬環境中全自動執行一週,觀察它在更接近真實的環境下(儘管沒有實際資金流動),面對即時行情資料、處理模擬訂單的表現。
他啟動了系統,設定好監控告警。螢幕上,行情資料開始滾動,系統日誌視窗偶爾跳出一兩行狀態資訊。一切似乎平靜地運轉起來。
。路之經必的滿加更羽”凰“讓是都,驗經的貴寶是都,題問麼什現出論無但。順風帆一會不,行執擬模的週一第這,道知他。灶爐的曳搖在尚、種火燃點剛剛個一著護守像,幕螢著看,裡那在坐就他。開離有沒,茶濃杯了泡晨林
。臨來將即,晨清個一又的城鵬。藍深點一出,黑的濃最去褪漸漸,夜的外窗








