Obscura

NY Fed Rates

Benchmark rates published by the New York Fed, including SOFR and the other repo and Treasury reference rates.

nyfed_rates — the dataset name to pass to the Obscura API.

Category Markets Columns 21 Refresh Every weekday Point-in-time available_date

What one row means

One published value of a single NY Fed overnight reference rate (SOFR, EFFR, OBFR, TGCR, BGCR, or the SOFR Averages & Index) for a single trading/effective day — the headline rate plus whichever dispersion statistics its methodology publishes and the total transaction volume underlying it, as returned by the `/api/rates/all/search.json` endpoint. One row per rate type per day. The rates have been recalculated three times without the back history ever being restated, so every row also carries the `regime` that produced it; see `entities::nyfed_rate::REGIMES`.

One row per (rate_type, occurred_on).

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For nyfed_rates: release_calendar, PER RATE TYPE. The five daily reference rates publish ~08:00 ET on the next business day (T+1); the SOFR Averages & Index (SOFRAI) publish ~08:00 ET on the day they are dated (T+0). The business-day calendar also differs by series: EFFR/OBFR are unsecured and settle over Fedwire, which keeps the US FEDERAL calendar; SOFR/TGCR/BGCR/SOFRAI are backed by Treasury repo, which follows SIFMA's US government-securities calendar and CLOSES on Good Friday when the federal one does not. Materialized by the collector (`tasks::nyfed::RateType`).

Refresh cadence

Obscura refreshes nyfed_rates every weekday — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 21 columns

The full public column list for nyfed_rates, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/nyfed_rates.

ColumnTypeDescription
rate_typetext · not nullReference rate series code from the source JSON's `type` field: one of EFFR, OBFR, SOFR, TGCR, BGCR, or SOFRAI (the SOFR Averages & Index, which carries no `percent_rate` but does carry the compounded averages and the index level). Each series has its OWN methodology history — see `regime` — so this column and `regime` are read together.
occurred_ondate · not nullThe trading/effective day the rate applies to, from the API's `effectiveDate` field — the natural event date: the overnight market activity the percentiles/volume summarize actually occurred on this calendar day. Composite primary key with rate_type.
available_datedatePublic-availability date, materialized by the collector PER RATE TYPE: the five daily reference rates are `occurred_on` + 1 business day (they publish ~08:00 ET on T+1), while SOFRAI is `occurred_on` itself (the SOFR Averages & Index publish ~08:00 ET the same day). The business-day calendar is the producing market's: FEDERAL for the unsecured rates (EFFR/OBFR, which settle over Fedwire and DO publish on Good Friday), and SIFMA's US government-securities calendar for the repo-backed ones (SOFR/TGCR/BGCR/SOFRAI, which do not). NULL only for a series the collector does not yet know a publication schedule for. The point-in-time column to filter/join on.
regimetext · not nullWHICH METHODOLOGY PRODUCED THIS ROW — the discriminator that stops a consumer splicing two definitions of `percent_rate` together. Never null: one of the names declared in `entities::nyfed_rate::REGIMES` (materialized by the collector from `(rate_type, occurred_on)`), or `undeclared` for a series the collector does not yet know. The NY Fed has changed the calculation of these rates three times and revised the back history NONE of those times, so `percent_rate` is not one series: EFFR before 2016-03-01 is a volume-weighted MEAN of brokers' data and after it a volume-weighted MEDIAN of FR 2420 transactions. Always group or filter by this column before comparing rates across a long window.
percent_ratedouble precisionThe headline published rate for this series/day, in percent per annum (e.g. 3.62 = 3.62%), from the source's `percentRate` field. This is the number quoted as "the SOFR"/"the EFFR"/etc. for the day.
percent_rate_1double precision1st percentile of the underlying transaction-rate distribution for this series/day, in percent per annum, from the source's `percentPercentile1` field — the low end of the traded-rate spread.
percent_rate_25double precision25th percentile of the underlying transaction-rate distribution, in percent per annum, from the source's `percentPercentile25` field.
percent_rate_75double precision75th percentile of the underlying transaction-rate distribution, in percent per annum, from the source's `percentPercentile75` field.
percent_rate_99double precision99th percentile of the underlying transaction-rate distribution, in percent per annum, from the source's `percentPercentile99` field — the high end of the traded-rate spread, useful for gauging market stress/dispersion on the day.
volume_billionsdouble precisionTotal dollar volume of transactions underlying this rate calculation, in USD billions, from the source's `volumeInBillions` field. Reflects the depth/liquidity of the overnight market that produced the rate. Published only from the FR 2420 / transaction-based regimes onward; null for EFFR before 2016-03-01, where the brokers' collection carried no volume at all.
intra_day_lowdouble precisionLowest rate transacted during the day, in percent per annum, from the source's `intraDayLow` field — the OLD-REGIME dispersion statistic, present only on EFFR before 2016-03-01 (regimes `effr_brokered_mean_*`). The NY Fed discontinued the low, high and standard deviation when the percentiles began; this is not a percentile and is not comparable with `percent_rate_1`, which is a volume-weighted quantile rather than an extremum.
intra_day_highdouble precisionHighest rate transacted during the day, in percent per annum, from the source's `intraDayHigh` field. Old-regime only (EFFR before 2016-03-01); the counterpart of `intra_day_low`, and likewise an extremum rather than the `percent_rate_99` volume-weighted quantile.
std_deviationdouble precisionStandard deviation of the day's transacted rates, in percentage points, from the source's `stdDeviation` field. Old-regime only (EFFR before 2016-03-01) — the brokers'-survey era's single dispersion measure, replaced from 2016-03-01 by the 1st/25th/75th/99th volume-weighted percentiles.
footnote_idintegerThe NY Fed's own publication footnote for this observation, from the source's `footnoteId` field; null on the ordinary ~99.9% of rows. `1` marks an unsecured rate published on REDUCED VOLUME (missing FR 2420 reporters); `2` marks a Treasury repo rate calculated from the primary dealer survey CONTINGENCY data because a market segment's production data was unavailable — on which the NY Fed suppresses the percentiles (the source returns the string "NA", stored here as null). A data-quality flag on individual days, NOT a methodology change: unlike `regime` it says nothing about what the column means, only how well this one observation was measured.
target_rate_fromdouble precisionFOMC federal-funds target, in percent per annum, from the source's `targetRateFrom` field. Present on EFFR records only. A distinct policy signal (where the Fed has set the funds target) — not derivable from the reference rates; EFFR-vs-target is a watched spread. **ITS MEANING CHANGES AT 2008-12-16** (regime `effr_brokered_mean_point_target` → `effr_brokered_mean_target_range`): before that day the FOMC set a single POINT target and this column IS that target, with `target_rate_to` null; from 2008-12-16 the FOMC set a target RANGE and this column is only the band's LOWER BOUND. Computing a band midpoint, or differencing the rate against this column, across that date compares two different quantities — group by `regime` first.
target_rate_todouble precisionFOMC federal-funds target band UPPER bound, in percent per annum, from the source's `targetRateTo` field. Present on EFFR records only, and only from 2008-12-16, when the FOMC moved from a point target to a range. Its absence before that date is not a gap in coverage — there was no upper bound to publish; pairs with `target_rate_from` to give the funds target band.
average_30daydouble precisionSOFR 30-day compounded average, in percent per annum, from the source's `average30day` field. Present on the SOFRAI (SOFR Averages & Index) record only.
average_90daydouble precisionSOFR 90-day compounded average, in percent per annum, from the source's `average90day` field. Present on the SOFRAI record only.
average_180daydouble precisionSOFR 180-day compounded average, in percent per annum, from the source's `average180day` field. Present on the SOFRAI record only.
sofr_indexdouble precisionPublished SOFR Index level, from the source's `index` field — the cumulative-compounding index used directly in loan/floating-rate contracts. Present on the SOFRAI record only.
revision_indicatortextFlag marking a revised observation, from the source's `revisionIndicator` field (normally an empty string, stored as NULL when empty). Relevant to point-in-time correctness / data-quality auditing.

Access nyfed_rates

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="nyfed_rates",
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the nyfed_rates dataset?

Benchmark rates published by the New York Fed, including SOFR and the other repo and Treasury reference rates. One published value of a single NY Fed overnight reference rate (SOFR, EFFR, OBFR, TGCR, BGCR, or the SOFR Averages & Index) for a single trading/effective day — the headline rate plus whichever dispersion statistics its methodology publishes and the total transaction volume underlying it, as returned by the `/api/rates/all/search.json` endpoint. One row per rate type per day. The rates have been recalculated three times without the back history ever being restated, so every row also carries the `regime` that produced it; see `entities::nyfed_rate::REGIMES`.

How do I avoid look-ahead bias with nyfed_rates?

Filter on nyfed_rates.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — release_calendar, PER RATE TYPE. The five daily reference rates publish ~08:00 ET on the next business day (T+1); the SOFR Averages & Index (SOFRAI) publish ~08:00 ET on the day they are dated (T+0). The business-day calendar also differs by series: EFFR/OBFR are unsecured and settle over Fedwire, which keeps the US FEDERAL calendar; SOFR/TGCR/BGCR/SOFRAI are backed by Treasury repo, which follows SIFMA's US government-securities calendar and CLOSES on Good Friday when the federal one does not. Materialized by the collector (`tasks::nyfed::RateType`). A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get nyfed_rates?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="nyfed_rates". The column schema is public at https://api.obscura.trade/v1/catalog/nyfed_rates.

How often is nyfed_rates updated?

Obscura refreshes nyfed_rates on a every weekday schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

Cboe IndicesDaily history of Cboe's volatility indices, including VIX, sourced directly from Cboe. Crypto MarketsPer-coin market data from CoinGecko: price, market cap and volume across thousands of cryptocurrencies. DeFiLlama ProtocolsTotal value locked in each DeFi protocol, tracked by DeFiLlama. DeFiLlama StablecoinsCirculating supply of each stablecoin over time, from DeFiLlama. DeFiLlama TVLTotal value locked on each blockchain, from DeFiLlama. Flow MetricsTrade-flow metrics per symbol in fixed time windows: taker (aggressor) buy versus sell volume and trade counts, broken o… Forex OrderbookOANDA's order book and position book by currency pair: where retail traders' open orders and positions sit relative to p… Forex PositionsRetail forex positioning by pair (share of traders long versus short), collected from several broker sentiment feeds.