oneapi
Autentificare
Financiar v1 / TitluriStat

Seria fixing-ului pe un interval

Randamentele titlurilor de stat între două date, grupate pe maturitate, cu bid, ask, mid şi spread
pe fiecare zi.

Altceva decât /titluri-stat/fixing: acolo întrebarea e „cât e curba azi", iar răspunsul un
* tabel de cinci rânduri. Aici e „cum s-a mişcat", iar răspunsul e o serie. Aceeaşi deosebire ca
între /curs şi /curs/interval.

rezumat răspunde direct la întrebarea care se pune de fapt. În februarie 2020 spread-ul mediu
era 0,221 puncte; în martie, 0,304 — cu maximul urcând de la 0,33 la 0,46, iar randamentul la zece
ani de la ~4,2% la ~5,9%. Cifrele astea ies dintr-o cerere, fără să parcurgi sute de puncte. E o
agregare pe care /serii/{cod}/valori nu o poate face: spread-ul se naşte din DOUĂ serii.

Fiecare punct cară toate cele patru valori, fără variantă „doar mid": mid serveşte graficului,
spread-ul lichidităţii, iar o rută care îşi schimbă forma după un parametru e mai greu de folosit.
Un an întreg cu toate maturităţile înseamnă în jur de 1.250 de puncte; cu un filtru, mult mai puţin.

Intervalul e plafonat la 366 de zile, aceleaşi margini ca la /curs/interval şi /robor/interval.

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

Parametri de interogare

NumeTipDescriereValori acceptate
de_laobligatoriu string Obligatoriu, YYYY-MM-DD. Nu poate fi în viitor; se aliniază la acoperire. ex. 2024-06-15ex. 2024-06-17ex. 2024-01-02
pana_laopțional string | null Opţional, implicit ultima zi publicată — nu ziua curentă, ca o întârziere de import să nu producă o coadă goală. ex. 2024-06-30ex. 2024-06-28ex. 2024-01-31
maturitatelistăopțional text Opţional, 1–5: ?maturitate=10Y sau ?maturitate=6M,10Y. Fără el, toate cinci. 6M12M3Y5Y10Y

Cum se comportă

  • Randamentele titlurilor de stat între două date, grupate pe maturitate, cu bid, ask, mid şi spread pe fiecare zi.
  • Altceva decât /titluri-stat/fixing: acolo întrebarea e „cât e curba azi", iar răspunsul un tabel de cinci rânduri. Aici e „cum s-a mişcat", iar răspunsul e o serie. Aceeaşi deosebire ca între /curs şi /curs/interval.
  • rezumat răspunde direct la întrebarea care se pune de fapt, fără parcurgerea seriei: minimul, maximul şi media pentru mid şi pentru spread, plus capetele. În martie 2020, randamentul la zece ani a urcat de la 4,04% la 5,02% — dar a atins 5,92% la mijlocul lunii, vârf pe care capetele îl ascund complet. Spread-ul maxim a sărit de la 0,21 puncte în februarie la 0,46 în martie.
  • E o agregare pe care /serii/{cod}/valori NU o poate face: spread-ul se naşte din DOUĂ serii, bid şi ask, nu din una singură.
  • Fiecare punct cară toate cele patru valori, fără variantă „doar mid". Mid serveşte graficului, spread-ul lichidităţii, iar o rută care îşi schimbă forma după un parametru e mai greu de folosit decât una puţin mai mare. Un an întreg cu toate maturităţile înseamnă în jur de 1.250 de puncte; cu un filtru, mult mai puţin.
  • maturitate e OPŢIONAL aici, spre deosebire de /curs/interval unde valuta e obligatorie: maturităţile sunt cinci, fixe şi cunoscute, iar toate cinci deodată e o cerere firească pentru o curbă. La valute, „toate" ar însemna patruzeci de serii.
  • Ordinea seriilor vine din tabelul de maturităţi, nu din ordinea în care le-a scris clientul: ?maturitate=10Y,6M întoarce tot 6M înaintea lui 10Y, ca o curbă desenată din răspuns să nu iasă amestecată.
  • Zilele fără publicare nu apar în serie, iar rezumat.puncte spune câte zile au efectiv cotaţie. Marginile se aliniază la acoperire — începutul e 2011-01-10 — iar ce s-a ajustat apare în meta.ajustat. Plafonul e de 366 de zile, verificat DUPĂ aliniere.

La ce folosește

  • Graficul evoluţiei curbei suverane româneşti.
  • Măsurarea stresului de lichiditate prin lărgirea spread-ului.
  • Compararea a două perioade — o lună calmă faţă de una de criză.

Structura răspunsului

CâmpTipDescriere
data.de_la string Începutul intervalului acoperit de răspuns.
data.pana_la string Sfârşitul intervalului acoperit de răspuns, inclusiv.
data.unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
data.serii[].maturitate string Cheia din convenţia pieţei monetare (ON, 3M, 12M).
data.serii[].denumire string Denumirea, aşa cum o publică sursa.
data.serii[].luni integer Numărul de luni acoperite.
data.serii[].rezumat.puncte integer Câte zile au efectiv cotaţie în interval.
data.serii[].rezumat.prima_zi string
data.serii[].rezumat.ultima_zi string
data.serii[].rezumat.mid object Primul, ultimul, minimul, maximul şi media randamentului mid pe interval.
data.serii[].rezumat.mid.primul string
data.serii[].rezumat.mid.ultimul string
data.serii[].rezumat.mid.minim string Cea mai mică valoare din interval.
data.serii[].rezumat.mid.maxim string Cea mai mare valoare din interval.
data.serii[].rezumat.mid.mediu string Mediul de rezidenţă (urban ori rural).
data.serii[].rezumat.spread object Minimul, maximul şi media spread-ului — reperul de lichiditate.
data.serii[].rezumat.spread.minim string Cea mai mică valoare din interval.
data.serii[].rezumat.spread.maxim string Cea mai mare valoare din interval.
data.serii[].rezumat.spread.mediu string Mediul de rezidenţă (urban ori rural).
data.serii[].valori[].data string
data.serii[].valori[].bid string
data.serii[].valori[].ask string
data.serii[].valori[].mid string Media dintre bid şi ask, pentru ziua respectivă.
data.serii[].valori[].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.puncte integer Numărul de puncte de date.
meta.zile_interval integer Câte zile calendaristice are intervalul cerut.
meta.nota_randamente string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_rezumat string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_zile string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.ajustat Marginile aliniate la acoperire. Absent când nu s-a ajustat nimic.
meta.fara_valori Maturităţile cerute fără nicio valoare în interval.
meta.fara_date data e null, iar aici stă motivul. Intervalul e în întregime înainte de 2011-01-10.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

GEThttps://oneapi.ro/api/financiar/v1/titluri-stat/fixing/interval?de_la=2024-06-15&pana_la=2024-06-30&maturitate=6M,10Y
{
    "data": {
        "de_la": "2024-06-15",
        "pana_la": "2024-06-30",
        "unitate": "procent_pe_an",
        "serii": [
            {
                "maturitate": "6M",
                "denumire": "şase luni",
                "luni": 6,
                "rezumat": {
                    "puncte": 9,
                    "prima_zi": "2024-06-17",
                    "ultima_zi": "2024-06-28",
                    "mid": {
                        "primul": "5.95",
                        "ultimul": "5.92",
                        "minim": "5.92",
                        "maxim": "5.95",
                        "mediu": "5.94"
                    },
                    "spread": {
                        "minim": "0.30",
                        "maxim": "0.31",
                        "mediu": "0.30"
                    }
                },
                "valori": [
                    {
                        "data": "2024-06-17",
                        "bid": "6.10",
                        "ask": "5.80",
                        "mid": "5.95",
                        "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"
        },
        "puncte": 18,
        "zile_interval": 16,
        "nota_randamente": "Valorile sunt RANDAMENTE: `bid` e mai mare decât `ask`, iar `spread` e `bid − ask`, deja pozitiv.",
        "nota_rezumat": "`rezumat` dă minimul, maximul şi media pentru mid şi pentru spread, plus capetele — ca „cât s-a lărgit spread-ul\" să nu ceară parcurgerea seriei.",
        "nota_zile": "Zilele fără publicare nu apar în serie; `rezumat.puncte` spune câte zile au efectiv cotaţie."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareinterval_prea_lung (peste 366 de zile, verificat după aliniere); maturitate inexistentă; de_la lipsă sau în viitor; pana_la înainte de de_la.
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": "interval_prea_lung (peste 366 de zile, verificat după aliniere); maturitate inexistentă; de_la lipsă sau în viitor; pana_la înainte de de_la.",
        "detalii": {
            "de_la": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}