Kvantitativní vývoj strategie — Od hypotézy k produkci

Vytvoření výnosné obchodní strategie vyžaduje více než jen intuici. Vyžaduje testovatelné hypotézy, důkladný backtesting a pečlivou optimalizaci, aby se předešlo přizpůsobení datům. Tento průvodce vás provede vytvořením kvantitativní strategie od základních principů — stejná metodologie, která pohání algoritmy za Smart Money API.

Klíčový princip: 95 % obchodníků selže, protože optimalizují na vzorových datech. Strategie, která vrací 200 % na historických datech, pravděpodobně v reálném obchodování ztratí peníze. Naučte se této pasti vyhnout.

Fáze hypotézy

Začněte s falzifikovatelným tvrzením

Každá strategie začíná konkrétní, testovatelnou hypotézou. Ne "Bitcoin někdy roste", ale "Když jsou funding rate pozitivní A konsenzus velryb na long přesáhne 65 %, další 4hodinová svíce uzavře vyšší s 56% pravděpodobností."

Dobré hypotézy:

Špatné hypotézy:

Definujte svou výhodu

Co víte, co trh neocenil? Pro Smart Money API je to: "Konsenzus velryb se mění 2–4 hodiny před reakcí retailu. Pokud sledujeme 250 největších peněženek v reálném čase, můžeme předběhnout pohyb."

Rámec strategie

1. Vstupní podmínky

Kdy vstupujete? Buďte explicitní:

Python — Vstupní logika
# Strategie: Konsenzus velryb + Konfluence derivátů
def should_enter_long(symbol, bar):
# Podmínka 1: Konsenzus velryb > 65 % long
whale_long_pct = get_whale_consensus(symbol)
cond_whale = whale_long_pct > 0.65
# Podmínka 2: Funding rate pozitivní a rostoucí
fr_current = get_funding_rate(symbol)
fr_previous = get_funding_rate(symbol, offset=1)
cond_fr = (fr_current > 0) and (fr_current > fr_previous)
# Podmínka 3: LSR > 1,25 (více longů než shortů)
lsr = get_long_short_ratio(symbol)
cond_lsr = lsr > 1.25
# Podmínka 4: Cena nad 50denním klouzavým průměrem (kontext uptrendu)
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. Výstupní podmínky

Kdy uzavíráte? Definujte cíle zisku a stop lossy:

Python — Logika ukončení pozice
def should_exit_long(entry_price, current_price, time_in_trade):
pnl_pct = (current_price - entry_price) / entry_price
# Ziskový cíl na +2 %
if pnl_pct > 0.02:
return True, "profit_target"
# Stop loss na -1 %
if pnl_pct < -0.01:
return True, "stop_loss"
# Časové ukončení: uzavření po 4 hodinách
if time_in_trade > timedelta(hours=4):
return True, "time_exit"
return False, None

3. Velikost pozice

Kolik riskujete na obchod? Použijte Kellyho kritérium nebo pevný zlomkový systém:

Python — Výpočet velikosti pozice
def calculate_position_size(account_balance, win_rate, avg_win, avg_loss):
# Kellyho kritérium: f* = (p*b - q) / b
# p = úspěšnost, b = poměr výher/proher, q = míra proher
p = win_rate
q = 1 - win_rate
b = avg_win / avg_loss
kelly_fraction = (p * b - q) / b
# Použijte 25 % Kellyho hodnoty pro konzervativní přístup (vyhněte se bankrotu)
position_fraction = kelly_fraction * 0.25
risk_amount = account_balance * position_fraction
return risk_amount

Tvorba backtesteru

Událostmi řízený backtestovací engine

Python — Backtestovací framework
class BacktestEngine:
def __init__(self, initial_capital=10000):
self.capital = initial_capital
self.trades = []
self.equity_curve = []
def run(self, data, strategy):
for i, bar in enumerate(data):
# Kontrola výstupních podmínek pro otevřené obchody
for trade in self.trades:
should_close, reason = trade.check_exit(bar.close)
if should_close:
pnl = (bar.close - trade.entry_price) * trade.size
self.capital += pnl
self.trades.remove(trade)
# Kontrola vstupních podmínek
if strategy.should_enter(bar):
size = calculate_position_size(...)
trade = Trade(entry_price=bar.close, size=size)
self.trades.append(trade)
self.equity_curve.append(self.capital)
return self.calculate_metrics()

Klíčové metriky backtestingu

Jak se vyhnout nadměrné optimalizaci

Past přeučení

Pokud optimalizujete parametry na historických datech, dokud nebudou výnosy 200%, budete při reálném obchodování zklamáni. Používejte přísné testování na neznámých datech:

Walk-forward validace: Optimalizujte na 1 roce dat, testujte na dalších 3 měsících. Pak optimalizujte na letech 2-3, testujte na 3. čtvrtletí roku 3. Opakujte pro celou datovou sadu. Reportujte pouze výsledky na neznámých datech.

Citlivost parametrů

Otestujte více kombinací parametrů pomocí grid search, ale trestejte složitost:

Python — Grid search s walk-forward
def walk_forward_optimization(data, param_ranges):
results = []
train_window = 252 # 1 rok denních dat
test_window = 63 # 3 měsíce
for i in range(0, len(data) - train_window - test_window, test_window):
train_data = data[i:i+train_window]
test_data = data[i+train_window:i+train_window+test_window]
# Optimalizujte na tréninkových datech
best_params = None
best_return = -float('inf')
for params in param_combinations(param_ranges):
backtest_result = backtest(train_data, params)
if backtest_result.return_pct > best_return:
best_return = backtest_result.return_pct
best_params = params
# Test na neviděných datech
oos_result = backtest(test_data, best_params)
results.append({"is": best_return, "oos": oos_result.return_pct})
return results

Přechod do produkce

Nejprve paper trading

Než riskujete reálný kapitál, obchodujte na papíře (simulovaně) po dobu 2-4 týdnů. Vaše živá strategie bude mít o 5-15% horší výsledky než backtest kvůli skluzu, latenci a exekuci. Pokud paper trading odpovídá backtestu, jste připraveni.

Řízení rizik v reálném obchodování

Reálné obchodování je jiné. Nastavte pevné limity:

Integrace se Smart Money API

Použijte naše potvrzovací skóre jako předfiltr nebo multiplikátor vašich signálů:

Python — Integrace API
import requests
def execute_with_confirmation(symbol, direction, signal_strength):
# Získání potvrzení od Smart Money
response = requests.get(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={symbol}&direction={direction}",
headers={"X-API-Key": API_KEY}
)
data = response.json()
# Aplikace multiplikátoru velikosti na základě důvěry Smart Money
if data["confidence"] == VYSOKÁ:
position_size = base_size * 1.5
elif data["confidence"] == STŘEDNÍ:
position_size = base_size * 1.0
elif data["confidence"] == NÍZKÁ:
position_size = base_size * 0.5
elif data["confidence"] == VETO:
return "SKIP" # Netradej
# Proveď obchod s konečnou velikostí
execute_order(symbol, direction, position_size)

Vytvářejte lepší strategie se signály Smart Money

Kombinujte sledování velryb, derivátovou inteligenci a on-chain metriky do vašich kvantitativních modelů. Backtestované strategie se zlepší o 5-8 % při přidání potvrzení Smart Money.

Začněte backtestovat zdarma →