Project · 2025
Effective Risk-Free Rate
The risk-free rate is not one number. It depends on the maturity, the market, and the convention the math expects. This engine settles that. Pick a date, choose the United States or Canada, and get the effective rate in the exact form each application needs, from two live curves side by side.
01 Overview
One rate, quoted the way each job needs it
Ask three desks for the risk-free rate and you get three answers. The option desk wants a continuous rate on an ACT/365 basis for Black-Scholes. The bond desk wants a semiannual bond-equivalent yield. The money-market desk wants a simple rate, and the day-count is ACT/360 in the United States but ACT/365 in Canada. Same idea, different clothes.
I wanted a tool that holds the idea still and changes only the clothes. The whole engine rests on one primitive, the discount factor for a given horizon. Every quoted rate is derived from that single number, so the option rate, the bond rate, the money-market rate and the implied forward all stay consistent with each other by construction.
It covers two markets. The United States off FRED, and Canada off the Bank of Canada. Each market shows a government zero curve and a curve anchored to the overnight rate, so you can read the risk-free rate and the funding rate at once.
The right rate is the one quoted in the convention your model already assumes. Everything else is a rounding error waiting to happen.
02 What it computes
From the discount factor outward
One primitive, four conventions, two curves, two markets.
Every convention
Continuous ACT/365 for option Greeks, semiannual bond-equivalent for valuation, and simple money-market rates on the correct ACT/360 or ACT/365 basis. All from one discount factor.
Two curves per market
A government zero curve bootstrapped from par yields, and a curve anchored to the realised overnight rate. Read the risk-free rate and the funding rate against each other.
Any maturity
Type a date or a time to maturity and the curve is interpolated on the spot. Quick chips jump to 1M through 30Y. A log-scaled chart keeps the short end readable.
Implied forwards
Pick two future dates and get the forward rate between them, in both continuous and simple form, straight from the ratio of discount factors.
Honest about limits
The overnight-anchored long end is a labelled proxy, not a bootstrapped OIS curve, because the free feeds carry no OIS swap quotes. The tool says so, on the chart and in the table.
Built for reading
English and French, light and dark, and a methodology tab that shows the exact series behind every curve with its observation date.
03 Under the hood
Curve math in Python, pricing in the browser
A scheduled Python job fetches the inputs and bootstraps the curves. Government par yields go through the standard semiannual par-bond recursion to zero-coupon discount factors. The overnight short end is genuine. On the U.S. side it comes from realised SOFR term averages, and on the Canadian side from the CORRA Compounded Index, where the discount factor over a window is the exact realised index ratio with no day-count assumption at all.
The original version ran a small server that held the FRED key and priced on request. For the public build I turned that inside out. The job writes one static snapshot per market, and the pricing math is ported to the browser, so interpolating the discount factor and converting it into every convention happens on your machine. No server to run, no key exposed, and it loads instantly.
A GitHub Action rebuilds both markets every business day at 09:00 ET, then commits the snapshots so the site redeploys on its own. The FRED key lives only as an encrypted repository secret. The Bank of Canada feed needs no key at all.
Data is sourced from FRED (Federal Reserve Bank of St. Louis) and the Bank of Canada, and refreshed every business day. For educational use, not investment advice. The overnight-anchored curve beyond its anchor is a labelled proxy, not a bootstrapped OIS discount curve.
Get the rate in the right convention
Pick a market and a maturity, and read the effective risk-free rate the way your model expects it.