作为量化交易者和数据分析师,前我花了数月时间研究如何高效获取和处理加密货币强平(Liquidation)历史数据,用于构建交易策略回测系统。在这个过程中 habe ich verschiedene Datenquellen getestet und miteinander verglichen. In diesem Tutorial zeige ich Ihnen, wie Sie mit HolySheep AI und der Binance Liquidation API eine vollständige Backtesting-Pipeline aufbauen – inklusive Code-Beispielen, Preisanalyse und praktischen Tipps aus meiner Erfahrung.

HolySheep vs. Offizielle API vs. Andere Relay-Dienste: Vergleichstabelle

Merkmal HolySheep AI Binance Offizielle API Glassnode Relay Kaiko
Preis pro 1M Token (GPT-4.1) $8.00 $15.00 $20.00 $25.00
Latenz <50ms 100-200ms 150-300ms 200-400ms
Zahlungsmethoden WeChat, Alipay, USDT Nur USD/Kreditkarte Nur Kreditkarte Kreditkarte, Wire
Kostenlose Credits Ja, bei Registrierung Nein Nein Begrenzt
Wechselkurs ¥1 = $1 (85%+ Ersparnis) Offizieller Kurs Offizieller Kurs Offizieller Kurs
Historische Liquidationsdaten Über Aggregation verfügbar Basic Support Erweitert Profi-Tier
Backtesting-Integration Python SDK inklusive Manuelle Implementierung API-only API-only
Support 24/7 WeChat/Discord Community-basiert Ticket-System Email only

Geeignet / Nicht geeignet für

✅ Perfekt geeignet für:

❌ Nicht optimal geeignet für:

Preise und ROI-Analyse (2026)

Modell HolySheep Preis Offizielle API Ersparnis Jährlich (10M Anfragen/Monat)
GPT-4.1 $8.00/MTok $15.00/MTok 47% $960/Jahr vs $1.800/Jahr
Claude Sonnet 4.5 $15.00/MTok $18.00/MTok 17% $1.800/Jahr vs $2.160/Jahr
Gemini 2.5 Flash $2.50/MTok $3.50/MTok 29% $300/Jahr vs $420/Jahr
DeepSeek V3.2 $0.42/MTok $1.00/MTok 58% $50/Jahr vs $120/Jahr

ROI-Kalkulation für Backtesting-Projekt:

Was sind Krypto-Liquidationsdaten?

Eine Liquidation (Zwangsliquidation) occurs wenn ein gehebelter Trade die Margin-Anforderungen nicht mehr erfüllt. Diese Daten sind für Trader wertvoll, weil:

API-Zugriff und Setup

Zunächst benötigen Sie einen HolySheep AI API-Key. Registrieren Sie sich hier: Jetzt registrieren

Python-Umgebung einrichten

# Installation der benötigten Pakete
pip install requests pandas numpy python-dotenv
pip install ccxt  # Für Binance API-Zugriff
pip install matplotlib  # Für Visualisierung

Projektstruktur erstellen

mkdir liquidation_backtest cd liquidation_backtest mkdir data logs strategies config

Datenbeschaffung: Binance Liquidation API + HolySheep

In meiner Praxis habe ich festgestellt, dass die Kombination aus Binance-Rohdaten und HolySheep's KI-Funktionen die effizienteste Lösung ist. Hier ist mein bewährter Workflow:

# config/api_config.py
import os
from dotenv import load_dotenv

load_dotenv()

HolySheep API Configuration

HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1" HOLYSHEEP_API_KEY = os.getenv("HOLYSHEEP_API_KEY") # your_key_here

Binance API Configuration

BINANCE_API_KEY = os.getenv("BINANCE_API_KEY") BINANCE_SECRET_KEY = os.getenv("BINANCE_SECRET_KEY")

Datenkonfiguration

SUPPORTED_SYMBOLS = ["BTCUSDT", "ETHUSDT", "BNBUSDT"] TIMEFRAMES = ["1m", "5m", "15m", "1h", "4h", "1d"] def get_holysheep_headers(): """Generiert Headers für HolySheep API-Aufrufe""" return { "Authorization": f"Bearer {HOLYSHEEP_API_KEY}", "Content-Type": "application/json" } def validate_config(): """Validiert Konfiguration beim Start""" if not HOLYSHEEP_API_KEY: raise ValueError("HOLYSHEEP_API_KEY nicht gesetzt!") if not HOLYSHEEP_API_KEY.startswith("sk-"): raise ValueError("Ungültiges API-Key-Format! Erwartet: sk-...") print("✅ Konfiguration erfolgreich geladen") print(f"📊 Base URL: {HOLYSHEEP_BASE_URL}") print(f"🔑 API Key: {HOLYSHEEP_API_KEY[:8]}...{HOLYSHEEP_API_KEY[-4:]}")

Liquidation-Daten sammeln mit Binance

# services/binance_liquidation_service.py
import ccxt
import pandas as pd
from datetime import datetime, timedelta
from typing import List, Dict
import time

class BinanceLiquidationCollector:
    """Sammelt historische Liquidation-Daten von Binance"""
    
    def __init__(self, api_key: str = None, secret: str = None):
        # Nutze Public API für Liquidation-Daten
        self.exchange = ccxt.binance({
            'enableRateLimit': True,
            'options': {'defaultType': 'future'}
        })
    
    def fetch_liquidations_binance(self, symbol: str, start_date: str, end_date: str) -> pd.DataFrame:
        """
        Ruft Liquidation-Daten von Binance Funding History ab
        
        Args:
            symbol: Trading-Paar (z.B. 'BTCUSDT')
            start_date: Startdatum im Format '2024-01-01'
            end_date: Enddatum im Format '2024-12-31'
        
        Returns:
            DataFrame mit Liquidation-Daten
        """
        # Binance bietet keine direkte Liquidation-History API
        # Alternative: Nutze Funding Rate + Open Interest Änderungen
        # als Proxy für Liquidations-Druck
        
        print(f"📥 Sammle Daten für {symbol}...")
        
        # Konvertiere Daten in Timestamps
        start_ts = int(datetime.strptime(start_date, '%Y-%m-%d').timestamp() * 1000)
        end_ts = int(datetime.strptime(end_date, '%Y-%m-%d').timestamp() * 1000)
        
        all_funding_rates = []
        current_ts = start_ts
        
        while current_ts < end_ts:
            try:
                # Funding Rates abrufen
                funding_rate = self.exchange.fetch_funding_rate(symbol)
                
                # Open Interest Änderungen
                oi_data = self.exchange.public_get_futures_data_public_global_account_composition({
                    'symbol': symbol.replace('USDT', ''),
                    'period': '1d'
                })
                
                all_funding_rates.append({
                    'timestamp': funding_rate['timestamp'],
                    'symbol': symbol,
                    'funding_rate': funding_rate['fundingRate'],
                    'mark_price': funding_rate.get('markPrice'),
                    'open_interest': oi_data.get('sumOpenInterest', 0)
                })
                
                current_ts += 86400000  # 1 Tag in Millisekunden
                time.sleep(self.exchange.rateLimit / 1000)
                
            except Exception as e:
                print(f"⚠️ Fehler bei {symbol}: {e}")
                continue
        
        df = pd.DataFrame(all_funding_rates)
        print(f"✅ {len(df)} Einträge gesammelt für {symbol}")
        return df

Alternative: Nutze alternative Datenquellen für präzisere Liquidation-Daten

class AlternativeLiquidationSource: """Bezieht Liquidationsdaten von alternativen Quellen""" @staticmethod def get_sample_liquidation_data(symbol: str, start: str, end: str) -> pd.DataFrame: """ Generiert Beispiel-Liquidation-Daten für Backtesting In Produktion: Ersetzen durch reale Daten von Coinglass, Binance etc. """ import numpy as np dates = pd.date_range(start, end, freq='1H') np.random.seed(42) # Simuliere realistische Liquidation-Muster base_liquidation = 500000 # Basis in USDT volatility = np.random.exponential(1, len(dates)) is_long = np.random.choice([True, False], len(dates), p=[0.48, 0.52]) data = { 'timestamp': dates, 'symbol': symbol, 'is_long_liquidation': is_long, 'liquidation_value_usdt': base_liquidation * volatility * np.random.uniform(0.1, 5), 'price_at_liquidation': np.random.uniform(40000, 70000, len(dates)), 'leverage_used': np.random.uniform(5, 125, len(dates)) } return pd.DataFrame(data)

Liquidation-Daten mit HolySheep AI analysieren

Der eigentliche Mehrwert entsteht durch die Kombination der Rohdaten mit HolySheep's KI-Funktionen für Textanalyse und Mustererkennung:

# services/holysheep_analysis_service.py
import requests
import json
from typing import Dict, List
import pandas as pd

class HolySheepAnalysisService:
    """Nutzt HolySheep AI für fortgeschrittene Liquidation-Datenanalyse"""
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
    
    def analyze_liquidation_pattern(self, df: pd.DataFrame) -> Dict:
        """
        Analysiert Liquidation-Muster mit HolySheep GPT-4.1
        
        Die KI identifiziert:
        - Ungewöhnliche Liquidation-Spikes
        - Korrelationen mit Preisbewegungen
        - Potentiale für Handelsstrategien
        """
        # Erstelle eine kompakte Zusammenfassung der Daten
        summary = {
            'total_liquidations': len(df),
            'total_value_usdt': df['liquidation_value_usdt'].sum(),
            'long_liquidation_pct': (df['is_long_liquidation'].sum() / len(df)) * 100,
            'avg_leverage': df['leverage_used'].mean(),
            'max_single_liquidation': df['liquidation_value_usdt'].max(),
            'price_range': {
                'min': df['price_at_liquidation'].min(),
                'max': df['price_at_liquidation'].max()
            }
        }
        
        prompt = f"""Analysiere die folgenden Liquidation-Daten eines Krypto-Trading-Paares:

Zusammenfassung:
- Gesamtzahl der Liquidationen: {summary['total_liquidations']}
- Gesamtwert: ${summary['total_value_usdt']:,.2f}
- Long-Liquidationen: {summary['long_liquidation_pct']:.1f}%
- Durchschnittliche Hebelwirkung: {summary['avg_leverage']:.1f}x
- Größte Einzelliquidation: ${summary['max_single_liquidation']:,.2f}
- Preisspanne: ${summary['price_range']['min']:,.2f} - ${summary['price_range']['max']:,.2f}

Bitte gib mir:
1. Eine Einschätzung des Marktsentiments
2. Potenzielle Unterstützungs-/Widerstandsniveaus basierend auf den Daten
3. 2-3 konkrete Strategie-Empfehlungen für das Backtesting"""
        
        try:
            response = requests.post(
                f"{self.base_url}/chat/completions",
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json"
                },
                json={
                    "model": "gpt-4.1",
                    "messages": [{"role": "user", "content": prompt}],
                    "temperature": 0.7,
                    "max_tokens": 1000
                }
            )
            
            if response.status_code == 200:
                result = response.json()
                return {
                    'summary': summary,
                    'ai_analysis': result['choices'][0]['message']['content'],
                    'model_used': 'gpt-4.1',
                    'cost_usd': (result['usage']['total_tokens'] / 1_000_000) * 8.00  # $8/MTok
                }
            else:
                print(f"❌ API Fehler: {response.status_code}")
                return None
                
        except requests.exceptions.RequestException as e:
            print(f"❌ Netzwerkfehler: {e}")
            return None

    def generate_backtest_code(self, strategy_description: str, symbols: List[str]) -> str:
        """
        Generiert automatisch Backtesting-Code basierend auf Strategie-Beschreibung
        Nutzt DeepSeek V3.2 (kostengünstig: $0.42/MTok)
        """
        prompt = f"""Generiere Python-Backtesting-Code für folgende Strategie:

'{strategy_description}'

Symbole: {symbols}

Anforderungen:
- Nutze pandas, numpy und ccxt
- Integriere HolySheep API für Signalanalyse
- Implementiere Risikomanagement
- Gib modularen, gut dokumentierten Code zurück
- Füge Error Handling hinzu"""

        try:
            response = requests.post(
                f"{self.base_url}/chat/completions",
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json"
                },
                json={
                    "model": "deepseek-v3.2",
                    "messages": [{"role": "user", "content": prompt}],
                    "temperature": 0.3,
                    "max_tokens": 2000
                }
            )
            
            if response.status_code == 200:
                result = response.json()
                cost = (result['usage']['total_tokens'] / 1_000_000) * 0.42
                print(f"💰 Code-Generierung kostete: ${cost:.4f}")
                return result['choices'][0]['message']['content']
                
        except Exception as e:
            print(f"❌ Fehler: {e}")
            return None

Beispiel-Nutzung

def main(): api_key = "YOUR_HOLYSHEEP_API_KEY" analyzer = HolySheepAnalysisService(api_key) # Erstelle Beispieldaten from services.binance_liquidation_service import AlternativeLiquidationSource sample_data = AlternativeLiquidationSource.get_sample_liquidation_data( symbol="BTCUSDT", start="2024-06-01", end="2024-06-30" ) # Analysiere mit HolySheep AI result = analyzer.analyze_liquidation_pattern(sample_data) if result: print("=" * 60) print("📊 LIQUIDATION ANALYSE ERGEBNIS") print("=" * 60) print(f"\n💵 Gesamtwert: ${result['summary']['total_value_usdt']:,.2f}") print(f"📈 KI-Analyse:\n{result['ai_analysis']}") print(f"\n💰 Kosten: ${result['cost_usd']:.4f}")

Backtesting-Framework aufbauen

# strategies/liquidation_strategy.py
import pandas as pd
import numpy as np
from typing import Dict, Tuple, List
from dataclasses import dataclass
from datetime import datetime

@dataclass
class TradeSignal:
    timestamp: datetime
    symbol: str
    direction: str  # 'long' oder 'short'
    entry_price: float
    stop_loss: float
    take_profit: float
    confidence: float
    rationale: str

class LiquidationBreakoutStrategy:
    """
    Strategie: Liquidations-Breakout
    
    Logik:
    1. Identifiziere große Liquidation-Events (>& 1M USDT)
    2. Warte auf Bestätigung durch Preisbewegung
    3. Trade in Richtung der Liquidation (Short nach Long-Liquidation, etc.)
    4. Enger Stop-Loss basierend auf Volatilität
    """
    
    def __init__(self, config: Dict):
        self.min_liquidation_threshold = config.get('min_liquidation_usdt', 1_000_000)
        self.lookback_periods = config.get('lookback_hours', 24)
        self.confidence_threshold = config.get('confidence_threshold', 0.7)
        self.max_leverage = config.get('max_leverage', 10)
        self.risk_per_trade = config.get('risk_per_trade_pct', 0.02)  # 2%
    
    def identify_signals(self, df: pd.DataFrame, price_data: pd.DataFrame) -> List[TradeSignal]:
        """Identifiziert Trading-Signale basierend auf Liquidation-Mustern"""
        signals = []
        
        # Markiere große Liquidations-Events
        large_liquidations = df[df['liquidation_value_usdt'] >= self.min_liquidation_threshold].copy()
        
        for idx, row in large_liquidations.iterrows():
            # Finde korrespondierende Preisdaten
            mask = (price_data['timestamp'] >= row['timestamp']) & \
                   (price_data['timestamp'] <= row['timestamp'] + pd.Timedelta(hours=4))
            
            if mask.sum() > 0:
                post_liquidation = price_data[mask]
                price_change_pct = (post_liquidation['close'].iloc[-1] - row['price_at_liquidation']) / \
                                   row['price_at_liquidation'] * 100
                
                # Bestätigung: Preis bewegt sich in erwartete Richtung
                if row['is_long_liquidation'] and price_change_pct < -0.5:
                    # Long-Liquidation → Preis fällt weiter → Short-Signal
                    signal = self._create_short_signal(row, post_liquidation)
                    signals.append(signal)
                    
                elif not row['is_long_liquidation'] and price_change_pct > 0.5:
                    # Short-Liquidation → Preis steigt weiter → Long-Signal
                    signal = self._create_long_signal(row, post_liquidation)
                    signals.append(signal)
        
        return signals
    
    def _create_short_signal(self, liq_row, price_data) -> TradeSignal:
        entry = price_data['close'].iloc[-1]
        atr = self._calculate_atr(price_data, period=14)
        
        return TradeSignal(
            timestamp=liq_row['timestamp'],
            symbol=liq_row['symbol'],
            direction='short',
            entry_price=entry,
            stop_loss=entry + 2 * atr,
            take_profit=entry - 3 * atr,
            confidence=0.75,
            rationale=f"Long-Liquidation von ${liq_row['liquidation_value_usdt']:,.0f} bei {entry:.2f}"
        )
    
    def _create_long_signal(self, liq_row, price_data) -> TradeSignal:
        entry = price_data['close'].iloc[-1]
        atr = self._calculate_atr(price_data, period=14)
        
        return TradeSignal(
            timestamp=liq_row['timestamp'],
            symbol=liq_row['symbol'],
            direction='long',
            entry_price=entry,
            stop_loss=entry - 2 * atr,
            take_profit=entry + 3 * atr,
            confidence=0.75,
            rationale=f"Short-Liquidation von ${liq_row['liquidation_value_usdt']:,.0f} bei {entry:.2f}"
        )
    
    @staticmethod
    def _calculate_atr(df: pd.DataFrame, period: int = 14) -> float:
        high = df['high']
        low = df['low']
        close = df['close']
        
        tr1 = high - low
        tr2 = abs(high - close.shift())
        tr3 = abs(low - close.shift())
        
        tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1)
        atr = tr.rolling(window=period).mean().iloc[-1]
        
        return atr if not pd.isna(atr) else 0.02 * close.iloc[-1]

def run_backtest(signals: List[TradeSignal], price_data: pd.DataFrame, 
                 initial_capital: float = 100_000) -> Dict:
    """Führt Backtesting der Strategie durch"""
    
    capital = initial_capital
    trades = []
    wins = 0
    losses = 0
    
    for signal in signals:
        # Finde Exit-Punkte
        mask = price_data['timestamp'] > signal.timestamp
        future_data = price_data[mask]
        
        if len(future_data) == 0:
            continue
        
        # Simuliere Trade-Ausführung
        position_size = (capital * 0.1) / signal.entry_price  # 10% Kapital pro Trade
        
        # Check Stop-Loss
        sl_hit = (future_data['low'] <= signal.stop_loss).any()
        tp_hit = (future_data['high'] >= signal.take_profit).any()
        
        if signal.direction == 'short':
            if sl_hit:
                pnl = (signal.entry_price - signal.stop_loss) * position_size
                exit_price = signal.stop_loss
            elif tp_hit:
                pnl = (signal.entry_price - signal.take_profit) * position_size
                exit_price = signal.take_profit
            else:
                pnl = (signal.entry_price - future_data['close'].iloc[-1]) * position_size
                exit_price = future_data['close'].iloc[-1]
        else:  # Long
            if sl_hit:
                pnl = (signal.stop_loss - signal.entry_price) * position_size
                exit_price = signal.stop_loss
            elif tp_hit:
                pnl = (signal.take_profit - signal.entry_price) * position_size
                exit_price = signal.take_profit
            else:
                pnl = (future_data['close'].iloc[-1] - signal.entry_price) * position_size
                exit_price = future_data['close'].iloc[-1]
        
        capital += pnl
        trades.append({
            'signal': signal,
            'exit_price': exit_price,
            'pnl': pnl,
            'capital_after': capital
        })
        
        if pnl > 0:
            wins += 1
        else:
            losses += 1
    
    return {
        'total_trades': len(trades),
        'wins': wins,
        'losses': losses,
        'win_rate': wins / len(trades) if trades else 0,
        'final_capital': capital,
        'total_return_pct': ((capital - initial_capital) / initial_capital) * 100,
        'avg_trade_pnl': np.mean([t['pnl'] for t in trades]) if trades else 0,
        'max_drawdown': calculate_max_drawdown([t['capital_after'] for t in trades]),
        'trades': trades
    }

def calculate_max_drawdown(capital_series: List[float]) -> float:
    peak = capital_series[0]
    max_dd = 0
    
    for capital in capital_series:
        if capital > peak:
            peak = capital
        dd = (peak - capital) / peak
        max_dd = max(max_dd, dd)
    
    return max_dd

Vollständige Pipeline: Von Daten zu Ergebnissen

# main_pipeline.py
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

def main():
    """
    Vollständige Pipeline:
    1. Daten sammeln
    2. Mit HolySheep AI analysieren
    3. Strategie backtesten
    4. Ergebnisse visualisieren
    """
    from config.api_config import HOLYSHEEP_API_KEY
    from services.binance_liquidation_service import AlternativeLiquidationSource
    from services.holysheep_analysis_service import HolySheepAnalysisService
    from strategies.liquidation_strategy import LiquidationBreakoutStrategy, run_backtest
    
    print("🚀 Starte Liquidation-Backtesting Pipeline...")
    print("=" * 60)
    
    # Schritt 1: Daten sammeln
    print("\n📥 Schritt 1: Sammle Liquidation-Daten...")
    symbols = ["BTCUSDT", "ETHUSDT"]
    
    all_liquidation_data = []
    for symbol in symbols:
        data = AlternativeLiquidationSource.get_sample_liquidation_data(
            symbol=symbol,
            start="2024-01-01",
            end="2024-12-31"
        )
        all_liquidation_data.append(data)
    
    combined_liquidation = pd.concat(all_liquidation_data, ignore_index=True)
    print(f"✅ {len(combined_liquidation)} Liquidation-Events gesammelt")
    
    # Schritt 2: KI-Analyse mit HolySheep
    print("\n🤖 Schritt 2: KI-Analyse mit HolySheep AI...")
    analyzer = HolySheepAnalysisService(HOLYSHEEP_API_KEY)
    
    for symbol in symbols:
        symbol_data = combined_liquidation[combined_liquidation['symbol'] == symbol]
        result = analyzer.analyze_liquidation_pattern(symbol_data)
        
        if result:
            print(f"\n📊 Analyse für {symbol}:")
            print(f"   Gesamtwert: ${result['summary']['total_value_usdt']:,.0f}")
            print(f"   Kosten: ${result['cost_usd']:.4f}")
    
    # Schritt 3: Backtesting
    print("\n📈 Schritt 3: Führe Backtesting durch...")
    strategy = LiquidationBreakoutStrategy({
        'min_liquidation_usdt': 2_000_000,  # 2M USDT Minimum
        'confidence_threshold': 0.7,
        'max_leverage': 10
    })
    
    # Generiere simulierte Preisdaten
    dates = pd.date_range("2024-01-01", "2024-12-31", freq='1H')
    price_data = pd.DataFrame({
        'timestamp': dates,
        'open': np.random.uniform(40000, 70000, len(dates)),
        'high': np.random.uniform(40000, 70000, len(dates)),
        'low': np.random.uniform(40000, 70000, len(dates)),
        'close': np.random.uniform(40000, 70000, len(dates))
    })
    price_data['high'] = price_data[['open', 'close']].max(axis=1) + np.random.uniform(0, 500, len(dates))
    price_data['low'] = price_data[['open', 'close']].min(axis=1) - np.random.uniform(0, 500, len(dates))
    
    # Identifiziere Signale und führe Backtest durch
    signals = strategy.identify_signals(combined_liquidation, price_data)
    results = run_backtest(signals, price_data, initial_capital=100_000)
    
    print(f"\n📊 BACKTEST ERGEBNISSE:")
    print(f"   Gesamthandels: {results['total_trades']}")
    print(f"   Gewinne: {results['wins']}")
    print(f   "Verluste: {results['losses']}")
    print(f"   Win-Rate: {results['win_rate']*100:.1f}%")
    print(f"   Rendite: {results['total_return_pct']:.2f}%")
    print(f"   Max. Drawdown: {results['max_drawdown']*100:.2f}%")
    
    print("\n✅ Pipeline abgeschlossen!")

if __name__ == "__main__":
    import numpy as np
    main()

Häufige Fehler und Lösungen

Fehler 1: "401 Unauthorized" bei HolySheep API

Problem: API-Aufruf gibt 401-Fehler zurück

# ❌ FALSCH - häufige Fehlerquelle
headers = {
    "Authorization": HOLYSHEEP_API_KEY,  # Fehlt "Bearer " Prefix!
    "Content-Type": "application/json"
}

✅ RICHTIG

headers = { "Authorization": f"Bearer {HOLYSHEEP_API_KEY}", # Korrektes Format "Content-Type": "application/json" }

Weitere Checks:

1. API-Key beginnt mit "sk-"

2. Key ist nicht abgelaufen

3