oneapi
Autentificare
Financiar v1 / TitluriStat

Fixing titluri de stat

Randamentele bid şi ask ale titlurilor de stat româneşti, pe cele cinci maturităţi publicate:
6 luni, 12 luni, 3, 5 şi 10 ani. Serie zilnică din ianuarie 2011.

Sunt RANDAMENTE, nu preţuri, iar relaţia bid/ask se inversează. Cumperi la preţul ask, care e
mai mare, deci randamentul corespunzător e mai MIC. Verificat pe toate cele 19.710 perechi din
2011 încoace: bid > ask în 100% din cazuri, fără o singură excepţie.

De aceea spread vine deja calculat ca bid − ask, pozitiv. Cine îl calculează invers, din
reflexul preţurilor, obţine un număr negativ şi crede că datele sunt stricate. Media istorică e
0,28 puncte procentuale, între 0,14 şi 0,51 — deci şi un reper de lichiditate.

Punctele vin ordonate pe maturitate reală, nu alfabetic: sortate pe text ar ieşi
10Y, 12M, 3Y, 5Y, 6M. luni dă ordinea şi serveşte la interpolare.

Ziua fără publicare are valoare gol, iar ultimul fixing anterior vine în ultima, cu ziua lui.

GET
https://oneapi.ro/api/financiar/v1/titluri-stat/fixing

Parametri de interogare

NumeTipDescriereValori acceptate
dataobligatoriu string Obligatoriu, YYYY-MM-DD. Nu poate fi în viitor. ex. 2024-06-15ex. 2024-01-15ex. 2023-06-15

Cum se comportă

  • ?data= e obligatorie, iar răspunsul are mereu aceeaşi formă: data (ziua cerută), valoare (completată numai dacă avem exact ziua aia) şi ultima (ultima zi publicată la sau înainte de ea, cu valoarea ei). valoare rămâne gol DELIBERAT când ziua cerută n-are publicare — cifra de altă zi stă separat, sub ultima, ca să nu poată fi folosită din greşeală într-un calcul. Lipsa datelor nu mai e o eroare: răspunsul e 200, iar comparaţia data vs ultima.data spune tot.
  • Randamentele bid şi ask ale titlurilor de stat româneşti, pe cele cinci maturităţi publicate de BNR: 6 luni, 12 luni, 3, 5 şi 10 ani. Serie zilnică din ianuarie 2011.
  • Sunt RANDAMENTE, nu preţuri, iar relaţia bid/ask se inversează. Cumperi la preţul ask, care e mai mare, deci randamentul corespunzător e mai MIC. Verificat pe toate cele 19.710 perechi din 2011 încoace: bid > ask în 100% din cazuri, fără o singură excepţie.
  • De aceea spread vine deja calculat ca bid − ask, pozitiv. Cine îl calculează invers, din reflexul preţurilor, obţine un număr negativ şi crede că datele sunt stricate. Unitatea sunt punctele procentuale de randament.
  • Spread-ul e şi un reper de lichiditate. Media istorică e 0,28 puncte, între 0,14 şi 0,51 — dar în 19 martie 2020, în plină criză, era între 0,33 şi 0,46 pe toate maturităţile, faţă de 0,17–0,30 în perioade calme.
  • Punctele vin ordonate pe maturitate REALĂ, nu alfabetic. Sortate pe text ar ieşi 10Y, 12M, 3Y, 5Y, 6M — o curbă desenată aşa arată ca zgomot. luni dă ordinea şi serveşte la interpolare.
  • Ziua fără publicare are valoare gol, iar ultimul fixing anterior vine în ultima. Fără plafon de vechime. Toate maturităţile vin din ACEEAŞI zi: o curbă care amestecă momente de piaţă nu e o curbă.
  • Aceasta e curba suverană românească. Pentru cea a zonei euro, pe 11 maturităţi şi două variante de emitent, vezi /bce/curba — sunt pieţe diferite şi nu se citesc împreună fără a şti asta.

La ce folosește

  • Randamentul cerut de piaţă pentru datoria suverană românească.
  • Actualizarea unui flux de numerar în lei la randamente de piaţă.
  • Urmărirea lichidităţii pieţei prin evoluţia spread-ului.

Structura răspunsului

CâmpTipDescriere
data.data string Ziua cerută, exact cum ai trimis-o.
data.valoare null Fixing-ul zilei cerute: {unitate, puncte[]}. null dacă ziua aia n-are publicare.
data.ultima object Ultima zi publicată la sau înainte de data, cu fixing-ul ei: {data, valoare}. null doar dacă nu există nimic înaintea zilei cerute.
data.ultima.data string
data.ultima.valoare.unitate string Mereu procent_pe_an.
data.ultima.valoare.puncte[].maturitate string Eticheta maturităţii (6M, 12M, 3Y, 5Y, 10Y).
data.ultima.valoare.puncte[].denumire string Denumirea, aşa cum o publică sursa.
data.ultima.valoare.puncte[].luni integer Maturitatea în luni — ordinea reală şi baza pentru interpolare.
data.ultima.valoare.puncte[].bid string Randamentul bid. Mai MARE decât ask, fiindcă sunt randamente.
data.ultima.valoare.puncte[].ask string Randamentul ask.
data.ultima.valoare.puncte[].mid string Media dintre bid şi ask — valoarea care se desenează.
data.ultima.valoare.puncte[].spread string bid − ask, în puncte procentuale. Deja pozitiv.
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.acoperire.de_la string Prima perioadă pentru care avem date.
meta.acoperire.pana_la string Ultima perioadă pentru care avem date.
meta.nota_randamente string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_spread string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_ordine string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_zi string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.fara_valori Maturităţile fără cotaţie în ziua folosită. Apare doar când lipseşte ceva.

Exemple de răspuns

GEThttps://oneapi.ro/api/financiar/v1/titluri-stat/fixing?data=2024-06-15
{
    "data": {
        "data": "2024-06-15",
        "valoare": null,
        "ultima": {
            "data": "2024-06-14",
            "valoare": {
                "unitate": "procent_pe_an",
                "puncte": [
                    {
                        "maturitate": "6M",
                        "denumire": "şase luni",
                        "luni": 6,
                        "bid": "6.09",
                        "ask": "5.79",
                        "mid": "5.94",
                        "spread": "0.30"
                    }
                ]
            }
        }
    },
    "meta": {
        "sursa": "BNR — fixing titluri de stat (baza de date interactivă).",
        "acoperire": {
            "de_la": "2011-01-10",
            "pana_la": "2026-09-21"
        },
        "nota_randamente": "Valorile sunt RANDAMENTE, nu preţuri. De aceea `bid` e mai mare decât `ask`: cumperi la preţul ask, care e mai mare, deci randamentul e mai mic. Verificat pe 19.710 perechi din 2011: bid > ask în 100% din cazuri.",
        "nota_spread": "`spread` e `bid − ask`, în puncte procentuale de randament, deja pozitiv. Calculat invers ar da un număr negativ. Media istorică: 0,28 puncte, între 0,14 şi 0,51.",
        "nota_ordine": "Punctele sunt ordonate pe maturitate reală. Sortate alfabetic ar ieşi `10Y, 12M, 3Y, 5Y, 6M` — o curbă desenată aşa arată ca zgomot.",
        "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`."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareDată lipsă, malformată sau în viitor.
429cota_depasitaCota 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": "Dată lipsă, malformată sau în viitor.",
        "detalii": {
            "data": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}