oneapi
Autentificare
Financiar v1 / TitluriStat

Tranzacţii pe piaţa secundară

Câte tranzacţii cu titluri de stat s-au făcut şi de ce valoare, pe titluri denominate în lei şi în
euro. Serie zilnică din septembrie 1999, serie lunară din noiembrie 1999.

Seria lunară publicată de BNR NU e totalul lunii, e MEDIA ZILNICĂ. Nota sursei o spune, şi se
verifică pe date: iulie 2026 dă 7.438,8 la lunar şi exact 7.438,8 ca medie a celor 23 de zile
publicate — potrivire 92,8% la lei şi 96,2% la euro, iar diferenţele vin din zilele care lipsesc din
seria zilnică, nu din altă definiţie. Cine adună cele douăsprezece valori lunare ca să afle
volumul anului obţine un număr fără sens.

De aceea răspunsul lunar dă ambele cifre alături: valoare_medie_zilnica, publicată de BNR, şi
valoare_totala, calculată de noi din seria zilnică, cu zile din care rezultă.

Zero tranzacţii e numar 0, nu valoare 0. În euro nu există nicio tranzacţie în 1999–2002 şi
2005–2008, în 2003, 2004 şi 2009 doar 16–22% din zile au tranzacţii, iar din 2021 între 11% şi 26% din
zilele anului n-au niciuna. O valoare 0 cu numar peste zero e o sumă sub rotunjire (15 sep: nota
spunea „2002–2009 zero pe toată durata, 43% din zile”). Ziua fără publicare e altceva: nu
apare deloc în răspuns, iar meta spune câte zile lucrătoare avea intervalul.

Lei şi euro nu se adună. Sunt monede diferite, fiecare cu unitatea ei — milioane RON şi
milioane EUR — iar un total combinat ar fi o minciună.

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

Parametri de interogare

NumeTipDescriereValori acceptate
frecventaopțional string | null Opţional: zilnic (implicit) sau lunar. Schimbă şi formatul marginilor. zilniclunar
de_laobligatoriu string Obligatoriu. YYYY-MM-DD la zilnic, YYYY-MM la lunar. ex. 2024-06-15ex. 2024-01-02
pana_laopțional string | null Opţional. Implicit ultima perioadă publicată. Acelaşi format ca de_la. ex. 2024-06-30ex. 2024-06-28ex. 2024-06-15

Cum se comportă

  • Câte tranzacţii cu titluri de stat s-au făcut şi de ce valoare, pe titluri denominate în lei şi în euro. Serie zilnică din septembrie 1999, serie lunară din noiembrie 1999.
  • Seria lunară publicată de BNR NU e totalul lunii, e MEDIA ZILNICĂ. Nota sursei o spune, şi se verifică pe date: iulie 2026 dă 7.438,8 la lunar şi exact 7.438,8 ca medie a celor 23 de zile publicate. Cine adună cele douăsprezece valori lunare ca să afle volumul anului obţine un număr fără sens — de aceea răspunsul dă şi valoare_totala, calculată de noi din seria zilnică, cu zile din care rezultă.
  • Cele două medii — cea publicată şi valoare_medie_zilnica_calculata — coincid în 292 din 319 luni la valoarea în lei, sub 0,1% diferenţă. Cinci luni diferă însă cu peste 10%: divizorul exact folosit de BNR nu se poate reconstitui din datele publicate. Le dăm pe amândouă; cifra publicată rămâne cea oficială.
  • Zero înseamnă zero, nu date lipsă. În euro nu există nicio tranzacţie în 1999–2002 şi 2005–2008, iar în 2003, 2004 şi 2009 doar 16–22% din zile au tranzacţii; din 2021, între 11% şi 26% din zilele fiecărui an n-au nicio tranzacţie în euro (19% pe 2022–2026). Ziua fără tranzacţii e cea cu numar 0: o valoare 0 cu numar peste zero (2024-06-27 în euro: o tranzacţie, 0,00) e o sumă sub pragul de rotunjire, nu zero tranzacţii. Ziua fără publicare e altceva: nu apare deloc în răspuns, iar meta.zile_lucratoare spune faţă de ce se citeşte numărul de zile întoarse.
  • Lei şi euro nu se adună. Sunt monede diferite, fiecare cu unitatea ei — milioane RON şi milioane EUR — iar un total combinat ar fi o minciună. De aceea nici rezumat nu are o linie „total".
  • Marginile se scriu după frecvenţă: YYYY-MM-DD la zilnic, YYYY-MM la lunar. O zi dintr-o cerere lunară n-ar spune dacă se voia luna întreagă sau doar ziua aceea, deci e refuzată.
  • Marginile din afara acoperirii se aliniază tăcut la ea, iar meta.ajustat spune ce s-a mutat şi de la ce. Plafoanele: 366 de zile la zilnic, 120 de luni la lunar.

La ce folosește

  • Lichiditatea pieţei secundare: cât se tranzacţionează efectiv, nu doar la ce randament.
  • Volumul real al unei luni sau al unui an, cu totalul calculat corect din seria zilnică.
  • Ponderea pieţei în euro faţă de cea în lei, urmărită în timp.

Structura răspunsului

CâmpTipDescriere
data.frecventa string Frecvenţa la care sursa publică seria (zilnic, lunar, trimestrial, anual).
data.de_la string Începutul intervalului acoperit de răspuns.
data.pana_la string Sfârşitul intervalului acoperit de răspuns, inclusiv.
data.rezumat object Agregatul intervalului, pe fiecare denominare separat: total, medie zilnică, ziua sau luna de vârf. varf e null când intervalul e plat zero.
data.rezumat.lei.zile integer Numărul de zile acoperite.
data.rezumat.lei.zile_fara_tranzactii integer Câte zile din interval n-au avut nicio tranzacţie.
data.rezumat.lei.numar_total integer
data.rezumat.lei.valoare_totala string
data.rezumat.lei.valoare_medie_zilnica string
data.rezumat.lei.varf.data string
data.rezumat.lei.varf.valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
data.rezumat.lei.varf.numar integer Numărul de elemente numărate.
data.rezumat.lei.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.rezumat.euro.zile integer Numărul de zile acoperite.
data.rezumat.euro.zile_fara_tranzactii integer Câte zile din interval n-au avut nicio tranzacţie.
data.rezumat.euro.numar_total integer
data.rezumat.euro.valoare_totala string
data.rezumat.euro.valoare_medie_zilnica string
data.rezumat.euro.varf.data string
data.rezumat.euro.varf.valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
data.rezumat.euro.varf.numar integer Numărul de elemente numărate.
data.rezumat.euro.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.perioade[].data string Ziua, la frecvenţa zilnică.
data.perioade[].lei object Titlurile denominate în lei. null dacă perioada n-are valoare pentru ele.
data.perioade[].lei.numar integer Numărul de elemente numărate.
data.perioade[].lei.valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
data.perioade[].lei.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.perioade[].euro object Titlurile denominate în euro.
data.perioade[].euro.numar integer Numărul de elemente numărate.
data.perioade[].euro.valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
data.perioade[].euro.unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
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.perioade_publicate integer Câte perioade a publicat efectiv sursa.
meta.zile_interval integer Câte zile calendaristice are intervalul cerut.
meta.zile_lucratoare integer Zilele lucrătoare din interval. Nu e identic cu calendarul de tranzacţionare: BNR a publicat şi în şase zile de sâmbătă (în 2002, 2010 şi 2011).
meta.nota_zero string Ce înseamnă un zero aici: valoare măsurată nulă, nu lipsă de date.
meta.nota_lipsa string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_monede string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
data.perioade[].perioada string Luna YYYY-MM, la frecvenţa lunară.
data.perioade[].zile_lucratoare integer Câte zile lucrătoare a avut luna — reperul pentru zile. Doar la lunar.
data.perioade[].total_partial boolean true când totalul lunii e făcut din mai puţine zile decât a avut luna, deci e sub realitate. Doar la lunar.
data.perioade[].*.numar Numărul de tranzacţii al zilei. Doar la zilnic.
data.perioade[].*.valoare Valoarea tranzacţiilor zilei, în unitatea declarată. Doar la zilnic.
data.perioade[].*.numar_mediu_zilnic Numărul mediu zilnic publicat de BNR. Doar la lunar.
data.perioade[].*.valoare_medie_zilnica Valoarea medie zilnică publicată de BNR. Doar la lunar.
data.perioade[].*.numar_total Totalul lunii, calculat de noi din seria zilnică.
data.perioade[].*.valoare_totala Valoarea totală a lunii, calculată de noi din seria zilnică.
data.perioade[].*.zile Din câte zile e făcut totalul.
data.perioade[].*.valoare_medie_zilnica_calculata Media care iese din seria zilnică, de comparat cu cea publicată.
data.perioade[].*.unitate milioane_ron sau milioane_eur.
data.rezumat.*.zile_fara_tranzactii Câte zile publicate au avut zero tranzacţii. Doar la zilnic.
meta.fara_date string data e null, iar aici stă motivul. Intervalul e în întregime în afara seriei; răspunsul dă acoperirea.
meta.fara_date_cod string 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/piata-secundara?de_la=2024-06-15&pana_la=2024-06-30
{
    "data": {
        "frecventa": "zilnic",
        "de_la": "2024-06-15",
        "pana_la": "2024-06-30",
        "rezumat": {
            "lei": {
                "zile": 9,
                "zile_fara_tranzactii": 0,
                "numar_total": 2163,
                "valoare_totala": "27948.30",
                "valoare_medie_zilnica": "3105.37",
                "varf": {
                    "data": "2024-06-25",
                    "valoare": "8448.90",
                    "numar": 306
                },
                "unitate": "milioane_ron"
            },
            "euro": {
                "zile": 9,
                "zile_fara_tranzactii": 1,
                "numar_total": 16,
                "valoare_totala": "222.50",
                "valoare_medie_zilnica": "24.72",
                "varf": {
                    "data": "2024-06-26",
                    "valoare": "101.00",
                    "numar": 2
                },
                "unitate": "milioane_eur"
            }
        },
        "perioade": [
            {
                "data": "2024-06-17",
                "lei": {
                    "numar": 163,
                    "valoare": "2048.20",
                    "unitate": "milioane_ron"
                },
                "euro": {
                    "numar": 0,
                    "valoare": "0.00",
                    "unitate": "milioane_eur"
                }
            }
        ]
    },
    "meta": {
        "sursa": "BNR — tranzacţii pe piaţa secundară (baza de date interactivă).",
        "acoperire": {
            "de_la": "1999-09-01",
            "pana_la": "2026-09-21"
        },
        "perioade_publicate": 9,
        "zile_interval": 16,
        "zile_lucratoare": 9,
        "nota_zero": "Zero înseamnă zero, nu date lipsă. În euro nu există nicio tranzacţie în 1999–2002 şi 2005–2008, iar în 2003, 2004 şi 2009 doar 16–22% din zile au tranzacţii; din 2021, între 11% şi 26% din zilele fiecărui an n-au nicio tranzacţie în euro (19% pe 2022–2026). Ziua fără tranzacţii e cea cu `numar` 0: o `valoare` 0 cu `numar` peste zero (2024-06-27 în euro: o tranzacţie, 0,00) e o sumă sub pragul de rotunjire, nu zero tranzacţii.",
        "nota_lipsa": "Zilele fără publicare nu apar în răspuns. `zile_lucratoare` e reperul faţă de care se citeşte `perioade_publicate` — nu e identic cu calendarul de tranzacţionare: BNR a publicat şi în şase zile de sâmbătă (2002-01-19, 2002-01-26, 2010-02-06, 2010-02-20, 2010-06-26, 2011-05-14).",
        "nota_monede": "Lei şi euro nu se adună: sunt monede diferite, fiecare cu unitatea ei (`milioane_ron`, `milioane_eur`)."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareFormat greşit pentru frecvenţa cerută, pana_la înainte de de_la, interval în viitor, sau interval_prea_lung — peste 366 de zile ori 120 de luni.
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": "Format greşit pentru frecvenţa cerută, pana_la înainte de de_la, interval în viitor, sau interval_prea_lung — peste 366 de zile ori 120 de luni.",
        "detalii": {
            "frecventa": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}