La tracciabilità del calcolo (audit trail)¶
Ogni risultato è una busta in quattro parti:
{
"method": "dcf.fcff",
"value": { "value_of_operations": "1421.48…", "equity_value": "1221.48…", "...": "..." },
"explain": {
"formula": "Value of operations = Σ FCFF_k × DF_k + TV_N × DF_TV; ...",
"conventions": ["timing: end of period (flow k discounted at t = k)", "..."],
"steps": [ { "label": "Period 1: discount factor", "formula": "1 / (1 + 0.10)", "value": "0.909…" } ]
},
"meta": { "engine_version": "…", "method_version": "3", "input_hash": "b963…", "arithmetic": "decimal…" }
}
valuecontiene i risultati, esatti, come stringhe decimali.explain.stepselenca ogni calcolo intermedio con i numeri effettivi sostituiti. Un analista può rifare a mano qualsiasi passaggio; un agente li cita invece di ricalcolarli.explain.conventionsdichiara ogni scelta che cambia il numero (tempistica dei flussi, attualizzazione del valore terminale). Le convenzioni non sono mai implicite.metarende il risultato riproducibile: lo stessoinput_hashcon le stesse versioni produce sempre lo stesso valore.
Le etichette dei passaggi sono in inglese, perché fanno parte dell'output del motore. In
Python, result.explain_markdown() produce una nota metodologica per la relazione.