Sovereign risk premium
How much more expensively Romania borrows than the euro area, at the same maturity: the yield from the NBR fixing minus the corresponding point on the ECB curve, in basis points.
The route exists because the alignment is where the mistake happens, not the subtraction. The calendars do not coincide: 38 Romanian days have no ECB day (Orthodox Easter, 31 December), 103 ECB days have no Romanian day (2, 6 and 7 January), and the ECB publishes with a day's delay — today the NBR has 26 August, the ECB has 25. Anyone taking „the last value" from each side compares different days without knowing it. Here the day is a single one, and when the requested day has no counterpart it falls back to the last complete day, returned in ultima, with its own date.
The issuer is not chosen on the client's behalf. The ECB publishes two curves, both „euro area": AAA issuers only (aaa, the default) and all governments (toti_emitentii). At 10 years, the historical medians are 407 and 334 basis points — 73 points apart, meaning a silent choice would change the answer by a quarter.
All five fixing maturities have an exact counterpart on the ECB curve — 6M↔6M, 12M↔1Y, 3Y↔3Y, 5Y↔5Y, 10Y↔10Y — so nothing is interpolated to make the subtraction possible.
Across the 3,891 common days (since 10 January 2011), the spread has never been negative, at any maturity and for either issuer.
Query parameters
6M, 12M, 3Y, 5Y, 10Y. Defaults to 10Y — the maturity the risk premium is quoted at.
6M12M3Y5Y10Y
aaa (default) or toti_emitentii. Which of the ECB's two curves is the benchmark.
aaatoti_emitentii
YYYY-MM-DD. Cannot be in the future.
e.g. 2024-06-15
How it behaves
?data=is required, and the response always has the same shape:data(the day you asked for),valoare(filled ONLY if we have that exact day) andultima(the last day published on or before it, with its value).valoarestays empty DELIBERATELY when the requested day has no publication — a figure from another day sits separately, underultima, so it cannot be used by mistake in a calculation. Missing data is no longer an error: the response is 200, and comparingdatawithultima.datatells you everything.- How much more expensively Romania borrows than the euro area at the same maturity: the yield from the NBR fixing minus the matching point on the ECB curve, in basis points.
- This route exists because alignment is where the mistake happens, not the subtraction. The calendars do not coincide: 38 Romanian days have no ECB day (Orthodox Easter, 31 December) and 103 ECB days have no Romanian one (2, 6 and 7 January). On top of that, the ECB publishes one day late. Taking "the latest value" from each side compares different days without knowing it — here the day is a single one, asked for as such from the database.
- That is why, when the requested day has no counterpart on both sources,
valoareis empty and the last day on which BOTH published comes back inultima— not the NBR's last day. No age ceiling. - The issuer is not chosen on the client's behalf. The ECB publishes two curves, both "euro area": AAA-rated issuers only (
aaa, the default) and all central governments (toti_emitentii). At 10 years the historical medians are 407 and 334 basis points — 73 points apart, meaning a silent choice would change the answer by a quarter. - All five fixing maturities have an exact counterpart on the ECB curve: 6M↔6M, 12M↔1Y, 3Y↔3Y, 5Y↔5Y, 10Y↔10Y. Nothing is interpolated to make the subtraction possible; the only difference is spelling, and
zona_euro.punct_curbasays what the ECB calls it. - Across the 3,891 common days (10 January 2011 onward), the spread has never been negative, at any maturity and for either issuer. Medians against AAA: 343 bp at 6M, 359 at 12M, 404 at 3Y, 423 at 5Y, 407 at 10Y.
- The Romanian yield is the day's mid, but
bidandaskcome alongside: anyone wanting the spread against a specific side has it without a second request.
What it is for
- The risk premium the market demands on Romanian sovereign debt.
- The benchmark for pricing a Romanian euro issue or a corporate bond.
- Tracking convergence with, or divergence from, euro-area funding costs over time.
Response structure
null if both sources did not publish on that day.
data: {data, valoare}. It is not the NBR's last day — the calendars do not coincide.
1Y where the NBR writes 12M.
Response examples
{
"data": {
"data": "2024-06-15",
"valoare": null,
"ultima": {
"data": "2024-06-14",
"valoare": {
"maturitate": "10Y",
"luni": 120,
"romania": {
"randament": "6.78",
"bid": "6.89",
"ask": "6.66",
"sursa": "BNR — fixing titluri de stat"
},
"zona_euro": {
"randament": "2.41",
"emitent": "aaa",
"punct_curba": "10Y",
"sursa": "BCE — curba randamentelor zonei euro"
},
"spread": {
"puncte_de_baza": 437,
"puncte_procentuale": "4.37"
}
}
}
},
"meta": {
"surse": {
"romania": "BNR — fixing titluri de stat (baza de date interactivă).",
"zona_euro": "BCE — curba randamentelor titlurilor guvernamentale din zona euro."
},
"acoperire": {
"de_la": "2011-01-10",
"pana_la": "2026-09-18",
"zile": 3909
},
"nota_zi": "Ziua cerută nu are publicare. `valoare` e gol DELIBERAT, ca să nu fie folosită o cifră care nu e a zilei cerute; ultima publicată înainte de ea e în `ultima`.",
"nota_zi_comuna": "Ambele randamente vin din ACEEAŞI zi. Calendarele nu coincid — 38 de zile româneşti n-au zi BCE, 103 zile BCE n-au zi românească — iar BCE publică cu o zi întârziere, deci ziua implicită e ultima în care au publicat amândoi, nu azi.",
"nota_emitent": "BCE publică două curbe, ambele „zona euro\": `aaa` (doar emitenţii AAA) şi `toti_emitentii`. La 10 ani medianele istorice sunt 407 şi 334 de puncte de bază — alegerea schimbă răspunsul, deci e a clientului.",
"nota_maturitati": "Cele cinci maturităţi ale fixing-ului au corespondent exact pe curba BCE (12M la BNR e 1Y la BCE). Nu se interpolează nimic pentru comparaţie.",
"nota_istoric": "În cele 3.891 de zile comune din 2011 încoace, spread-ul n-a fost niciodată negativ. Medianele pe maturitate, faţă de AAA: 343 pb la 6M, 359 la 12M, 404 la 3Y, 423 la 5Y, 407 la 10Y.",
"curba_romaneasca": "/financiar/v1/titluri-stat/fixing",
"curba_zonei_euro": "/financiar/v1/bce/curba"
}
}
{
"data": {
"data": "2024-06-15",
"valoare": null,
"ultima": {
"data": "2024-06-14",
"valoare": {
"maturitate": "10Y",
"luni": 120,
"romania": {
"randament": "6.78",
"bid": "6.89",
"ask": "6.66",
"sursa": "BNR — fixing titluri de stat"
},
"zona_euro": {
"randament": "2.41",
"emitent": "aaa",
"punct_curba": "10Y",
"sursa": "BCE — curba randamentelor zonei euro"
},
"spread": {
"puncte_de_baza": 437,
"puncte_procentuale": "4.37"
}
}
}
},
"meta": {
"surse": {
"romania": "BNR — fixing titluri de stat (baza de date interactivă).",
"zona_euro": "BCE — curba randamentelor titlurilor guvernamentale din zona euro."
},
"acoperire": {
"de_la": "2011-01-10",
"pana_la": "2026-09-18",
"zile": 3909
},
"nota_zi": "Ziua cerută nu are publicare. `valoare` e gol DELIBERAT, ca să nu fie folosită o cifră care nu e a zilei cerute; ultima publicată înainte de ea e în `ultima`.",
"nota_zi_comuna": "Ambele randamente vin din ACEEAŞI zi. Calendarele nu coincid — 38 de zile româneşti n-au zi BCE, 103 zile BCE n-au zi românească — iar BCE publică cu o zi întârziere, deci ziua implicită e ultima în care au publicat amândoi, nu azi.",
"nota_emitent": "BCE publică două curbe, ambele „zona euro\": `aaa` (doar emitenţii AAA) şi `toti_emitentii`. La 10 ani medianele istorice sunt 407 şi 334 de puncte de bază — alegerea schimbă răspunsul, deci e a clientului.",
"nota_maturitati": "Cele cinci maturităţi ale fixing-ului au corespondent exact pe curba BCE (12M la BNR e 1Y la BCE). Nu se interpolează nimic pentru comparaţie.",
"nota_istoric": "În cele 3.891 de zile comune din 2011 încoace, spread-ul n-a fost niciodată negativ. Medianele pe maturitate, faţă de AAA: 343 pb la 6M, 359 la 12M, 404 la 3Y, 423 la 5Y, 407 la 10Y.",
"curba_romaneasca": "/financiar/v1/titluri-stat/fixing",
"curba_zonei_euro": "/financiar/v1/bce/curba"
}
}
{
"data": {
"data": "2024-06-15",
"valoare": null,
"ultima": {
"data": "2024-06-14",
"valoare": {
"maturitate": "5Y",
"luni": 60,
"romania": {
"randament": "6.47",
"bid": "6.59",
"ask": "6.35",
"sursa": "BNR — fixing titluri de stat"
},
"zona_euro": {
"randament": "2.34",
"emitent": "aaa",
"punct_curba": "5Y",
"sursa": "BCE — curba randamentelor zonei euro"
},
"spread": {
"puncte_de_baza": 413,
"puncte_procentuale": "4.13"
}
}
}
},
"meta": {
"surse": {
"romania": "BNR — fixing titluri de stat (baza de date interactivă).",
"zona_euro": "BCE — curba randamentelor titlurilor guvernamentale din zona euro."
},
"acoperire": {
"de_la": "2011-01-10",
"pana_la": "2026-09-18",
"zile": 3909
},
"nota_zi": "Ziua cerută nu are publicare. `valoare` e gol DELIBERAT, ca să nu fie folosită o cifră care nu e a zilei cerute; ultima publicată înainte de ea e în `ultima`.",
"nota_zi_comuna": "Ambele randamente vin din ACEEAŞI zi. Calendarele nu coincid — 38 de zile româneşti n-au zi BCE, 103 zile BCE n-au zi românească — iar BCE publică cu o zi întârziere, deci ziua implicită e ultima în care au publicat amândoi, nu azi.",
"nota_emitent": "BCE publică două curbe, ambele „zona euro\": `aaa` (doar emitenţii AAA) şi `toti_emitentii`. La 10 ani medianele istorice sunt 407 şi 334 de puncte de bază — alegerea schimbă răspunsul, deci e a clientului.",
"nota_maturitati": "Cele cinci maturităţi ale fixing-ului au corespondent exact pe curba BCE (12M la BNR e 1Y la BCE). Nu se interpolează nimic pentru comparaţie.",
"nota_istoric": "În cele 3.891 de zile comune din 2011 încoace, spread-ul n-a fost niciodată negativ. Medianele pe maturitate, faţă de AAA: 343 pb la 6M, 359 la 12M, 404 la 3Y, 423 la 5Y, 407 la 10Y.",
"curba_romaneasca": "/financiar/v1/titluri-stat/fixing",
"curba_zonei_euro": "/financiar/v1/bce/curba"
}
}
{
"data": {
"data": "2024-06-15",
"valoare": null,
"ultima": {
"data": "2024-06-14",
"valoare": {
"maturitate": "12M",
"luni": 12,
"romania": {
"randament": "5.95",
"bid": "6.10",
"ask": "5.80",
"sursa": "BNR — fixing titluri de stat"
},
"zona_euro": {
"randament": "3.29",
"emitent": "toti_emitentii",
"punct_curba": "1Y",
"sursa": "BCE — curba randamentelor zonei euro"
},
"spread": {
"puncte_de_baza": 266,
"puncte_procentuale": "2.66"
}
}
}
},
"meta": {
"surse": {
"romania": "BNR — fixing titluri de stat (baza de date interactivă).",
"zona_euro": "BCE — curba randamentelor titlurilor guvernamentale din zona euro."
},
"acoperire": {
"de_la": "2011-01-10",
"pana_la": "2026-09-18",
"zile": 3909
},
"nota_zi": "Ziua cerută nu are publicare. `valoare` e gol DELIBERAT, ca să nu fie folosită o cifră care nu e a zilei cerute; ultima publicată înainte de ea e în `ultima`.",
"nota_zi_comuna": "Ambele randamente vin din ACEEAŞI zi. Calendarele nu coincid — 38 de zile româneşti n-au zi BCE, 103 zile BCE n-au zi românească — iar BCE publică cu o zi întârziere, deci ziua implicită e ultima în care au publicat amândoi, nu azi.",
"nota_emitent": "BCE publică două curbe, ambele „zona euro\": `aaa` (doar emitenţii AAA) şi `toti_emitentii`. La 10 ani medianele istorice sunt 407 şi 334 de puncte de bază — alegerea schimbă răspunsul, deci e a clientului.",
"nota_maturitati": "Cele cinci maturităţi ale fixing-ului au corespondent exact pe curba BCE (12M la BNR e 1Y la BCE). Nu se interpolează nimic pentru comparaţie.",
"nota_istoric": "În cele 3.891 de zile comune din 2011 încoace, spread-ul n-a fost niciodată negativ. Medianele pe maturitate, faţă de AAA: 343 pb la 6M, 359 la 12M, 404 la 3Y, 423 la 5Y, 407 la 10Y.",
"curba_romaneasca": "/financiar/v1/titluri-stat/fixing",
"curba_zonei_euro": "/financiar/v1/bce/curba"
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | A maturity or issuer outside the list, or a malformed or future date. |
| 429 | cota_depasita | The plan's monthly quota has been exceeded (see Retry-After). |
All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.
{
"eroare": {
"cod": "validare",
"mesaj": "A maturity or issuer outside the list, or a malformed or future date.",
"detalii": {
"maturitate": [
"The value sent does not satisfy the parameter rule."
]
}
}
}