Copy performance fees (Fáza 4)
Poplatky za výkonnosť money-managera na high-water-mark, štandardný copy-trading model (cTrader Copy,
Darwinex, ZuluTrade profit-share): poskytovateľ účtuje percento z nového zisku nad peak equity každého sledovateľa
— nikdy na opening balance a nikdy dvakrát za tú istú získanú pôdu. Opt-in cez
App:Copy:FeesEnabled (vypnuté predvolene).
Model (high-water-mark)
Per destinácia (sledovateľský účet), každé vyrovnanie:
- Prvé vyrovnanie seedingne HWM na aktuálnu equity → žiadny poplatok (sledovateľovi sa nikdy neúčtuje jeho vklad).
- Nový peak (equity > HWM):
fee = performanceFeePercent × (equity − HWM), potomHWM ← equity. - Na alebo pod peak: žiadny poplatok, HWM nezmenená — sledovateľ musí najprv zotaviť nad starý peak, takže mu nikdy nie je účtované dvakrát za rovnaké zisky.
Poplatková aritmetika je doménový invariant na CopyDestination.SettleFee(equity) — aggregate ho vlastní;
vyrovnávacia služba len dodáva polled equity a zaznamenáva vrátenú sumu. PerformanceFee je value object
capped na 50%, takže miskonfigurácia nemôže účtovať celý zisk sledovateľa.
Ako sa vyrovnáva
CopyFeeSettlementService (BackgroundService, iba keď FeesEnabled)
│ každý App:Copy:FeeSettlementInterval
├─ načíta bežiace profily s fee-nakonfigurovanou destináciou
├─ ICopyEquityReader.ReadEquityAsync(ctid) ← OpenApiCopyEquityReader otvorí session,
│ vypočíta balance + floating P&L (PropFirmEquityCalculator)
├─ destination.SettleFee(equity) ← HWM logika na aggregate
└─ perzistuje advanced HWM + append CopyFeeAccrual (iba na novom peak)
ICopyEquityReaderje Core abstrakcia; live implementácia (OpenApiCopyEquityReader) je jediný infra kúsok — takže settlement + HWM logika je cvičená v testoch s fake readerom, bez live brokera.CopyFeeAccrualje append-only log (HWM-before, equity, fee %, fee amount, settled-at) — fact log pre fee report a fakturáciu, nie aggregate.
Konfigurácia & API
App:Copy nastavenie | Predvolené | Efekt |
|---|---|---|
FeesEnabled | false | Spustiť settlement service. |
FeeSettlementInterval | 1h | Ako často sa equity polling a fee settlement robí. |
Per-destinácia: PerformanceFeePercent (0–50) sa nastavuje na destinácii (add/edit destination request).
GET /api/copy/profiles/{id}/fees— fee accruals profilu + total charged.
Testy
- Jednotka (
CopyPerformanceFeeTests) — HWM invariant: prvé settlement seedingne + neúčtuje nič; nový peak účtuje iba zisk nad peak; na/ pod peak neúčtuje nič a peak sa nikdy nevráti; po drawdown iba zotavenie nad starý peak je účtované; 0% nikdy neúčtuje; VO odmieta out-of-range percentá. - Integrácia (
CopyFeeSettlementTests, reálny Postgres, fake equity reader) — seed→10k (žiadny poplatok, mark posunutý), 12k (účtuje 400, mark pokročil), 11k (žiadny poplatok, mark držaný); accrual perzistovaný so správnym owner/amount.
Copy host je nedotknutý poplatkami (settlement je samostatná DB job), takže copy DST stress suite je nezávislá (23/23).