# Canada Bond Yields & Overnight Rate Daily Panel with CAD FX (`mrdoe/canada-yields-overnight-rate-panel`) Actor

Daily Canadian rates panel from the Bank of Canada: overnight target rate, prime, 5-year posted mortgage rate, 2 to 30 year bond yields, real return yield and breakeven, curve spreads, CPI-trim and CAD exchange rates.

- **URL**: https://apify.com/mrdoe/canada-yields-overnight-rate-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 row 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

![Canada Bond Yields & Overnight Rate Daily Panel with CAD FX - Canada bond yields and Bank of Canada overnight rate daily panel with CAD exchange rates](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/canada-yields-overnight-rate-panel--hero.png)

### What does Canada Bond Yields & Overnight Rate Daily Panel with CAD FX do?

Canada Bond Yields & Overnight Rate Panel returns one row per Canadian business day with the rates backdrop that predictors and dashboards need. Each row holds the Bank of Canada target overnight rate, the prime rate, the 5 year posted mortgage rate, benchmark government bond yields at 2, 3, 5, 7, 10 year and long maturities, the real return bond yield with the implied long-term breakeven inflation rate, the 10s2s curve spread with a regime label, the gap between the 10 year yield and the policy rate, daily changes, the 1-year percentile of the 10 year yield, CPI-trim inflation dated to when it was published, and the Canadian dollar against the US dollar, euro and pound. All data is published by the Bank of Canada.

### Why use Canada Bond Yields & Overnight Rate Daily Panel with CAD FX?

- Ready to join: one row per date, so it merges with any price or return series.
- Derived features included: spreads, breakeven, changes, percentiles and a curve regime.
- Official source: the Bank of Canada Valet API.
- Mortgage-relevant fields: prime and the posted 5 year mortgage rate next to bond yields.
- Monthly CPI is dated to its publication day, so backtests avoid look-ahead. No API key or login.

### What makes this different

Canadian rate data is spread across many Bank of Canada series. This Actor picks the useful ones, joins them by date, dates monthly inflation by publication, and adds the spreads and percentiles, so one table gives your model the Canadian backdrop.

### Who can use the Canada Bond Yields & Overnight Rate Panel and how?

- **Quant researchers:** add Canadian rates and CAD features to models.
- **Mortgage brokers and analysts:** track prime, posted rates and bond yields together.
- **Portfolio managers:** monitor the Canadian curve and policy spread.
- **Economists and students:** study Canadian yields, inflation and the dollar.
- **Newsletter writers:** publish a daily Canada rates dashboard.
- **Fintech apps:** show rate context beside Canadian accounts.
- **AI agent builders:** let an assistant answer where Canadian yields and the overnight rate stand.
- **Backtesting platforms:** filter signals by Canadian curve regime.

### How it works

![Canada Bond Yields & Overnight Rate Daily Panel with CAD FX workflow: your input, collection, output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/canada-yields-overnight-rate-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 Bank of Canada and joins the series 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 29 fields per row:

| Field                      | Type   | Description                                                           |
| -------------------------- | ------ | --------------------------------------------------------------------- |
| `date`                     | string | Trading date, YYYY-MM-DD.                                             |
| `bond_2y`                  | number | 2 year benchmark bond yield, percent.                                 |
| `bond_3y`                  | number | 3 year benchmark bond yield, percent.                                 |
| `bond_5y`                  | number | 5 year benchmark bond yield, percent.                                 |
| `bond_7y`                  | number | 7 year benchmark bond yield, percent.                                 |
| `bond_10y`                 | number | 10 year benchmark bond yield, percent.                                |
| `bond_long`                | number | Long-term benchmark bond yield, percent.                              |
| `real_return_long`         | number | Real return bond yield, long-term, percent.                           |
| `target_overnight_rate`    | number | Bank of Canada target for the overnight rate, percent.                |
| `prime_rate`               | number | Chartered banks prime rate, percent.                                  |
| `mortgage_5y_posted`       | number | Posted 5 year conventional mortgage rate, percent.                    |
| `usd_cad`                  | number | Canadian dollars per US dollar.                                       |
| `eur_cad`                  | number | Canadian dollars per euro.                                            |
| `gbp_cad`                  | number | Canadian dollars per pound.                                           |
| `cpi_trim_yoy_pct`         | number | CPI-trim inflation, year over year percent, dated to its publication. |
| `spread_10y_2y_bps`        | number | Yield spread 10y 2y, basis points.                                    |
| `spread_long_10y_bps`      | number | Yield spread long 10y, basis points.                                  |
| `bond_10y_over_target_bps` | number | 10 year yield minus the overnight target, basis points.               |
| `breakeven_long`           | number | Long bond yield minus real return bond yield, percent.                |
| `curve_regime`             | string | inverted, flat or normal.                                             |
| `change_10y_bps`           | number | 1-day change in 10y, basis points.                                    |
| `change_2y_bps`            | number | 1-day change in 2y, basis points.                                     |
| `change_target_rate_bps`   | number | 1-day change in target rate, basis points.                            |
| `usd_cad_change_1d_pct`    | number | 1-day change in usd cad, percent.                                     |
| `bond_10y_percentile_1y`   | number | Percentile of bond 10y over the last 252 trading days.                |
| `fetch_path`               | string | How the data was obtained.                                            |
| `source`                   | string | Data source.                                                          |
| `scraped_at`               | string | Timestamp.                                                            |
| `actor_version`            | string | Actor version.                                                        |

### How to use Canada Bond Yields & Overnight Rate Daily Panel with CAD FX

![Canada Bond Yields & Overnight Rate Daily Panel with CAD FX input form](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/canada-yields-overnight-rate-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 a long history. Turn on delta mode and schedule the Actor daily 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 day first. Turn off for chronological order.                        |
| `maxItems`           | integer | No       | `0`                       | Cap on returned rows. Set 0 for no limit.                                             |
| `deltaMode`          | boolean | No       | `false`                   | After the first run with a delta key, return and bill only 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

![Canada Bond Yields & Overnight Rate Daily Panel with CAD FX dataset table](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/canada-yields-overnight-rate-panel--output.png)

`target_overnight_rate`, `prime_rate` and `mortgage_5y_posted` are percent. `bond_*` are benchmark government bond yields in percent. `breakeven_long` is the long bond yield minus the real return bond yield. `spread_*_bps` are basis points and `curve_regime` is inverted, flat or normal from the 10s2s spread. `cpi_trim_yoy_pct` is dated to its publication date, about three weeks after month end. `change_*` are 1-day changes.

![Canada Bond Yields & Overnight Rate Daily Panel with CAD FX field map of one record](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/canada-yields-overnight-rate-panel--fields.png)

A real dataset item:

```json
{
    "date": "2026-09-24",
    "bond_2y": 3.39,
    "bond_3y": 3.49,
    "bond_5y": 3.69,
    "bond_7y": 3.76,
    "bond_10y": 3.97,
    "bond_long": 4.27,
    "real_return_long": 1.95,
    "target_overnight_rate": 2.25,
    "prime_rate": 4.45,
    "mortgage_5y_posted": 6.09,
    "usd_cad": 1.4136,
    "eur_cad": 1.6076,
    "gbp_cad": 1.8688,
    "cpi_trim_yoy_pct": 1.9,
    "spread_10y_2y_bps": 58,
    "spread_long_10y_bps": 30,
    "bond_10y_over_target_bps": 172,
    "breakeven_long": 2.32,
    "curve_regime": "normal",
    "change_10y_bps": 1,
    "change_2y_bps": -1,
    "change_target_rate_bps": 0,
    "usd_cad_change_1d_pct": 0.284,
    "bond_10y_percentile_1y": 100,
    "fetch_path": "bank_of_canada_valet",
    "source": "bank_of_canada_valet",
    "scraped_at": "2026-09-27T05:07:05.412Z",
    "actor_version": "1.0.0"
}
```

### How to read and use the results

1. **Read curve_regime and spread_10y_2y_bps** for the curve slope.
2. **Compare bond_10y with target_overnight_rate** for policy expectations.
3. **Check breakeven_long** for inflation expectations.
4. **Track prime_rate and mortgage_5y_posted** for borrowing costs.
5. **Join on date** to your own price data.
6. **Schedule with delta mode** to append each new 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.
- Run the Actor once for the whole history, then schedule it daily with delta mode.
- Use the percentile fields rather than raw levels to compare conditions across years.
- Curve inversion is a slow signal; combine it with faster features such as daily changes.
- Watch change_target_rate_bps for policy decision days.
- 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                            |
| ------------------------------------ | ------ | ------------------- | -------------------------------- |
| Overnight rate, prime, mortgage rate | ✅     | No                  | Published by the Bank of Canada. |
| Benchmark bond yields                | ✅     | No                  | Daily benchmark yields.          |
| CAD exchange rates                   | ✅     | No                  | Bank of Canada daily rates.      |
| 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

- Values are end-of-day and appear after the Bank of Canada publishes them.
- Benchmark yields are for the Bank's chosen benchmark bonds, not a full curve fit.
- The mortgage rate is the posted 5 year rate, not a negotiated rate.
- CPI-trim is carried forward from its publication date until the next release.
- 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 Bank of Canada Valet web service, which publishes these series for free.

#### How far back does it go?

Each series starts at its own publication date; bond yields and FX go back decades.

#### 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 rows returned.

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

No. The Actor reads public Bank of Canada 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.

### 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 Bank of Canada data. You are responsible for how you use the data. It is not financial advice and not affiliated with the Bank of Canada.

# 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 day first. Turn off for chronological order.

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

Cap on returned rows. Set 0 for no limit.

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

After the first run with a delta key, return and bill only 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/canada-yields-overnight-rate-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/canada-yields-overnight-rate-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/canada-yields-overnight-rate-panel --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/canada-yields-overnight-rate-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/SlgLWXP8cU5DPk9A7/builds/dyZx43WqhYjTRB23h/openapi.json
