Randament la o maturitate cerută
Randamentul suveran la o maturitate care nu are punct publicat — „cât e la 7 ani?" — obţinut
prin interpolare între punctele vecine.
Metoda e liniară, şi ruta nu pretinde altceva. Măsurat pe toate cele 3.929 de zile,
reconstruind puncte publicate din vecinii lor mai îndepărtaţi: eroarea medie e 0,06–0,15 puncte, cu
maxime de 0,43–0,81. Acelea sunt goluri de 2–7 ori mai mari decât cele reale, deci între puncte
adiacente eroarea e mult mai mică — dar cifrele arată că curba are curbură, iar liniarul e o
aproximare. De aceea metoda e declarată şi ambele puncte vecine vin în răspuns, în intre: cine
vrea alt model are de unde porni.
Nu se extrapolează. Peste 10 ani sau sub 6 luni, răspunsul e 404 cu in_afara_curbei şi
intervalul acoperit — extrapolarea unei curbe de randament dincolo de ultimul punct e nesigură, iar
un număr plauzibil şi nefondat e exact ce evităm.
Un punct publicat cerut exact se întoarce ca atare, cu interpolat: false, nu recalculat.
Bid şi ask se interpolează separat, deci rezultă şi un spread la maturitatea cerută.
Parametri de interogare
84 (luni), 7Y (ani), 18M (luni). Între 6 luni şi 10 ani.
ex. 7Yex. 18Mex. 3M
YYYY-MM-DD. Implicit ultimul fixing publicat. Nu poate fi în viitor.
ex. 2024-06-14
Cum se comportă
- Randamentul suveran românesc la o maturitate care nu are punct publicat. BNR publică cinci puncte — 6 luni, 12 luni, 3, 5 şi 10 ani; ruta răspunde la întrebarea „cât e la 7 ani?", interpolând între vecini.
- Metoda e liniară şi ruta nu pretinde altceva. Măsurat pe toate cele 3.929 de zile, reconstruind fiecare punct publicat din vecinii lui mai îndepărtaţi: eroarea medie e 0,06 puncte la 12 luni, 0,16 la 3 ani, 0,14 la 5 ani, cu maxime de 0,43, 0,56 şi 0,81. Acelea sunt goluri de 2–7 ori mai mari decât cele reale, deci între puncte adiacente eroarea e mult mai mică — dar cifrele arată clar că curba are curbură, iar liniarul rămâne o aproximare.
- De aceea
metodae declarată în răspuns, iar înintrevin ambele puncte vecine, întregi. Cine vrea alt model — spline, Nelson-Siegel — are de unde porni, fără să mai ceară curba separat. - Nu se extrapolează. Sub 6 luni sau peste 10 ani răspunsul e 404
in_afara_curbei, cu intervalul acoperit. Prelungirea unei curbe de randament dincolo de ultimul punct e nesigură, iar un număr plauzibil şi nefondat e exact ce evităm. - O maturitate cu punct publicat se întoarce ca atare, cu
interpolat: falseşimetoda: null— valoarea din fixing, nu una recalculată. Şi primeşte eticheta curbei: 12 luni e12M, nu1Y. - Bid şi ask se interpolează separat, deci rezultă un spread propriu maturităţii cerute. Ca peste tot la titluri, bid > ask: sunt randamente, nu preţuri.
- Ziua fără publicare primeşte ultimul fixing anterior, cel mult 10 zile în urmă, marcat prin
exact_ziuaşizile_inapoi. Interpolarea se face pe puncte din ACEEAŞI zi.
La ce folosește
- Actualizarea unui flux de numerar cu scadenţă care nu cade pe un punct publicat.
- Evaluarea unei obligaţiuni corporative prin adăugarea unui spread la randamentul suveran de aceeaşi maturitate.
- Construirea unei curbe cu pas fix, punct cu punct, pentru un model propriu.
Structura răspunsului
12M, nu 1Y).
true doar dacă ziua întoarsă e cea cerută.
procent_pe_an.
false înseamnă valoare publicată, nu calculată.
liniara când s-a interpolat, null când punctul e publicat.
bid − ask, în puncte procentuale. Deja pozitiv.
null când nu s-a interpolat.
null când nu s-a interpolat.
data e null, iar aici stă motivul. Maturitatea e sub 6 luni sau peste 10 ani; răspunsul dă intervalul acoperit şi punctele publicate.
fara_date e proză şi se poate reformula, ăsta nu.
Exemple de răspuns
{
"data": {
"luni": 84,
"maturitate_ceruta": "7Y",
"data": "2024-06-14",
"data_ceruta": "2024-06-14",
"exact_ziua": true,
"zile_inapoi": 0,
"unitate": "procent_pe_an",
"interpolat": true,
"metoda": "liniara",
"bid": "6.71",
"ask": "6.47",
"mid": "6.59",
"spread": "0.24",
"intre": {
"stanga": {
"maturitate": "5Y",
"denumire": "cinci ani",
"luni": 60,
"bid": "6.59",
"ask": "6.35",
"mid": "6.47",
"spread": "0.24"
},
"dreapta": {
"maturitate": "10Y",
"denumire": "zece ani",
"luni": 120,
"bid": "6.89",
"ask": "6.66",
"mid": "6.78",
"spread": "0.23"
}
}
},
"meta": {
"sursa": "BNR — fixing titluri de stat (baza de date interactivă).",
"metoda": "Interpolare LINIARĂ între punctele adiacente. Măsurat pe toată seria, curba are curbură reală: reconstruind puncte publicate din vecini mai îndepărtaţi, eroarea medie e 0,06–0,15 puncte. Între adiacente e mult mai mică, dar rămâne o aproximare.",
"nota_vecini": "`intre` conţine ambele puncte vecine, întregi — cine vrea alt model de interpolare porneşte de acolo.",
"nota_extrapolare": "Curba acoperă 6 luni – 10 ani. În afara ei nu se extrapolează.",
"curba": "Toate punctele publicate ale zilei: /financiar/v1/titluri-stat/fixing."
}
}
{
"data": {
"luni": 18,
"maturitate_ceruta": "18M",
"data": "2024-06-14",
"data_ceruta": "2024-06-14",
"exact_ziua": true,
"zile_inapoi": 0,
"unitate": "procent_pe_an",
"interpolat": true,
"metoda": "liniara",
"bid": "6.15",
"ask": "5.87",
"mid": "6.01",
"spread": "0.28",
"intre": {
"stanga": {
"maturitate": "12M",
"denumire": "douăsprezece luni",
"luni": 12,
"bid": "6.10",
"ask": "5.80",
"mid": "5.95",
"spread": "0.30"
},
"dreapta": {
"maturitate": "3Y",
"denumire": "trei ani",
"luni": 36,
"bid": "6.28",
"ask": "6.07",
"mid": "6.18",
"spread": "0.21"
}
}
},
"meta": {
"sursa": "BNR — fixing titluri de stat (baza de date interactivă).",
"metoda": "Interpolare LINIARĂ între punctele adiacente. Măsurat pe toată seria, curba are curbură reală: reconstruind puncte publicate din vecini mai îndepărtaţi, eroarea medie e 0,06–0,15 puncte. Între adiacente e mult mai mică, dar rămâne o aproximare.",
"nota_vecini": "`intre` conţine ambele puncte vecine, întregi — cine vrea alt model de interpolare porneşte de acolo.",
"nota_extrapolare": "Curba acoperă 6 luni – 10 ani. În afara ei nu se extrapolează.",
"curba": "Toate punctele publicate ale zilei: /financiar/v1/titluri-stat/fixing."
}
}
{
"data": null,
"meta": {
"luni_cerute": 3,
"curba": {
"de_la_luni": 6,
"pana_la_luni": 120
},
"maturitati": [
"6M",
"12M",
"3Y",
"5Y",
"10Y"
],
"data": "2026-09-21",
"fara_date": "Maturitatea cerută (3 luni) e în afara curbei publicate: 6–120 luni (6M, 12M, 3Y, 5Y, 10Y). Nu extrapolăm: dincolo de ultimul punct, o curbă de randament e nesigură.",
"fara_date_cod": "in_afara_curbei"
}
}
{
"data": {
"luni": 6,
"maturitate_ceruta": "6M",
"data": "2026-09-21",
"data_ceruta": "2026-10-07",
"exact_ziua": false,
"zile_inapoi": 16,
"unitate": "procent_pe_an",
"interpolat": false,
"metoda": null,
"bid": "6.22",
"ask": "5.92",
"mid": "6.07",
"spread": "0.30",
"intre": null
},
"meta": {
"sursa": "BNR — fixing titluri de stat (baza de date interactivă).",
"metoda": "Maturitatea cerută are punct publicat: valoarea e cea din fixing, nu una calculată.",
"nota_extrapolare": "Curba acoperă 6 luni – 10 ani. În afara ei nu se extrapolează.",
"curba": "Toate punctele publicate ale zilei: /financiar/v1/titluri-stat/fixing.",
"nota_substituire": "Ziua cerută nu are publicare; s-a folosit ultimul fixing anterior."
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Nu există fixing aplicabil la data cerută. |
| 422 | validare | Maturitate malformată, sau dată malformată ori în viitor. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Maturitate malformată, sau dată malformată ori în viitor.",
"detalii": {
"maturitate": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}