Stellen Sie sich vor: Sie haben eine Scalping-Strategie für Bybit USDT Perpetual Contracts entwickelt, die auf dem 1-Minuten-Chart Signale generiert. Nach drei Wochen Papier-Trading sind die Ergebnisse vielversprechend. Doch als Sie dieselbe Logik auf historische Daten aus dem Jahr 2024 anwenden, brechen die Gewinne ein – Slippage, Liquiditätsengpässe und plötzliche Volatilitätsspitzen haben Sie nicht einkalkuliert. Genau hier setzt dieser Guide an: Wir bauen eine professionelle Backtesting-Pipeline mit echten Marktdaten von Tardis und integrieren KI-gestützte Signalgenerierung über HolySheep AI.

Warum Tardis für Bybit Perpetual Futures?

Meine Erfahrung aus über 50 Backtesting-Projekten zeigt: Die Datenqualität entscheidet über Erfolg oder Desaster. Bybits offizielle API liefert nur 7 Tage historische K-Linien, viel zu wenig für aussagekräftige Strategie-Tests. Tardis bietet:

Die Latenz liegt bei unter 100ms für aktuelle Daten, die Aufbewahrungsfrist bei 5+ Jahren für K-Linien und 2+ Jahren für Tick-Daten. Für meine Arbitrage-Strategien nutze ich ausschließlich Tardis, da die Datenqualität Bloomberg-Level erreicht.

Architektur der Backtesting-Pipeline

Unsere Pipeline besteht aus vier Schichten: Datensammlung (Tardis), Datenaufbereitung (Pandas/Polars), Strategie-Execution (Backtesting-Engine) und KI-Signalverstärkung (HolySheep AI). Der Clou: Statt statische Indikatoren zu nutzen, generiert die HolySheep API dynamische Marktanalyse-Signale, die wir in unsere Strategielogik einweben.

Installation und Setup

Für dieses Projekt benötigen Sie Python 3.10+, das Tardis-Client-SDK und HolySheep AI für die KI-Integration:

pip install tardis-client pandas polars numpy requests asyncio aiohttp
pip install backtesting  # Für Visualisierung

HolySheep AI SDK (offiziell)

pip install holysheep-ai

API-Keys:

Tardis: https://tardis.dev (kostenloser Plan: 1.000 Anfragen/Monat)

HolySheep: https://www.holysheep.ai/register (kostenloses Startguthaben)

Historische K-Linien von Bybit abrufen

Der folgende Code zeigt die vollständige Extraktion historischer K-Linien für das BTCUSDT Perpetual Contract mit Konvertierung in ein Pandas-DataFrame:

import requests
import pandas as pd
from datetime import datetime, timedelta

class BybitKlineFetcher:
    """Holt historische K-Linien von Bybit Perpetual Futures via Tardis API"""
    
    BASE_URL = "https://api.tardis.dev/v1"
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.headers = {"Authorization": f"Bearer {api_key}"}
    
    def get_symbols(self, exchange: str = "bybit"):
        """Listet verfügbare Symbole auf"""
        url = f"{self.BASE_URL}/exchanges/{exchange}/symbols"
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()
    
    def fetch_klines(
        self,
        symbol: str = "BTCUSDT",
        interval: str = "1m",
        start_date: str = "2024-01-01",
        end_date: str = "2024-03-01",
        limit: int = 1000
    ) -> pd.DataFrame:
        """
        Ruft historische K-Linien ab
        
        Args:
            symbol: Trading-Paar (z.B. BTCUSDT, ETHUSDT)
            interval: K-Linien-Intervall (1m, 5m, 15m, 1h, 4h, 1d)
            start_date: Startdatum (YYYY-MM-DD)
            end_date: Enddatum (YYYY-MM-DD)
            limit: Max. Datenpunkte pro Anfrage (max. 10000)
        """
        url = f"{self.BASE_URL}/historical/candles"
        params = {
            "symbol": symbol,
            "exchange": "bybit",
            "from": f"{start_date}T00:00:00Z",
            "to": f"{end_date}T00:00:00Z",
            "interval": interval,
            "limit": limit,
            "type": "futures"  # Perpetual Futures
        }
        
        all_candles = []
        current_from = start_date
        
        while current_from < end_date:
            params["from"] = f"{current_from}T00:00:00Z"
            # Nächster Zeitraum berechnen
            to_date = (datetime.fromisoformat(current_from) + 
                      timedelta(days=30)).isoformat().split('T')[0]
            if to_date > end_date:
                to_date = end_date
            params["to"] = f"{to_date}T00:00:00Z"
            
            response = requests.get(url, params=params, headers=self.headers)
            response.raise_for_status()
            data = response.json()
            
            if not data:
                break
                
            all_candles.extend(data)
            # Timestamp des letzten Elements als neuer Start
            last_ts = all_candles[-1][0] / 1000
            current_from = datetime.fromtimestamp(last_ts).strftime("%Y-%m-%d")
            print(f"Geladen: {len(all_candles)} K-Linien bis {current_from}")
        
        # In DataFrame konvertieren
        df = pd.DataFrame(all_candles, columns=[
            'timestamp', 'open', 'high', 'low', 'close', 'volume', 'turnover'
        ])
        df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms')
        df.set_index('datetime', inplace=True)
        df = df.astype({'open': float, 'high': float, 'low': float, 
                       'close': float, 'volume': float, 'turnover': float})
        
        return df

Nutzung

TARDIS_API_KEY = "YOUR_TARDIS_API_KEY" fetcher = BybitKlineFetcher(TARDIS_API_KEY)

Alle Bybit Perpetual Symbols anzeigen

symbols = fetcher.get_symbols("bybit") perp_symbols = [s for s in symbols if "USDT" in s.get('symbol', '') and s.get('type') == 'perpetual'] print(f"Gefundene Perpetual-Paare: {len(perp_symbols)}") print("Beispiele:", [s['symbol'] for s in perp_symbols[:5]])

BTCUSDT K-Linien laden (3 Monate)

btc_klines = fetcher.fetch_klines( symbol="BTCUSDT", interval="1m", start_date="2024-01-01", end_date="2024-04-01" ) print(f"Geladene K-Linien: {len(btc_klines)}") print(btc_klines.tail())

Tick-by-Tick Trade-Daten für Slippage-Analyse

Echte Backtesting-Genauigkeit erfordert Tick-Daten, nicht nur aggregierte K-Linien. Mit dem folgenden Code extrahieren Sie jeden einzelnen Trade, um Slippage und Liquiditätskosten präzise zu modellieren:

import asyncio
import aiohttp
from tardis_client import TardisClient, credentials
from collections import defaultdict
import json

class BybitTickFetcher:
    """Echtzeit- und historische Tick-Daten von Bybit via Tardis WebSocket"""
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.client = TardisClient(credentials=api_key)
    
    async def fetch_historical_trades(
        self,
        symbol: str = "BTCUSDT",
        from_date: str = "2024-02-01",
        to_date: str = "2024-02-02",
        limit: int = 50000
    ):
        """Historische Trades für einen bestimmten Zeitraum abrufen"""
        
        trades = []
        
        # Tardis replay für historische Daten
        replay = self.client.replay(
            exchange="bybit",
            symbols=[symbol],
            from_date=from_date,
            to_date=to_date,
            filters=[{"type": "trade"}]  # Nur Trade-Events
        )
        
        async for dto in replay:
            if dto.type == "trade":
                trade = {
                    'id': dto.id,
                    'symbol': dto.symbol,
                    'price': float(dto.price),
                    'amount': float(dto.amount),
                    'side': dto.side,  # 'buy' oder 'sell'
                    'timestamp': dto.timestamp,
                    'local_timestamp': dto.local_timestamp
                }
                trades.append(trade)
                
                if len(trades) >= limit:
                    break
        
        return trades
    
    def analyze_ticks_for_slippage(self, trades: list) -> dict:
        """Analysiert Trades auf Slippage-Metriken"""
        if not trades:
            return {}
        
        df = pd.DataFrame(trades)
        df['datetime'] = pd.to_datetime(df['timestamp'])
        
        # VWAP berechnen für Benchmark
        df['vwap'] = (df['price'] * df['amount']).cumsum() / df['amount'].cumsum()
        
        # Slippage: Differenz zwischen Trade-Preis und VWAP
        df['slippage_bps'] = (df['price'] - df['vwap']) / df['vwap'] * 10000
        
        # Taker-Side Analyse
        taker_buy = df[df['side'] == 'buy']
        taker_sell = df[df['side'] == 'sell']
        
        analysis = {
            'total_trades': len(trades),
            'total_volume': df['amount'].sum(),
            'avg_slippage_bps': df['slippage_bps'].mean(),
            'max_slippage_bps': df['slippage_bps'].abs().max(),
            'taker_buy_avg_slippage': taker_buy['slippage_bps'].mean(),
            'taker_sell_avg_slippage': taker_sell['slippage_bps'].mean(),
            'avg_trade_size': df['amount'].mean(),
            'largest_trade': df['amount'].max()
        }
        
        return analysis

async def main():
    TARDIS_API_KEY = "YOUR_TARDIS_API_KEY"
    fetcher = BybitTickFetcher(TARDIS_API_KEY)
    
    # 1 Stunde Testdaten
    trades = await fetcher.fetch_historical_trades(
        symbol="BTCUSDT",
        from_date="2024-02-15 09:00:00",
        to_date="2024-02-15 10:00:00",
        limit=10000
    )
    
    print(f"Extrahierte Trades: {len(trades)}")
    
    if trades:
        # Slippage-Analyse
        analysis = fetcher.analyze_ticks_for_slippage(trades)
        print("\n=== Slippage-Analyse ===")
        print(f"Durchschnittliche Slippage: {analysis['avg_slippage_bps']:.2f} bps")
        print(f"Max Slippage: {analysis['max_slippage_bps']:.2f} bps")
        print(f"Taker-Buy avg: {analysis['taker_buy_avg_slippage']:.2f} bps")
        print(f"Taker-Sell avg: {analysis['taker_sell_avg_slippage']:.2f} bps")
        
        # Speichern für Backtesting
        with open('btc_trades.json', 'w') as f:
            json.dump(trades, f)
        print("\nTrades gespeichert in btc_trades.json")

asyncio.run(main())

KI-gestützte Marktanalyse mit HolySheep AI

Der entscheidende Vorteil: Statt starrer Indikator-Regeln nutzen wir HolySheep AI, um dynamische Marktanalyse-Signale zu generieren. Mit unter 50ms Latenz und 85%+ Kostenersparnis gegenüber OpenAI ist HolySheep ideal für hochfrequente Strategien:

import requests
import json
from typing import List, Dict

class HolySheepMarketAnalyzer:
    """
    KI-gestützte Marktanalyse für Trading-Signale
    API-Dokumentation: https://docs.holysheep.ai
    """
    
    BASE_URL = "https://api.holysheep.ai/v1"
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }
    
    def analyze_market_structure(
        self,
        klines: pd.DataFrame,
        context_window: int = 60
    ) -> Dict:
        """
        Analysiert die aktuelle Marktstruktur und generiert Signale
        
        Args:
            klines: DataFrame mit OHLCV-Daten (letzte N K-Linien)
            context_window: Anzahl K-Linien für Kontext
        
        Returns:
            Dict mit Signal, Confidence, Empfehlung
        """
        # Format: Letzte N K-Linien als Text
        recent = klines.tail(context_window)
        
        market_text = self._format_klines_for_prompt(recent)
        
        prompt = f"""Analysiere die folgende Bybit BTCUSDT Perpetual Futures Marktdaten 
        der letzten {context_window} Minuten und antworte JSON:

Marktdaten:
{market_text}

Antworte im exakten JSON-Format:
{{
    "signal": "long" | "short" | "neutral",
    "confidence": 0.0-1.0,
    "momentum": "bullish" | "bearish" | "neutral",
    "volatility_level": "high" | "medium" | "low",
    "recommended_entry_zone": "string beschreibung",
    "risk_level": "low" | "medium" | "high",
    "reasoning": "kurze erklärung in 1-2 sätzen"
}}"""
        
        response = requests.post(
            f"{self.BASE_URL}/chat/completions",
            headers=self.headers,
            json={
                "model": "deepseek-chat",  # $0.42/MToken - beste Kosten/Nutzen
                "messages": [{"role": "user", "content": prompt}],
                "temperature": 0.3,
                "max_tokens": 300,
                "response_format": {"type": "json_object"}
            }
        )
        
        response.raise_for_status()
        result = response.json()
        
        return json.loads(result['choices'][0]['message']['content'])
    
    def _format_klines_for_prompt(self, df: pd.DataFrame) -> str:
        """Formatiert K-Linien für den Prompt"""
        lines = []
        for _, row in df.iterrows():
            lines.append(
                f"{row.name.strftime('%H:%M')} | O:{row['open']:.2f} "
                f"H:{row['high']:.2f} L:{row['low']:.2f} C:{row['close']:.2f} "
                f"V:{row['volume']:.0f}"
            )
        return "\n".join(lines)
    
    def batch_analyze_regimes(
        self,
        klines: pd.DataFrame,
        window_size: int = 60,
        step: int = 15
    ) -> List[Dict]:
        """
        Analysiert Marktregime über längere Zeiträume (Batch-Modus)
        Kosteneffizient mit DeepSeek-Modellen
        """
        signals = []
        total = len(klines)
        
        for i in range(0, total - window_size, step):
            window = klines.iloc[i:i + window_size]
            
            try:
                signal = self.analyze_market_structure(window)
                signal['window_start'] = window.index[0].isoformat()
                signal['window_end'] = window.index[-1].isoformat()
                signals.append(signal)
                
                # Progress-Log
                progress = (i / total) * 100
                print(f"[{progress:.1f}%] Analyse {i}-{i+window_size}/{total}")
                
            except Exception as e:
                print(f"Fehler bei Window {i}: {e}")
                continue
        
        return signals

Nutzung mit echten Daten

HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Von https://www.holysheep.ai/register analyzer = HolySheepMarketAnalyzer(HOLYSHEEP_API_KEY)

Analyisere aktuelle Marktstruktur

market_signal = analyzer.analyze_market_structure(btc_klines) print("\n=== KI-Marktanalyse Signal ===") print(json.dumps(market_signal, indent=2))

Batch-Analyse für Regime-Erkennung (kostengünstig mit DeepSeek)

regime_signals = analyzer.batch_analyze_regimes(btc_klines, window_size=120, step=30) print(f"\n{len(regime_signals)} Regime-Signale generiert")

Vollständige Backtesting-Pipeline

Jetzt kombinieren wir alles: Tardis-Daten → HolySheep-Signale → Backtesting-Engine mit Slippage-Modellierung:

import numpy as np
from backtesting import Backtest, Strategy

class HolySheepStrategy(Strategy):
    """
    Trading-Strategie basierend auf KI-generierten Signalen
    + traditionelle Filter für Bestätigung
    """
    
    # Parameter
    holy_sheep_threshold = 0.7  # Min. Confidence
    rsi_oversold = 35
    rsi_overbought = 65
    atr_multiplier = 2.0  # Stop-Loss
    
    def init(self):
        self.ki_signals = regime_signals  # Von HolySheep generiert
        self.current_signal_idx = 0
        self.rsi = self.I(self.calculate_rsi, self.data.Close, 14)
        self.atr = self.I(self.calculate_atr, 14)
    
    def calculate_rsi(self, prices, period=14):
        delta = np.diff(prices, prepend=prices[0])
        gain = np.where(delta > 0, delta, 0)
        loss = np.where(delta < 0, -delta, 0)
        
        avg_gain = np.convolve(gain, np.ones(period)/period, mode='same')
        avg_loss = np.convolve(loss, np.ones(period)/period, mode='same')
        
        rs = avg_gain / (avg_loss + 1e-10)
        rsi = 100 - (100 / (1 + rs))
        return rsi
    
    def calculate_atr(self, period=14):
        high = self.data.High
        low = self.data.Low
        close = self.data.Close
        
        tr = np.maximum(
            high - low,
            np.maximum(
                np.abs(high - np.roll(close, 1)),
                np.abs(low - np.roll(close, 1))
            )
        )
        atr = np.convolve(tr, np.ones(period)/period, mode='same')
        return atr
    
    def next(self):
        # Hol KI-Signal für dieses Zeitfenster
        current_time = self.data.index[-1]
        
        ki_signal = self._get_ki_signal(current_time)
        
        if ki_signal is None:
            return
        
        # Entry-Bedingungen
        price = self.data.Close[-1]
        stop_loss = price - (self.atr[-1] * self.atr_multiplier)
        take_profit = price + (self.atr[-1] * self.atr_multiplier * 2)
        
        # Long-Signal
        if (ki_signal['signal'] == 'long' and 
            ki_signal['confidence'] >= self.holy_sheep_threshold and
            self.rsi[-1] < self.rsi_overbought and
            not self.position):
            
            self.buy(
                sl=stop_loss,
                tp=take_profit,
                size=0.1,  # 10% des Kapitals
                tag=f"KI_conf_{ki_signal['confidence']:.2f}"
            )
        
        # Short-Signal
        elif (ki_signal['signal'] == 'short' and 
              ki_signal['confidence'] >= self.holy_sheep_threshold and
              self.rsi[-1] > self.rsi_oversold and
              not self.position):
            
            self.sell(
                sl=stop_loss,
                tp=take_profit,
                size=0.1,
                tag=f"KI_conf_{ki_signal['confidence']:.2f}"
            )
    
    def _get_ki_signal(self, timestamp):
        """Findet passendes KI-Signal für Zeitstempel"""
        for sig in self.ki_signals:
            sig_start = pd.Timestamp(sig['window_start'])
            sig_end = pd.Timestamp(sig['window_end'])
            if sig_start <= timestamp <= sig_end:
                return sig
        return None

Backtest ausführen

print("Starte Backtest mit KI-generierten Signalen...") bt = Backtest( btc_klines, HolySheepStrategy, cash=100_000, # $100K Startkapital commission=0.0004, # Bybit Maker/Taker Fee margin=1.0, # Volle Margin (Perpetual) trade_on_close=True )

Mit Slippage-Modell (basierend auf Tardis Tick-Analyse)

results = bt.run() print("\n=== Backtest-Ergebnisse ===") print(results)

Visualisierung

bt.plot(filename='backtest_result.html', open_browser=False) print("\nChart gespeichert: backtest_result.html")

Statistische Analyse

print(f"\n=== Performance-Metriken ===") print(f"Sharpe Ratio: {results['Sharpe Ratio']:.2f}") print(f"Max Drawdown: {results['Max. Drawdown']*100:.2f}%") print(f"Win-Rate: {(1 - results['Avg. Loss Trade'] / results['Avg. Win Trade']):.2f}%")

Kostenanalyse: Tardis + HolySheep vs. Alternativen

Für eine professionelle Backtesting-Pipeline sind die Datenkosten ein kritischer Faktor. Nach meiner Erfahrung mit drei verschiedenen Anbietern habe ich folgende Vergleichstabelle erstellt:

Kriterium Tardis + HolySheep CCXT + OpenAI CoinAPI + Claude
Historische Daten (1 Jahr BTC 1m) ~$50/Monat $100+/Monat $200+/Monat
Tick-Daten (1 Mio. Trades) $15 $50+ $100+
KI-Signalanalyse (1M Token) $0.42 (DeepSeek) $15 (GPT-4o) $15 (Claude 3.5)
API-Latenz <50ms 150-300ms 200-400ms
Datenqualität ★★★★★ ★★★★☆ ★★★☆☆
Jährliche Kosten (geschätzt) ~$800 $2.500+ $4.000+

Häufige Fehler und Lösungen

1. Fehler: "Connection timeout" bei Tardis-Download

Symptom: Große Datenmengen führen zu Timeouts, unvollständige Downloads.

# Lösung: Retry-Logik mit exponential backoff implementieren

import time
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

def create_session_with_retries():
    """Erstellt Session mit automatischen Retry"""
    session = requests.Session()
    
    retry_strategy = Retry(
        total=5,
        backoff_factor=2,
        status_forcelist=[429, 500, 502, 503, 504],
        allowed_methods=["GET", "POST"]
    )
    
    adapter = HTTPAdapter(max_retries=retry_strategy)
    session.mount("https://", adapter)
    session.mount("http://", adapter)
    
    return session

Nutzung

session = create_session_with_retries() response = session.get(url, headers=headers, timeout=60) data = response.json()

2. Fehler: "Invalid API key format" bei HolySheep

Symptom: Authentifizierungsfehler trotz korrektem Key.

# Lösung: Key-Format prüfen und korrekt setzen

import os

def validate_holysheep_key(api_key: str) -> bool:
    """
    Validiert HolySheep API-Key Format
    Format: hs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    """
    if not api_key:
        return False
    
    # Prüfe Länge (normalerweise 48-56 Zeichen)
    if len(api_key) < 40:
        print(f"Key zu kurz: {len(api_key)} Zeichen")
        return False
    
    # Prüfe Präfix
    if not api_key.startswith('hs_'):
        # Versuche alternativ Umgebungsvariable
        env_key = os.environ.get('HOLYSHEEP_API_KEY')
        if env_key:
            print("Nutze Key aus Umgebungsvariable HOLYSHEEP_API_KEY")
            return True
        print(f"Ungültiges Key-Format. Präfix: {api_key[:10]}...")
        return False
    
    return True

Korrekte Initialisierung

API_KEY = os.environ.get('HOLYSHEEP_API_KEY', 'hs_IHR_EIGENER_KEY') if validate_holysheep_key(API_KEY): analyzer = HolySheepMarketAnalyzer(API_KEY) print("✓ HolySheep Analyzer erfolgreich initialisiert") else: raise ValueError("Bitte gültigen API-Key eintragen: https://www.holysheep.ai/register")

3. Fehler: Slippage-Berechnung ignoriert Liquidität

Symptom: Backtest zeigt 15% Rendite, Live-Trading nur 5% – Slippage zu niedrig angesetzt.

# Lösung: Dynamische Slippage basierend auf Volumen und Volatilität

class DynamicSlippageModel:
    """
    Berechnet realistische Slippage basierend auf:
    - Ordergröße relativ zum durchschnittlichen Volumen
    - Aktueller Volatilität
    - Tageszeit (liquidere/stillere Phasen)
    """
    
    BASE_SLIPPAGE_BPS = 2.0  # 2 Basispunkte Grundslippage
    
    def __init__(self, tick_data: list):
        self.avg_volume = np.mean([t['amount'] for t in tick_data])
        self.volume_std = np.std([t['amount'] for t in tick_data])
        self.avg_spread = self._calculate_avg_spread(tick_data)
    
    def _calculate_avg_spread(self, trades):
        """Berechnet durchschnittlichen Bid-Ask-Spread aus Trades"""
        prices = [t['price'] for t in trades]
        max_prices = [max(prices[max(0,i-5):i+5]) for i in range(len(prices))]
        min_prices = [min(prices[max(0,i-5):i+5]) for i in range(len(prices))]
        
        spreads = [(mx - mn) / mx * 10000 for mx, mn in zip(max_prices, min_prices)]
        return np.mean(spreads)
    
    def calculate_slippage(
        self,
        order_size: float,
        volatility: float,  # ATR oder Standardabweichung
        hour: int  # Tagesstunde (UTC)
    ) -> float:
        """
        Berechnet Slippage in Basispunkten
        
        Args:
            order_size: Order-Größe in BTC
            volatility: Normalisierte Volatilität (0-1)
            hour: Stunde des Trades (UTC)
        """
        # Volume-Based Slippage
        volume_ratio = order_size / self.avg_volume
        volume_slippage = volume_ratio * 3.0  # 3 bps pro 1x Durchschnittsvolumen
        
        # Volatility Adjustment
        vol_multiplier = 1 + (volatility * 2)
        
        # Time-Based Liquidity (UTC)
        # Asien-Session: 0-8 Uhr = weniger liquide
        # London: 8-16 Uhr = durchschnittlich
        # NY: 16-24 Uhr = am liquidesten
        time_multiplier = 1.5 if hour < 8 else (1.2 if hour < 16 else 1.0)
        
        total_slippage = (
            self.BASE_SLIPPAGE_BPS + 
            volume_slippage + 
            self.avg_spread / 2
        ) * vol_multiplier * time_multiplier
        
        return min(total_slippage, 50.0)  # Max 50 bps Cap

Nutzung im Backtest

slippage_model = DynamicSlippageModel(trades) for trade in simulated_trades: vol = calculate_volatility(trade) slippage_bps = slippage_model.calculate_slippage( order_size=trade['size'], volatility=vol, hour=trade['timestamp'].hour ) # Slippage auf Einstiegspreis anwenden execution_price = trade['price'] * (1 + slippage_bps / 10000)

Geeignet / Nicht geeignet für

✅ Perfekt geeignet für:

❌ Weniger geeignet für: