# US Market Regime Panel: Yield Curve, VIX & Skew Daily (`mrdoe/us-market-regime-panel`) Actor

Daily US rates and volatility features in one table: Treasury yield curve, real yields, breakeven, 2s10s and 3m10y spreads, VIX term structure, VVIX, SKEW, 1-year VIX percentile and regime labels. Ready to join to prices.

- **URL**: https://apify.com/mrdoe/us-market-regime-panel.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 trading day returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![US Market Regime Panel: Yield Curve, VIX & Skew Daily - US market regime panel with Treasury yield curve spreads and VIX term structure per trading day](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/us-market-regime-panel--hero.png)

### What does US Market Regime Panel: Yield Curve, VIX & Skew Daily do?

US Market Regime Panel returns one row per US trading day with the rates and volatility backdrop that market predictors, macro dashboards and risk models need. Each row holds the Treasury nominal yield curve from 1 month to 30 years, real yields and the 10-year breakeven inflation rate, the 2s10s, 3m10y and 5s30s spreads in basis points with a curve regime label, daily yield changes, the VIX, VIX9D, VIX3M, VIX6M, VVIX and SKEW indices, VIX term-structure ratios, the VIX 1-year percentile and a volatility regime label. History reaches back to 1990 for the curve and to the start of each index series. All inputs are published by the US Treasury and Cboe.

### Why use US Market Regime Panel: Yield Curve, VIX & Skew Daily?

- Ready to join: one row per date, so it merges with any price or return series on the date.
- Derived features included: spreads, breakeven, term-structure ratios, percentiles and regime labels.
- Official sources: US Treasury par yield and real yield curves and Cboe index histories.
- Point-in-time friendly: each day's values are the ones published for that day.
- Bulk history in one run, or a daily delta of only the new day. No API key or login.

### What makes this different

Macro features usually mean stitching Treasury CSVs and several Cboe index files together and writing your own spreads and percentiles. This Actor does the join and the maths once, with consistent dates and blanks where a series does not exist, so your model gets the backdrop in one table.

### Who can use the US Market Regime Panel and how?

- **Quant researchers and predictors:** add rates and volatility regime features to price and return models.
- **Portfolio managers:** monitor curve inversion and volatility regimes across time.
- **Risk teams:** stress-test with VIX percentiles, term structure and skew.
- **Economists and students:** study the yield curve, breakeven inflation and volatility together.
- **Newsletter writers:** publish a daily macro dashboard.
- **Fintech apps:** show the market backdrop next to a portfolio.
- **AI agent builders:** let an assistant answer what the yield curve and VIX look like today.
- **Backtesting platforms:** filter historical signals by regime.

### How it works

![US Market Regime Panel: Yield Curve, VIX & Skew Daily workflow: your input, collection, output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/us-market-regime-panel--how-it-works.png)

1. **Your input** — set a date range or a lookback in days.
2. **The Actor collects it** — the Actor reads the Treasury and Cboe histories and joins them by date.
3. **Your output** — you get one row per trading day with derived features; schedule it daily with delta mode to append each new day.

### What data can you extract?

The dataset has 43 fields per row:

| Field                | Type   | Description                                       |
| -------------------- | ------ | ------------------------------------------------- |
| `date`               | string | Trading date, YYYY-MM-DD.                         |
| `y_1m`               | number | 1-month Treasury par yield, percent.              |
| `y_2m`               | number | 2-month Treasury par yield, percent.              |
| `y_3m`               | number | 3-month Treasury par yield, percent.              |
| `y_4m`               | number | 4-month Treasury par yield, percent.              |
| `y_6m`               | number | 6-month Treasury par yield, percent.              |
| `y_1y`               | number | 1-year Treasury par yield, percent.               |
| `y_2y`               | number | 2-year Treasury par yield, percent.               |
| `y_3y`               | number | 3-year Treasury par yield, percent.               |
| `y_5y`               | number | 5-year Treasury par yield, percent.               |
| `y_7y`               | number | 7-year Treasury par yield, percent.               |
| `y_10y`              | number | 10-year Treasury par yield, percent.              |
| `y_20y`              | number | 20-year Treasury par yield, percent.              |
| `y_30y`              | number | 30-year Treasury par yield, percent.              |
| `real_5y`            | number | 5y real yield, percent.                           |
| `real_7y`            | number | 7y real yield, percent.                           |
| `real_10y`           | number | 10y real yield, percent.                          |
| `real_20y`           | number | 20y real yield, percent.                          |
| `real_30y`           | number | 30y real yield, percent.                          |
| `breakeven_10y`      | number | 10-year nominal minus real yield, percent.        |
| `spread_2s10s_bps`   | number | 10y minus 2y yield, basis points.                 |
| `spread_3m10y_bps`   | number | 10y minus 3m yield, basis points.                 |
| `spread_5s30s_bps`   | number | 30y minus 5y yield, basis points.                 |
| `curve_regime`       | string | inverted, flat or normal.                         |
| `change_10y_bps`     | number | 1-day change in the 10y yield, bps.               |
| `change_2y_bps`      | number | 1-day change in the 2y yield, bps.                |
| `vix`                | number | VIX close.                                        |
| `vix9d`              | number | VIX9D close.                                      |
| `vix3m`              | number | VIX3M close.                                      |
| `vix6m`              | number | VIX6M close.                                      |
| `vvix`               | number | VVIX close.                                       |
| `skew_index`         | number | Cboe SKEW index close.                            |
| `vix_to_vix3m`       | number | VIX divided by VIX3M.                             |
| `vix9d_to_vix`       | number | VIX9D divided by VIX.                             |
| `vol_term_structure` | string | contango or backwardation.                        |
| `vix_regime`         | string | low, normal, elevated or stress.                  |
| `vix_percentile_1y`  | number | Percentile of VIX over the last 252 trading days. |
| `vix_change_1d`      | number | 1-day VIX change.                                 |
| `vix_change_5d`      | number | 5-day VIX change.                                 |
| `fetch_path`         | string | How the data was obtained.                        |
| `source`             | string | Data source.                                      |
| `scraped_at`         | string | Timestamp.                                        |
| `actor_version`      | string | Actor version.                                    |

### How to use US Market Regime Panel: Yield Curve, VIX & Skew Daily

![US Market Regime Panel: Yield Curve, VIX & Skew Daily input form](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/us-market-regime-panel--input.png)

1. Open the Actor and go to the **Input** tab.
2. Leave the dates empty for the last 90 days, or set **Start date** and **End date** (for example 2000-01-01 to today) for a long history. Turn on **Only new trading days (delta mode)** and schedule the Actor after the US close to append each new day.
3. Optionally set filters and a **Max results** limit.
4. Click **Start**. A default run finishes in under a minute.
5. Open the **Output** tab, then download the dataset or connect it to your tools.

### Input Parameters

| Parameter            | Type    | Required | Default                   | Description                                                                                   |
| -------------------- | ------- | -------- | ------------------------- | --------------------------------------------------------------------------------------------- |
| `startDate`          | string  | No       | —                         | First trading date, YYYY-MM-DD. Leave empty to use the lookback below.                        |
| `endDate`            | string  | No       | —                         | Last trading date, YYYY-MM-DD. Leave empty for today.                                         |
| `lookbackDays`       | integer | No       | `90`                      | Used when no start date is set.                                                               |
| `newestFirst`        | boolean | No       | `true`                    | Return the newest trading day first. Turn off for chronological order.                        |
| `maxItems`           | integer | No       | `0`                       | Cap on returned days. Set 0 for no limit.                                                     |
| `deltaMode`          | boolean | No       | `false`                   | After the first run with a delta key, return and bill only trading days not delivered before. |
| `deltaStateKey`      | string  | No       | `"default"`               | Name of the tracked stream.                                                                   |
| `proxyConfiguration` | object  | No       | `{"useApifyProxy":false}` | Optional proxy. The sources work without one.                                                 |

### Output Data

![US Market Regime Panel: Yield Curve, VIX & Skew Daily dataset table](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/us-market-regime-panel--output.png)

`y_*` are Treasury par yields in percent, `real_*` are real yields, `breakeven_10y` is the 10-year nominal minus real yield. `spread_*_bps` are yield differences in basis points and `curve_regime` is inverted (2s10s below 0), flat (below 25 bps) or normal. `vix_to_vix3m` above 1 (`vol_term_structure` backwardation) means near-term fear exceeds three-month fear. `vix_percentile_1y` is the share of the last 252 trading days at or below today's VIX. `vix_regime` is low (<15), normal, elevated (20-30) or stress (>30).

![US Market Regime Panel: Yield Curve, VIX & Skew Daily field map of one record](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/us-market-regime-panel--fields.png)

A real dataset item:

```json
{
    "date": "2022-06-01",
    "y_1m": 0.77,
    "y_2m": 0.9,
    "y_3m": 1.15,
    "y_4m": null,
    "y_6m": 1.63,
    "y_1y": 2.16,
    "y_2y": 2.66,
    "y_3y": 2.84,
    "y_5y": 2.94,
    "y_7y": 2.98,
    "y_10y": 2.94,
    "y_20y": 3.31,
    "y_30y": 3.09,
    "real_5y": -0.02,
    "real_7y": 0.14,
    "real_10y": 0.29,
    "real_20y": 0.54,
    "real_30y": 0.67,
    "breakeven_10y": 2.65,
    "spread_2s10s_bps": 28,
    "spread_3m10y_bps": 179,
    "spread_5s30s_bps": 15,
    "curve_regime": "normal",
    "change_10y_bps": 9,
    "change_2y_bps": 13,
    "vix": 25.69,
    "vix9d": 25.12,
    "vix3m": 27.72,
    "vix6m": 29.47,
    "vvix": 91.39,
    "skew_index": 119.3,
    "vix_to_vix3m": 0.927,
    "vix9d_to_vix": 0.978,
    "vol_term_structure": "contango",
    "vix_regime": "elevated",
    "vix_percentile_1y": 75.8,
    "vix_change_1d": -0.5,
    "vix_change_5d": -3.76,
    "fetch_path": "published_csv",
    "source": "us_treasury_and_cboe_index_history",
    "scraped_at": "2026-09-26T18:15:38.001Z",
    "actor_version": "1.0.0"
}
```

### How to read and use the results

1. **Read curve_regime and spread_2s10s_bps** for the slope of the curve.
2. **Check vol_term_structure and vix_to_vix3m**: backwardation signals near-term stress.
3. **Use vix_percentile_1y** to compare today's volatility with the past year.
4. **Read breakeven_10y** for inflation expectations.
5. **Join on date** to your own price data.
6. **Schedule with delta mode** to append each new trading day.

### Usage Examples

#### Last 90 days

```json
{}
```

#### Full history for a model

```json
{
    "startDate": "2000-01-01",
    "newestFirst": false
}
```

#### Only new days, for a daily schedule

```json
{
    "deltaMode": true,
    "deltaStateKey": "daily"
}
```

### Tips for Best Results

- Join on the date column; markets are closed on weekends and holidays, so those dates have no row.
- Real yields start in 2003 and VIX3M, VIX9D and VIX6M start later than the VIX; earlier values are empty.
- Use vix_percentile_1y rather than raw VIX levels to compare volatility across years.
- Yield-curve inversion is a slow signal; combine it with faster features such as the VIX term structure.
- Run it once for the whole history, then schedule daily with delta mode.
- Default is 5 results for a fast test. Set the max to 0 to return everything available.

### Reliability by mode

| Mode                         | Status | Needs login or key? | Notes                               |
| ---------------------------- | ------ | ------------------- | ----------------------------------- |
| Treasury nominal yields      | ✅     | No                  | Published daily by the US Treasury. |
| Real yields and breakeven    | ✅     | No                  | From 2003.                          |
| VIX, VVIX, SKEW histories    | ✅     | No                  | Published by Cboe.                  |
| VIX9D, VIX3M, VIX6M          | 🟡     | No                  | Start later than the VIX.           |
| Intraday or real-time values | ❌     | -                   | End-of-day only.                    |

✅ works as described, 🟡 works with caveats, ❌ not supported.

### Only new records (delta mode)

Turn on **Only new trading days (delta mode)** and set a **Delta key**. The first run returns the whole range; later runs return, and bill, only trading days not delivered before.

### Known Limitations

- Yields and index closes are end-of-day values published after the US close; the newest day can be missing until the sources update.
- Treasury yields are par yields, not tradable prices, and some maturities were introduced later (for example the 1.5-month) so earlier values are empty.
- The percentile uses the trailing 252 trading days and is empty until enough history exists.
- Regime labels use fixed, published thresholds and are descriptive, not forecasts.
- This is information, not financial advice.

### Integrations

Run it from the Apify API, on a schedule, or from a webhook. Send results straight to Google Sheets, Make, Zapier, Slack or your own database with Apify's built-in integrations.

### Export Formats

Download the dataset as JSON, CSV, Excel, XML, HTML table or RSS from the **Output** tab or the API.

### Frequently Asked Questions

#### Where does the data come from?

The US Department of the Treasury's daily yield curve data and the Cboe Global Markets index histories, both public.

#### How far back does it go?

Treasury nominal yields from 1990, real yields from 2003, and each Cboe series from its own start.

#### Does it need an API key or account?

No.

#### Can I get intraday data?

No, the data is end-of-day.

#### Why is a value empty?

The series did not exist on that date, or the source has not published that day yet.

#### Am I charged for empty days?

No, only for trading days returned.

#### Do I need an account or login?

No. The Actor reads public Treasury and Cboe data and needs no account or API key.

#### Am I charged for failed runs or empty results?

You are only charged for results that are actually written to the dataset.

#### Can I run it on a schedule?

Yes. Create a Task with your input and add a schedule in Apify Console. With monitor mode on, each scheduled run returns only what changed since the previous one.

### Changelog

- **2026-09-27:** First release: Treasury curve, real yields, spreads, VIX family, VVIX, SKEW, percentiles and regime labels.

### Enterprise and custom work

Need higher volumes, a custom output schema, dedicated scheduling or a no-breaking-changes commitment for a production pipeline? Open an issue on the Actor page and describe your use case. Bulk terms and custom builds are available.

### Support

Questions or a missing field? Open an issue from the **Issues** tab on this Actor's page and it will be looked at.

### Legal / Responsible Use

This Actor reads publicly published US Treasury and Cboe index data. You are responsible for how you use the data. It is not financial advice and not affiliated with the US Treasury or Cboe.

# Actor input Schema

## `startDate` (type: `string`):

First trading date, YYYY-MM-DD. Leave empty to use the lookback below.

## `endDate` (type: `string`):

Last trading date, YYYY-MM-DD. Leave empty for today.

## `lookbackDays` (type: `integer`):

Used when no start date is set.

## `newestFirst` (type: `boolean`):

Return the newest trading day first. Turn off for chronological order.

## `maxItems` (type: `integer`):

Cap on returned days. Set 0 for no limit.

## `deltaMode` (type: `boolean`):

After the first run with a delta key, return and bill only trading days not delivered before.

## `deltaStateKey` (type: `string`):

Name of the tracked stream.

## `proxyConfiguration` (type: `object`):

Optional proxy. The sources work without one.

## Actor input object example

```json
{
  "lookbackDays": 90,
  "newestFirst": true,
  "maxItems": 0,
  "deltaMode": false,
  "deltaStateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/us-market-regime-panel").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/us-market-regime-panel").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call mrdoe/us-market-regime-panel --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/us-market-regime-panel"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UZBxJV9enLBtuxfZM/builds/l46ULj8jWuPKWT3fN/openapi.json
