Phase 0.2: Fee-Modell-Fundament (FeeModel + MarketData.TakerFeeBps + BUY-Fee-Log)

- FeeModel (pure, getestet): Kategorie-Fallback-Bps (Sports 75 / Politics-Finance
  100 / Crypto 180 / Geopolitics 0 / Default 100) + FeeUsd(notional, bps).
- MarketData.TakerFeeBps (Core) + Migration AddMarketTakerFeeBps (auf MySQL
  angewendet). Speichert den echten API-Satz, sobald verfuegbar; 0 = Fallback.
- CopyTradingEngine loggt beim BUY die erwartete Taker-Fee (TakerFeeBps aus
  MarketCache, sonst Kategorie-Fallback) -> Akzeptanz "Fee im TradeReasoning".
- FeeModelTests (Kategorie-Mapping case-insensitive, FeeUsd, 0-Faelle).

183 Tests gruen. Build/Smoke gruen.

OFFEN (API-abhaengig, erst im Zielland verifizierbar): echtes fee_rate_bps-Feld
aus der CLOB/Gamma-API lesen; Fee-basierter Edge-Discard; PnL-Fee-Korrektur.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-07 17:58:59 +02:00
co-authored by Claude Opus 4.8
parent 395caad11a
commit cda5b055aa
7 changed files with 445 additions and 1 deletions
+7 -1
View File
@@ -15,7 +15,13 @@ namespace PolyTraderSharp.Models
public string ClobTokenIds { get; set; } = string.Empty;
public string Outcomes { get; set; } = string.Empty; // e.g. "[\"Yes\", \"No\"]"
public bool NegRisk { get; set; }
/// <summary>
/// Taker-Fee dieses Marktes in Basispunkten (100 = 1,0 %). 0 = keine/unbekannt.
/// Wird beim Markt-Sync gesetzt (API-Feld bevorzugt, sonst Kategorie-Fallback via FeeModel).
/// </summary>
public int TakerFeeBps { get; set; }
}
}