量化策略開發 — 從假設到生產

建立盈利的交易策略不僅僅依賴直覺。它需要可測試的假設、嚴格的回測和謹慎的優化以避免過度擬合。本指南將帶您從基本原理開始建立量化策略 — 這正是Smart Money API背後算法所採用的方法。

關鍵原則: 95%的交易者失敗是因為他們在樣本內數據上進行優化。一個在歷史數據上回報200%的策略在實際交易中很可能虧損。學會避免這個陷阱。

假設階段

從可證偽的聲明開始

每個策略都始於一個具體、可測試的假設。不是「比特幣有時會上漲」,而是「當資金費率為正且鯨魚多頭共識超過65%時,接下來的4小時K線收高的概率為56%」。

好的假設:

不好的假設:

定義您的優勢

您知道 什麼是 市場尚未定價的?對於Smart Money API來說,它是:「鯨魚共識變化比散戶反應早2-4小時。如果我們實時追踪前250個錢包,我們可以提前行動。」

策略框架

1. 進場條件

何時進場?明確說明:

Python — 進場邏輯
# 策略:鯨魚共識 + 衍生品匯合
def should_enter_long(symbol, bar):
# 條件1:鯨魚多頭共識 > 65%
whale_long_pct = get_whale_consensus(symbol)
cond_whale = whale_long_pct > 0.65
# 條件2:資金費率為正且上升
fr_current = get_funding_rate(symbol)
fr_previous = get_funding_rate(symbol, offset=1)
cond_fr = (fr_current > 0) and (fr_current > fr_previous)
# 條件3:LSR > 1.25(多頭多於空頭)
lsr = get_long_short_ratio(symbol)
cond_lsr = lsr > 1.25
# 條件4:價格高於50日均線(上升趨勢背景)
ma_50 = get_sma(symbol, 50)
cond_trend = bar.close > ma_50
return cond_whale and cond_fr and cond_lsr and cond_trend

2. 出場條件

何時平倉?定義盈利目標和止損:

Python — 出場邏輯
def should_exit_long(entry_price, current_price, time_in_trade):
pnl_pct = (current_price - entry_price) / entry_price
# 盈利目標:+2%
if pnl_pct > 0.02:
return True, "profit_target"
# 止損:-1%
if pnl_pct < -0.01:
return True, "stop_loss"
# 時間出場:4小時後平倉
if time_in_trade > timedelta(hours=4):
return True, "time_exit"
return False, None

3. 倉位規模

每筆交易風險多少?使用凱利公式或固定分數投注:

Python — 倉位規模
def calculate_position_size(account_balance, win_rate, avg_win, avg_loss):
# 凱利公式:f* = (p*b - q) / b
# p = 勝率, b = 盈虧比, q = 虧損率
p = win_rate
q = 1 - win_rate
b = avg_win / avg_loss
kelly_fraction = (p * b - q) / b
# 使用25%的凱利值以保守(避免破產)
position_fraction = kelly_fraction * 0.25
risk_amount = account_balance * position_fraction
return risk_amount

建立回測器

事件驅動回測引擎

Python — 回測框架
class BacktestEngine:
def __init__(self, initial_capital=10000):
self.capital = initial_capital
self.trades = []
self.equity_curve = []
def run(自身, 數據, 策略):
循環 i, 單根K線 枚舉(data):
# 檢查開倉交易的出場條件
循環 交易 自身.交易列表:
是否平倉, 平倉原因 = 交易.檢查出場條件(單根K線.收盤價)
是否平倉:
盈虧 = (單根K線.收盤價 - 交易.進場價) * 交易.倉位大小
自身.資金 += 盈虧
自身.交易列表.移除(交易)
# 檢查進場條件
策略.應進場(單根K線):
倉位大小 = 計算倉位規模(...)
交易 = 交易(進場價=單根K線.收盤價, 倉位大小=倉位大小)
自身.交易列表.追加(交易)
自身.資金曲線.追加(自身.資金)
返回 自身.計算指標()

關鍵回測指標

避免過度優化

過度擬合陷阱

若您在歷史數據上不斷調整參數直到獲得200%回報,實盤時將會失望。請使用嚴格的樣本外測試:

滾動式驗證: 用1年數據優化,在接下來3個月測試。然後用第2-3年數據優化,在第3年第1季測試。在整個數據集上重複此過程。僅報告樣本外結果。

參數敏感度

使用網格搜索測試多種參數組合,但需懲罰複雜度:

Python — 滾動式網格搜索
定義 滾動式優化(data, 參數範圍):
結果 = []
訓練窗口 = 252 # 1年的日線數據
測試窗口 = 63 # 3個月
循環 i 範圍(0, len(data) - 訓練窗口 - 測試窗口, 測試窗口):
訓練數據 = data[i:i+訓練窗口]
測試數據 = data[i+訓練窗口:i+訓練窗口+測試窗口]
# 在訓練數據上優化
最佳參數 = 無
最佳回報 = -浮點數('無限大')
循環 參數組合 參數組合生成(參數範圍):
回測結果 = 回測(訓練數據, 參數)
回測結果.回報百分比 > 最佳回報:
最佳回報 = 回測結果.回報百分比
最佳參數 = 參數
# 在未見數據上測試
樣本外結果 = 回測(測試數據, 最佳參數)
結果.追加({"樣本內": 最佳回報, "樣本外": 樣本外結果.回報百分比})
返回 結果

邁向實盤

先進行模擬交易

在投入真實資金前,進行2-4週的模擬交易。由於滑點、延遲和執行問題,您的實盤策略表現將比回測低5-15%。若模擬交易結果與回測高度吻合,即可準備就緒。

實盤交易中的風險管理

實盤交易截然不同。設定硬性限制:

與Smart Money API整合

使用我們的確認評分作為信號的前置篩選器或乘數:

Python — API整合範例
導入 requests
定義 帶確認的執行(交易對, 方向, 信號強度):
# 獲取Smart Money確認
響應 = requests.獲取(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={交易對}&direction={方向}",
請求頭={"X-API-密鑰": API密鑰}
)
數據 = 響應.json()
# 根據Smart Money置信度應用倉位乘數
數據["置信度"] == :
position_size = base_size * 1.5
elif data[信心指數] == :
position_size = base_size * 1.0
elif data[信心指數] == :
position_size = base_size * 0.5
elif data[信心指數] == 否決:
return 跳過 # 不進行交易
# 以最終規模執行交易
execute_order(symbol, direction, position_size)

用 Smart Money 信號打造更佳策略

將巨鯨追蹤、衍生品情報與鏈上指標整合至您的量化模型中。加入 Smart Money 確認後,回測策略可提升 5-8% 效益。

免費開始回測 →