Vai al contenuto

๐Ÿงญ Risoluzione dei Prezzi

๐Ÿ’ก Scopo

LibreFolio utilizza un unico risolutore unificato come fonte primaria di valutazione per posizioni aperte, NAV, valutazione dei lotti, linee di prezzo nei grafici e flag di qualitร  dei dati. Il risolutore risponde a una domanda quotidiana:

\[ \operatorname{mark}(a,t)=\text{miglior prezzo noto in valuta nativa per l'asset }a\text{ nella data }t \]

รˆ implementato da AssetPriceSeries.resolve(t) ed รจ costruito a partire da due classi di osservazioni:

  • MARKET: PriceHistory.close del sistema-asset
  • TRADE: prezzi impliciti dalle transazioni derivanti da righe di BUY/SELL e ADJUSTMENT prezzate

๐Ÿงฎ Cascata Gerarchica Giornaliera

Per ogni asset e data, le osservazioni vengono condensate in un unico prezzo giornaliero:

\[ \operatorname{mark}(a,t)= \begin{cases} \text{MARKET}(a,t), & \text{esiste una quotazione di mercato nello stesso giorno}\\ \operatorname{media}\bigl(\text{TRADE}(a,t)\bigr), & \text{esistono osservazioni di transazioni nello stesso giorno}\\ \text{ultima osservazione prima di }t, & \text{altrimenti, se esiste}\\ \varnothing, & \text{altrimenti} \end{cases} \]
flowchart TD
    A["Risolvi asset a nella data t"] --> B{"Quotazione di mercato in t?"}
    B -- "sรฌ" --> C["MARKET"]
    B -- "no" --> D{"Osservazioni di transazioni in t?"}
    D -- "sรฌ" --> E["TRADE_AVG"]
    D -- "no" --> F{"Qualche osservazione prima di t?"}
    F -- "sรฌ" --> G["CARRIED (LOCF)"]
    F -- "no" --> H["MISSING"]

Lo schema pubblico del motore associa i prezzi del risolutore alle etichette delle fonti di valutazione:

Fonte del risolutore Origine Fonte di valutazione del portafoglio
MARKET Quotazione reale dello stesso giorno MARKET_PRICE
TRADE_AVG Prezzo di transazione dello stesso giorno LAST_TRADE_PRICE
CARRIED da MARKET Quotazione reale obsoleta MARKET_PRICE
CARRIED da TRADE Prezzo di transazione obsoleto LAST_TRADE_PRICE
MISSING Nessuna osservazione nella data o prima MISSING

Nessuna cascata legacy

Il codice attualmente distribuito non utilizza un percorso di valutazione separato market โ†’ last BUY โ†’ seed cost. I prezzi di origine delle transazioni sono osservazioni all'interno del risolutore unificato; il PMC rimane il costo di carico, non il prezzo di valutazione.

๐ŸŒ Valuta e Scala

I prezzi del risolutore rimangono nella loro valuta nativa. I consumatori convertono il prezzo alla data di valutazione:

\[ \mathrm{Prezzo}_{C^*}(a,t)=\operatorname{mark}(a,t)\cdot \mathrm{fx}\bigl(\mathrm{ccy}_{mark}, C^*, t\bigr) \]

Questo รจ importante per i prezzi riportati (carried): una quotazione o transazione osservata in \(s<t\) viene convertita utilizzando il tasso di cambio a \(t\), non il tasso di cambio a \(s\).

Il costo di carico utilizza tempistiche diverse. Il costo di acquisizione รจ ancorato alla data della transazione:

\[ \mathrm{Costo}_{C^*}(\tau)=\mathrm{Costo}_{nativo}(\tau)\cdot \mathrm{fx}\bigl(\mathrm{ccy}_{costo}, C^*, \tau\bigr) \]

Tutte le osservazioni del risolutore risiedono sull'asse della quotazione di mercato, inclusa quote_base_quantity:

\[ \mathrm{Valore\_Posizione}(q,p,qbq)=\frac{q}{qbq}\cdot p \]

I prezzi unitari di BUY/SELL e le rettifiche ADJUSTMENT prezzate vengono moltiplicati per quote_base_quantity prima di entrare nel risolutore, in modo che gli asset obbligazionari quotati per 100 unitร  nominali siano confrontabili sullo stesso asse di PriceHistory.close.

๐Ÿท๏ธ Stimato e Obsoleto

estimated=True significa che il valore risolto รจ di origine TRADE:

\[ \mathrm{stimato}(a,t) \iff \mathrm{origine}(\operatorname{mark}(a,t))=\text{TRADE} \]

Una quotazione di mercato reale riportata (carried) รจ obsoleta ma non stimata. L'obsolescenza รจ rappresentata separatamente tramite BackwardFillInfo:

\[ \mathrm{giorni\_indietro}=t-\mathrm{data\_di\_riferimento} \]

price_backward_fill.actual_rate_date memorizza la data di osservazione e days_back memorizza l'etร  del LOCF. Gli avvisi di qualitร  dei dati del portafoglio valutano lo stato alla data di valutazione, non un'unione storica di tutti i giorni passati con dati riportati/stimati.

โš ๏ธ Prezzi Mancanti

MISSING significa che non esiste alcuna osservazione di mercato o transazione nella data di valutazione o prima di essa. Nel motore del portafoglio, quella posizione non puรฒ contribuire al valore di mercato finchรฉ non esiste un prezzo. Nell'analisi dei lotti, la modalitร  "stimato al costo" puรฒ comunque valutare i lotti aperti al costo quando l'asset non ha alcuna serie di prezzi di mercato; vedere Analisi Lotti FIFO.

Gli avvisi del portafoglio vengono valutati alla data di valutazione. Le valutazioni di origine transazione piรน vecchie del periodo di grazia di 14 giorni alimentano l'avviso "asset valutati al costo / nessun prezzo di mercato per piรน di due settimane"; un asset che successivamente riceve una quotazione di mercato reale cancella l'avviso.

๐Ÿ”— Correlati

  • ๐Ÿ’ผ NAV โ€” utilizza i prezzi del risolutore per il valore di mercato
  • ๐Ÿ“– Valore Contabile โ€” lato del costo di carico, indipendente dai prezzi
  • ๐Ÿ“ˆ Rendimento Netto Annualizzato โ€” annualizza i rendimenti basati sulle valutazioni del risolutore
  • โš™๏ธ Portfolio Engine โ€” modello completo