quant-trading

quant-trading

量化交易策略開發、回測與風險管理

1звезд
0форков
Обновлено 1/20/2026
SKILL.md
readonlyread-only
name
quant-trading
description

量化交易策略開發、回測與風險管理

version
"1.1.0"

量化交易 Quant Trading

系統化、數據驅動的交易策略開發

適用場景

  • 開發交易策略(趨勢跟蹤、均值回歸、套利)
  • 策略回測與績效分析
  • 風險管理與部位控制
  • 因子研究與 Alpha 挖掘

策略開發流程

假說形成 → 數據準備 → 策略編寫 → 回測驗證 → 風險控制 → 實盤監控

核心知識

策略類型

類型 說明 風險
趨勢跟蹤 順勢而為,追漲殺跌 震盪市場虧損
均值回歸 價格偏離後回歸 趨勢市場虧損
統計套利 配對交易、價差收斂 相關性崩潰
高頻交易 微秒級別的價差捕捉 技術風險高

風險指標

指標 公式 良好標準
夏普比率 (收益 - 無風險) / 標準差 > 1.5
最大回撤 峰值到谷值的最大跌幅 < 20%
卡瑪比率 年化收益 / 最大回撤 > 1.0
勝率 獲利交易 / 總交易 > 50%

常見因子

因子 說明 邏輯
價值 P/E, P/B 低 便宜股票長期表現好
動量 過去漲的繼續漲 趨勢持續性
品質 ROE 高、負債低 好公司溢價
規模 小型股溢價 流動性補償
波動 低波動異常 低風險高報酬

回測檢查清單

  • 數據品質: 是否有生存者偏差?
  • 前視偏差: 是否使用了未來數據?
  • 過度擬合: 參數是否過度優化?
  • 交易成本: 是否包含手續費、滑價?
  • 樣本外測試: 是否保留測試集?

最佳實踐

  1. 先簡單後複雜 - 從簡單策略開始,逐步增加複雜度
  2. 樣本外驗證 - 永遠保留一段數據做最終測試
  3. 考慮交易成本 - 回測時加入真實的手續費和滑價
  4. 分散風險 - 不要把所有資金押在單一策略
  5. 持續監控 - 實盤後監控策略表現,設定停損條件

常見錯誤

錯誤 正確做法
回測收益驚人就上線 檢查是否過度擬合
忽略交易成本 加入真實手續費和滑價
用全部數據訓練 分割訓練/驗證/測試集
單一策略 All-in 多策略組合分散風險

Sharp Edges

SE-1: 回測過度擬合

  • 嚴重度: critical
  • 情境: 策略在回測中表現優異(夏普 > 3),但實盤虧損
  • 原因: 參數針對歷史數據過度優化,捕捉的是噪音而非信號
  • 症狀: 回測夏普 > 3、實盤表現 < 50%、參數敏感、交易次數過少
  • 檢測: sharpe.*[3-9]\.|sharpe.*\d{2,}
  • 解決: 使用 Walk-forward 驗證,分 5+ 段滾動測試

SE-2: 前視偏差 (Look-ahead Bias)

  • 嚴重度: critical
  • 情境: 回測時無意使用了未來數據
  • 原因: 數據處理時沒有注意時間順序
  • 症狀: 回測報酬率完美、使用當日收盤價作為當日信號
  • 檢測: shift\(-|iloc\[-1\].*today
  • 解決: 信號必須延遲一天 signal = prices.shift(1) > ma.shift(1)

SE-3: 生存者偏差

  • 嚴重度: high
  • 情境: 只使用當前存在的股票進行回測
  • 原因: 退市、下市的股票被排除,導致高估策略表現
  • 症狀: 回測報酬明顯高於實際、小型股策略表現特別好
  • 解決: 使用包含退市股票的完整數據庫、使用 Point-in-Time 數據

SE-4: 忽略交易成本與滑價

  • 嚴重度: high
  • 情境: 高頻換手策略看起來很賺錢
  • 原因: 沒有計入手續費和滑價,實際成本吃掉所有利潤
  • 症狀: 年換手率 > 1000%、單筆獲利 < 0.5%、回測用收盤價成交
  • 解決: 計入 commission (0.1%) + slippage (0.2%) = 每筆 0.3%

SE-5: 過度自信於樣本內績效

  • 嚴重度: medium
  • 情境: 只看樣本內回測結果就決定上線
  • 原因: 沒有保留獨立的測試集
  • 症狀: 沒有 out-of-sample 測試、驗證集被重複使用、測試集數據量太少
  • 解決: 數據分割 60/20/20(訓練/驗證/測試),測試集只用一次

風險管理框架

Layer 1 交易層: 單筆停損 2%、根據波動度設定停利、移動停損保護利潤
Layer 2 策略層: 單策略不超過 20% 總資金、回撤超 15% 減半部位
Layer 3 組合層: 每日 VaR 不超過 2%、壓力測試、保持 20% 現金

Kelly 公式

f* = (p × b - q) / b
f* = 最佳投注比例, p = 勝率, q = 敗率, b = 賠率
範例:勝率 55%, 賠率 1.5 → f* = 25%(實務用 Half-Kelly 12.5%)

執行風險

風險 說明 對策
滑價 成交價與預期價差異 限價單、分批執行
流動性 無法成交足夠數量 避免小型股、設定上限
系統故障 程式/網路中斷 備援系統、人工監控
黑天鵝 極端事件 部位上限、停損機制

工具推薦

  • Backtrader - Python 回測框架
  • QuantConnect - 雲端量化平台
  • TradingView - 圖表分析和策略測試
  • Zipline - Quantopian 開源回測引擎

延伸資源

參考資源

  • Quantitative Trading - Ernest Chan
  • Advances in Financial Machine Learning - Marcos Lopez de Prado

免責聲明

量化交易涉及高風險,歷史績效不代表未來表現。本內容僅供教育參考,不構成投資建議。

You Might Also Like

Related Skills

coding-agent

coding-agent

179Kdev-codegen

Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.

add-uint-support

add-uint-support

97Kdev-codegen

Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

at-dispatch-v2

at-dispatch-v2

97Kdev-codegen

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

skill-writer

skill-writer

97Kdev-codegen

Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.

Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.

Creates JavaScript classes using Bun's Zig bindings generator (.classes.ts). Use when implementing new JS APIs in Zig with JSC integration.