96 lines
2.8 KiB
Markdown
96 lines
2.8 KiB
Markdown
# Valuation, PnL, MTM
|
|
|
|
Statut: `migration partielle`
|
|
|
|
Langue: `fr`<br>
|
|
Page miroir: [valuation-pnl-mtm.en.md](valuation-pnl-mtm.en.md)
|
|
|
|
## BR-PT-VAL-001 - La valuation couvre achat, vente et sale-first
|
|
|
|
Source: `BR-PT-004`, `BR-PT-006`, `BR-PT-011`
|
|
|
|
### Règle consultant
|
|
|
|
Le PnL doit exister pour les achats et pour les ventes, même quand une vente
|
|
n'est pas encore matchée à un achat.
|
|
|
|
### Notes développeur
|
|
|
|
- Une `sale.line` non matchée doit générer au minimum `sale priced`, `sale fee`
|
|
et `derivative` si applicable.
|
|
- Une sale basis sans détail de prix doit quand même produire une ligne à zéro
|
|
ou au prix économique fallback selon la règle applicable.
|
|
- Ne pas attacher arbitrairement une sale unique si plusieurs sales sont
|
|
matchées au même ouvert.
|
|
|
|
## BR-PT-VAL-002 - Références de valuation
|
|
|
|
Source: `BR-PT-005`
|
|
|
|
### Règle consultant
|
|
|
|
La référence de PnL doit décrire la nature de la ligne valorisée: achat ou
|
|
vente, ouverte ou physique.
|
|
|
|
### Notes développeur
|
|
|
|
- Références autorisées: `Purchase/Open`, `Purchase/Physic`, `Sale/Open`,
|
|
`Sale/Physic`.
|
|
- Un lot virtuel ne doit pas sortir avec une reference physique.
|
|
|
|
## BR-PT-VAL-003 - MTM hors fees
|
|
|
|
Source: `BR-PT-007`
|
|
|
|
### Règle consultant
|
|
|
|
Le mark-to-market s'applique aux prix et aux dérivés, pas aux frais.
|
|
|
|
### Notes développeur
|
|
|
|
- MTM autorisé pour `pur. priced`, `sale priced`, `derivative`.
|
|
- Fees hors MTM: `pur. fee`, `sale fee`, `shipment fee`, `line fee`.
|
|
- Pour les fees: `mtm_price`, `mtm`, `strategy` doivent rester vides.
|
|
|
|
## BR-PT-VAL-004 - Snapshot courant et identité économique
|
|
|
|
Source: session `2026-05-14`
|
|
|
|
### Règle consultant
|
|
|
|
`valuation_valuation_line` représente la dernière image connue du PnL.
|
|
Elle n'est pas un historique.
|
|
|
|
- Une nouvelle génération remplace la génération précédente pour la même
|
|
réalité économique.
|
|
- Une vente non matchée porte son propre PnL.
|
|
- Une vente matchée est portée par la ligne d'achat liée.
|
|
- Le PnL d'une vente matchée ne doit pas être généré deux fois: une fois côté
|
|
vente et une fois côté achat.
|
|
|
|
### Notes développeur
|
|
|
|
- Avant création dans `valuation.valuation.line`, supprimer le snapshot courant
|
|
ayant la même identité économique.
|
|
- Identité économique:
|
|
- `sale_line` si elle existe, sinon `line`;
|
|
- `lot`;
|
|
- `type`;
|
|
- `reference`;
|
|
- `counterparty`;
|
|
- `product`;
|
|
- `state`;
|
|
- `strategy`.
|
|
- Ne pas inclure dans l'identité:
|
|
- `date`;
|
|
- `price`;
|
|
- `quantity`;
|
|
- `amount`;
|
|
- `mtm_price`;
|
|
- `mtm`.
|
|
- Ces champs sont des résultats recalculés et doivent être remplacés par la
|
|
dernière génération.
|
|
- `generate_from_sale_line()` ne crée pas de snapshot vente si la `sale.line`
|
|
est déjà matchée à une `purchase.line`; il redirige vers la génération de la
|
|
ligne d'achat propriétaire.
|