From 83aa474073a4261f903116349312446a2cecb0f7 Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Thu, 30 Apr 2026 15:38:27 +0200 Subject: [PATCH] rules --- modules/purchase_trade/docs/business-rules.md | 19 +++++++++++++++ notes/business_rules.md | 24 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/modules/purchase_trade/docs/business-rules.md b/modules/purchase_trade/docs/business-rules.md index c416b36..bf0245d 100644 --- a/modules/purchase_trade/docs/business-rules.md +++ b/modules/purchase_trade/docs/business-rules.md @@ -631,3 +631,22 @@ Pour cette regle, couvrir au minimum: - premium en `basis` - premium en `linked currency` - synchro `basis` -> `linked_price` -> `unit_price` + +## 7) Notes de fin de session + +### Session 2026-04-30 - PnL fees ouverts et `% rate` + +- Les fees PnL ne doivent pas etre generes pour un lot ouvert / virtuel dont + la quantite courante est a zero. +- Cette regle evite les lignes PnL residuelles avec `quantity = 0` mais + `amount != 0`, notamment pour les fees `rate`, `ppack` et `lumpsum`. +- La logique est volontairement proche de `Mark as finished`: quand le reliquat + ouvert/virtuel n'est plus valorisable, ses fees ne le sont pas non plus. +- Les lots physiques restent hors de ce filtre. +- Pour les fees `% rate`, `fin_int_delta` est la periode absolue de calcul. +- Le calcul `% rate` ne depend plus de la date du jour, de `fee_date`, ni de + `BL date + delta` comme date de fin. +- Formule commune purchase/sale: + `amount = unit_price * quantity * (price / 100) * fin_int_delta / 360`. +- La ligne `Estimated date` avec `trigger = bldate` sert a porter + `fin_int_delta`; la date estimee n'entre pas dans le calcul du montant. diff --git a/notes/business_rules.md b/notes/business_rules.md index 0a3d759..b73b82e 100644 --- a/notes/business_rules.md +++ b/notes/business_rules.md @@ -141,3 +141,27 @@ elle existe, par exemple: - `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. + +## Session 2026-04-30 - PnL fees ouverts et `% rate` + +### PnL fees sur lots ouverts + +- Un lot ouvert / virtuel avec quantite courante a zero ne doit plus generer + de lignes de fees PnL. +- Cette regle suit la meme intention que `Mark as finished`: le reliquat + ouvert/virtuel ignore ne doit pas porter de PnL, y compris pour les fees. +- Les lots physiques restent valorisables; le filtre vise seulement les lots + non physiques vides. +- Le cas important est celui des fees `rate`, `ppack` ou `lumpsum`, dont le + montant peut rester non nul meme quand la quantite affichee du lot est zero. + +### Fee `% rate` + +- `fin_int_delta` est la periode absolue de calcul du financement. +- Le montant ne depend pas de `Date.today()`, de `fee_date`, ni d'un intervalle + entre la date du jour et `BL date + delta`. +- Purchase et sale appliquent la meme formule ACT/360: + `amount = unit_price * quantity * (price / 100) * fin_int_delta / 360`. +- La ligne `Estimated date` avec `trigger = bldate` reste le support metier + pour porter `fin_int_delta`; la date estimee elle-meme ne sert pas au calcul + du montant `% rate`.