Indici di servizio del debito (ratios.debt_service)¶
Risponde alla domanda "la società è in grado di servire il proprio debito?". Restituisce la copertura degli oneri finanziari (interest cover) su EBIT e su EBITDA, il rapporto tra posizione finanziaria netta ed EBITDA, il DSCR (indice di copertura del servizio del debito) di ogni periodo di un piano di rimborso e l'LLCR (indice di copertura sulla durata del finanziamento).
Formula¶
dove CFADS è il flusso di cassa disponibile per il servizio del debito, \(r\) il tasso di
attualizzazione per periodo del piano (il costo del debito per periodo scelto dall'analista), la
riserva il saldo della riserva per il servizio del debito (DSRA) alla data di valutazione,
sommato senza attualizzazione (zero se non fornito), \(n\) il numero di periodi fino alla scadenza finale e il
debito residuo è misurato all'inizio del primo periodo. L'attualizzazione è quella di
tvm.present_value, a fine periodo.
Esempio¶
from decimal import Decimal
import fairmark as fm
r = fm.ratios.debt_service(
balances="closing",
ebitda_definition="reported EBITDA, no adjustments",
interest_definition="gross interest expense",
income_statement={"ebitda": 800, "ebit": 500, "interest": 100},
closing={"net_financial_position": {"gross_debt": 2200, "cash": 300}},
debt_schedule={
"discount_rate": "0.06",
"debt_outstanding": 1000,
"periods": [{"cfads": 250, "debt_service": 200}] * 5,
},
)
assert r.interest_cover_ebit["value"] == Decimal("5") # 500 / 100
assert r.nfp_to_ebitda["value"] == Decimal("2.375") # 1900 / 800
assert r.dscr[0]["value"] == Decimal("1.25") # 250 / 200
# CFADS costante: LLCR = 250 × (1 − 1,06^−5) / 0,06 / 1000
assert abs(r.llcr["value"] - Decimal("1.05309094639142847003375")) < Decimal("1e-20")
# Senza piano di rimborso DSCR e LLCR non sono definiti; gli altri indici sono calcolati.
s = fm.ratios.debt_service(
balances="closing",
ebitda_definition="reported EBITDA, no adjustments",
interest_definition="gross interest expense",
income_statement={"ebitda": 800, "ebit": 500, "interest": 100},
closing={"net_financial_position": {"gross_debt": 2200, "cash": 300}},
)
assert s.llcr["not_defined"] == "no debt schedule given"
assert s.interest_cover_ebitda["value"] == Decimal("8")
Input¶
| Campo | Significato | Default |
|---|---|---|
balances |
closing, oppure average della posizione finanziaria netta di apertura e di chiusura |
obbligatorio |
ebitda_definition |
Come è stato misurato l'EBITDA, a parole, non vuoto; riportato nelle convenzioni | obbligatorio |
interest_definition |
Come sono stati misurati gli oneri finanziari (lordi, o al netto dei proventi finanziari), a parole, non vuoto; riportato nelle convenzioni | obbligatorio |
income_statement |
ebitda, ebit, interest del periodo, in unità monetarie |
obbligatorio |
closing |
net_financial_position con gross_debt, cash e other_items |
obbligatorio |
opening |
Lo stesso campo all'inizio del periodo | obbligatorio con saldi medi, non usato altrimenti |
debt_schedule |
discount_rate: il costo del debito per periodo scelto dall'analista (frazione decimale); debt_outstanding all'inizio del primo periodo; reserve_balance facoltativo (riserva per il servizio del debito alla data di valutazione); periods: un elenco di {"cfads", "debt_service"} fino alla scadenza finale |
facoltativo: senza di esso DSCR e LLCR non sono definiti |
Output¶
| Campo | Significato |
|---|---|
net_financial_position |
PFN usata dagli indici, in unità monetarie |
interest_cover_ebit |
EBIT / oneri finanziari, multiplo |
interest_cover_ebitda |
EBITDA / oneri finanziari, multiplo |
nfp_to_ebitda |
PFN / EBITDA, multiplo |
dscr |
CFADS / servizio del debito di ogni periodo, multiplo, nell'ordine del piano; vuoto senza piano di rimborso |
pv_cfads |
Valore attuale dei CFADS all'inizio del primo periodo, in unità monetarie; null senza piano di rimborso |
llcr |
(Valore attuale dei CFADS + riserva) / debito residuo, multiplo |
Gli indici sono oggetti {"value": ..., "not_defined": ...}, come in ogni gruppo di indici.
Convenzioni (esplicite, riportate in explain.conventions)¶
| Convenzione | Opzioni | Default |
|---|---|---|
| Saldi | di chiusura, media tra apertura e chiusura (posizione finanziaria netta) | obbligatorio |
| Definizione dell'EBITDA | come indicata dall'analista, non vuota | obbligatorio |
| Definizione degli oneri finanziari | come indicata dall'analista (lordi, o al netto dei proventi finanziari), non vuota | obbligatorio |
| Servizio del debito | come fornito | fissa |
| Attualizzazione dell'LLCR | a fine periodo, a discount_rate per periodo, il costo del debito scelto dall'analista |
fissa |
| Riserva | sommata senza attualizzazione al numeratore dell'LLCR | nessuna |
| Piano di rimborso | facoltativo; senza di esso DSCR e LLCR non sono definiti ("no debt schedule given") | nessuno |
| Non definito | denominatore nullo; copertura degli oneri finanziari quando gli oneri o il numeratore (EBIT o EBITDA) sono nulli o negativi; PFN / EBITDA quando l'EBITDA è nullo o negativo; DSCR quando il servizio del debito è nullo o negativo; LLCR quando il debito residuo è nullo o negativo | fissa |
Errori¶
| Codice | Quando |
|---|---|
FM-E001 |
Saldi medi senza opening; ebitda_definition o interest_definition vuoto o composto solo da spazi; un campo mancante o sconosciuto |
FM-E002 |
È fornito un piano di rimborso senza periodi |
FM-E003 |
Tasso di attualizzazione pari o inferiore a −100% per periodo |
FM-E008 |
Overflow aritmetico (input molto al di fuori di un intervallo realistico) |
Precisione¶
Gli indici sono ciascuno una divisione decimale; i fattori di sconto sono potenze intere di \(1 + r\). I risultati sono esatti fino alle 28 cifre significative del tipo decimale.
Verificato con¶
- Casi di riferimento (golden case) in
tests/golden/ratios.debt_service/, i cui valori attesi provengono dascripts/reference_ratios.py(decimal di Python a 50 cifre); l'LLCR di un CFADS costante è pari alla forma chiusa della rendita \(C\,(1 - (1 + r)^{-n}) / r\) divisa per il debito residuo. Altri casi coprono la riserva, l'assenza del piano di rimborso e ogni segno non significativo.