Kantitatif Strateji Geliştirme — Hipotezden Üretime

Karlı bir ticaret stratejisi oluşturmak için sadece içgüdüsel hisler yeterli değildir. Test edilebilir hipotezler, titiz backtest yapma ve curve-fitting'den kaçınmak için dikkatli optimizasyon gerektirir. Bu rehber, Smart Money API'nin algoritmalarını güçlendiren metodoloji ile kantitatif bir stratejiyi ilk prensiplerden oluşturma sürecinde size yol gösterir.

Kritik prensip: Tüccarların %95'i, örneklem içi veriler üzerinde optimizasyon yaptıkları için başarısız olur. Tarihsel veriler üzerinde %200 getiri sağlayan bir strateji, canlı ticarette muhtemelen para kaybedecektir. Bu tuzağı nasıl önleyeceğinizi öğrenin.

Hipotez Aşaması

Yanlışlanabilir Bir İddia ile Başlayın

Her strateji, spesifik ve test edilebilir bir hipotezle başlar. "Bitcoin bazen yükselir" değil, "Finansman oranları pozitif olduğunda VE balina uzun fikir birliği %65'i aştığında, sonraki 4 saatlik mum %56 olasılıkla daha yüksek kapanır."

İyi hipotezler:

Kötü hipotezler:

Avantajınızı Tanımlayın

Piyasanın fiyatlamadığı nedir? Smart Money API için bu: "Balina fikir birliği, perakende piyasanın tepki vermesinden 2-4 saat önce değişir. En üst 250 cüzdanı gerçek zamanlı olarak takip edersek, hareketi önceden yakalayabiliriz."

Strateji Çerçevesi

1. Giriş Koşulları

Ne zaman giriyorsunuz? Açık olun:

Python — Giriş mantığı
# Strateji: Balina Fikir Birliği + Türevler Uyumu
def should_enter_long(symbol, bar):
# Koşul 1: Balina fikir birliği > %65 uzun
whale_long_pct = get_whale_consensus(symbol)
cond_whale = whale_long_pct > 0.65
# Koşul 2: Finansman oranı pozitif ve artıyor
fr_current = get_funding_rate(symbol)
fr_previous = get_funding_rate(symbol, offset=1)
cond_fr = (fr_current > 0) and (fr_current > fr_previous)
# Koşul 3: LSR > 1.25 (uzunlar kısalardan fazla)
lsr = get_long_short_ratio(symbol)
cond_lsr = lsr > 1.25
# Koşul 4: Fiyat 50 günlük MA'nın üzerinde (yükseliş eğilimi)
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. Çıkış Koşulları

Ne zaman çıkıyorsunuz? Kar hedeflerini ve stopları tanımlayın:

Python — Çıkış mantığı
def should_exit_long(entry_price, current_price, time_in_trade):
pnl_pct = (current_price - entry_price) / entry_price
# +%2'de kar al
if pnl_pct > 0.02:
return True, "profit_target"
# -%1'de stop loss
if pnl_pct < -0.01:
return True, "stop_loss"
# Zaman temelli çıkış: 4 saat sonra kapat
if time_in_trade > timedelta(hours=4):
return True, "time_exit"
return False, None

3. Pozisyon Boyutlandırma

Her işlemde ne kadar risk alıyorsunuz? Kelly Kriteri veya sabit kesirli bahis kullanın:

Python — Pozisyon boyutlandırma
def calculate_position_size(account_balance, win_rate, avg_win, avg_loss):
# Kelly Kriteri: f* = (p*b - q) / b
# p = kazanma oranı, b = kazanma/kayıp oranı, q = kayıp oranı
p = win_rate
q = 1 - win_rate
b = avg_win / avg_loss
kelly_fraction = (p * b - q) / b
# Muhafazakar olmak için Kelly'nin %25'ini kullanın (iflastan kaçının)
position_fraction = kelly_fraction * 0.25
risk_amount = account_balance * position_fraction
return risk_amount

Backtester Oluşturma

Olay Tabanlı Backtest Motoru

Python — Backtest çerçevesi
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):
# Check exit conditions for open trades
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)
# Check entry conditions
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()

Key Backtesting Metrics

Avoiding Over-Optimization

The Overfitting Trap

If you tweak parameters on historical data until returns are 200%, you'll be disappointed live. Use strict out-of-sample testing:

Walk-forward validation: Optimize on 1 year of data, test on next 3 months. Then optimize on years 2-3, test on year 3Q1. Repeat across entire dataset. Report only out-of-sample results.

Parameter Sensitivity

Test multiple parameter combinations with a grid search, but penalize complexity:

Python — Grid search with walk-forward
def walk_forward_optimization(data, param_ranges):
results = []
train_window = 252 # 1 year of daily data
test_window = 63 # 3 months
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]
# Optimize on training data
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 on unseen data
oos_result = backtest(test_data, best_params)
results.append({"is": best_return, "oos": oos_result.return_pct})
return results

Moving to Production

Paper Trading First

Before risking real capital, trade on paper (simulated) for 2-4 weeks. Your live strategy will underperform backtest by 5-15% due to slippage, latency, and execution. If paper trading matches backtest closely, you're ready.

Risk Management in Live Trading

Live trading is different. Set hard limits:

Integration with Smart Money API

Use our confirmation scores as a pre-filter or multiplier on your signals:

Python — API integration
import requests
def execute_with_confirmation(symbol, direction, signal_strength):
# Get Smart Money confirmation
response = requests.get(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={symbol}&direction={direction}",
headers={"X-API-Key": API_KEY}
)
data = response.json()
# Apply size multiplier based on Smart Money confidence
if data["confidence"] == YÜKSEK:
position_size = base_size * 1.5
elif data["güven"] == ORTA:
position_size = base_size * 1.0
elif data["güven"] == DÜŞÜK:
position_size = base_size * 0.5
elif data["güven"] == VETO:
return "ATLA" # İşlem yapma
# Son boyutla işlemi gerçekleştir
execute_order(symbol, direction, position_size)

Smart Money sinyalleriyle daha iyi stratejiler oluşturun

Balina takibi, türev istihbaratı ve on-chain metriklerini nicel modellerinize entegre edin. Smart Money onayı eklendiğinde backtest edilmiş stratejiler %5-8 iyileşme gösterir.

Ücretsiz Backtest Yapın →