diff --git a/notes/business_rules.md b/notes/business_rules.md index 1f22e89..3f8223d 100644 --- a/notes/business_rules.md +++ b/notes/business_rules.md @@ -110,3 +110,34 @@ elle existe, par exemple: `priced` / `efp`, sans fees relies a des lots, ou sans derivatives. - En mode `basis`, sans composant, le fallback metier continue de passer par la ligne summary quand elle existe. + +## Session 2026-04-29 - Purchase trade: rate fee et PnL lots ouverts + +### `fee.fee` / mode `% rate` + +- Le calcul du montant d'un fee en mode `rate` est aligne entre purchase et + sale. +- Il ne depend pas du `payment_term`. +- La date de fin vient de l'onglet `Estimated date` de la ligne metier: + chercher `trigger = bldate`, prendre `estimated_date`, puis ajouter + `fin_int_delta`. +- La formule reste en interet simple ACT/360: + `amount = rate_factor * unit_price * quantity`, avec + `rate_factor = (price / 100) * jours / 360`. +- Si aucune Estimated Date `bldate` n'est renseignee, le fee `% rate` ne + calcule pas de montant. + +### Valuation / PnL avec lots ouverts matches + +- Tant que les lots physiques ne sont pas crees, une purchase et une sale + peuvent etre matchees uniquement via `lot.qt`: + `lot_p` purchase ouvert -> `lot_s` sale ouvert. +- Dans ce cas, les lignes PnL purchase-side (`Pur. price`, `Pur. fee`) doivent + aussi renseigner `sale` et `sale_line` pour apparaitre dans l'onglet PnL de + la sale matchee. +- Quand le lot physique existe, `lot.sale_line` reste le chemin prioritaire. +- Si un lot purchase ouvert est matche a plusieurs sales differentes, ne pas + attacher arbitrairement une seule sale aux lignes purchase-side. +- `Mark as finished` ne veut pas dire "ne plus calculer le PnL": il ignore + seulement le reliquat ouvert/virtuel; les lots physiques, fees physiques et + derivatives continuent d'etre valorises.