namespace IBKRTrader.Core.Trading; /// /// Buchführung über offene Positionen und Ausführungen (core_position, core_trade_history). /// Externer Seam gegenüber der Datenbank: in Tests gemockt. /// public interface IPortfolioService { /// Summe des offenen Nominalwerts eines Moduls. Task GetModuleExposureAsync(string module, CancellationToken ct = default); /// Gehaltene Stückzahl eines Moduls für ein Symbol (0, wenn keine Position). Task GetPositionQuantityAsync(string module, string symbol, CancellationToken ct = default); /// Verbucht einen Fill: aktualisiert Position, Budget und Trade-Historie. Task RecordFillAsync( string module, string symbol, TradeSide side, int quantity, decimal price, string? orderId, CancellationToken ct = default); /// Alle offenen Positionen eines Moduls. Task> GetPositionsAsync(string module, CancellationToken ct = default); }