QUANT.CURVE OpenBI
A yield curve bootstrapped with QuantLib from a table of deposits and swaps (or zero rates): zero rates, forward rates and discount factors.
Group: Quantitative finance. OpenBI’s own: DAX has no function of this name.
Syntax
QUANT.CURVE ( <table>, <kind>, <tenor>, <rate>, <asOf> [, <what>] [, <calendar>] [, <settlementDays>] )
| Parameter | Type | Description |
|---|---|---|
table | Table | The instruments: one row each, such as the Rates table. |
kind | Expression evaluated for each row | The row's kind of instrument: "deposit", "swap" or "zero". |
tenor | Expression evaluated for each row | The row's tenor as text: "ON", "1W", "3M", "10Y". |
rate | Expression evaluated for each row | The row's rate as a decimal: 0.0405 for 4.05 %. A row with a blank rate is left out. |
asOf | Date | The curve's date: today, for the rates given. |
what | Text optional | "curve" (when left out) for a point a month, or "pillars" for a row per instrument. |
calendar | Text optional | The holidays settlement and maturities keep to: "TARGET" (when left out), "Norway", "UnitedStates", "UnitedKingdom", "Sweden", "Denmark" or "None". |
settlementDays | Whole number optional | Business days from the curve's date to the instruments' start, 0 to 10; 2 when left out. |
Returns
Table. With "curve": Date, Years, Zero, Forward and Discount, a row a month from the curve's date to the last instrument's maturity. With "pillars": Kind, Tenor, Rate, Date, Years, Zero and Discount, a row for each instrument.
Remarks
- Zero is the zero rate from the curve's date to the row's date, continuous on Actual/365; Discount the discount factor to it; Years the time to it in days over 365.
- Forward is the rate from the row's date to the next month's, continuous; on the last row it is the month before's.
- A pillar's Date is the curve's date plus its tenor on the calendar, not moved to a business day: the curve is read there.
- A deposit is a simple rate on the Actual/360 count. A swap pays a fixed rate once a year on 30/360 against a six-month floating rate. A zero rate is continuous on Actual/365; when every row is "zero", the rates are the curve as they are and nothing is bootstrapped.
- Deposits and swaps can be mixed; zero rates cannot be mixed with them.
- Between the instruments the discount factors are interpolated log-linearly, so the forward rate is flat from one instrument's maturity to the next.
- Kind and tenor are evaluated for each row: a tenor that is not like "3M" or a kind other than the three is an error, as is a table with no rates at all.
Compared with DAX
An OpenBI function: DAX has none like it, so a measure or query that uses it works in OpenBI only, not in Power BI or Analysis Services.
Examples
The NOK curve's instruments
The Brewery's Rates table on 13 October 2026, on the Norwegian calendar: three deposits and five swaps.
EVALUATE
QUANT.CURVE (
Rates,
Rates[Kind],
Rates[Tenor],
Rates[Rate],
DATE ( 2026, 10, 13 ),
"pillars",
"Norway"
)
| Kind | Tenor | Rate | Date | Years | Zero | Discount |
|---|---|---|---|---|---|---|
| deposit | 1M | 0.0405 | 2026-11-13 | 0.0849315068493151 | 0.0409887644124663 | 0.996524814956499 |
| deposit | 3M | 0.041 | 2027-01-13 | 0.252054794520548 | 0.0413410290500196 | 0.989633897667396 |
| deposit | 6M | 0.0415 | 2027-04-13 | 0.498630136986301 | 0.0416306718597046 | 0.979455662942095 |
| swap | 2Y | 0.039 | 2028-10-13 | 2.0027397260274 | 0.0381464988977575 | 0.926447862221235 |
| swap | 3Y | 0.038 | 2029-10-13 | 3.0027397260274 | 0.0372218894445991 | 0.894252016294497 |
| swap | 5Y | 0.0375 | 2031-10-13 | 5.0027397260274 | 0.0367416778338871 | 0.83209467605423 |
| swap | 7Y | 0.0378 | 2033-10-13 | 7.00547945205479 | 0.0370347109463504 | 0.771478938824663 |
| swap | 10Y | 0.0385 | 2036-10-13 | 10.0082191780822 | 0.0378386092125077 | 0.684752996778211 |
The curve once a year
The monthly points, filtered to October: a curve a little inverted at the short end, as the rates are.
EVALUATE
FILTER (
QUANT.CURVE ( Rates, Rates[Kind], Rates[Tenor], Rates[Rate], DATE ( 2026, 10, 13 ), "curve", "Norway" ),
MONTH ( [Date] ) = 10
)
| Date | Years | Zero | Forward | Discount |
|---|---|---|---|---|
| 2026-10-13 | 0 | 0.0409887644124513 | 0.0409887644124663 | 1 |
| 2027-10-13 | 1 | 0.0393228339902267 | 0.0369733778355949 | 0.961440273439625 |
| 2028-10-13 | 2.0027397260274 | 0.0381464988977575 | 0.0355132889349331 | 0.926447862221235 |
| 2029-10-13 | 3.0027397260274 | 0.0372218894445991 | 0.0359795795542668 | 0.894252016294497 |
| 2030-10-13 | 4.0027397260274 | 0.0369213426437067 | 0.036022526362254 | 0.862615242130159 |
| 2031-10-13 | 5.0027397260274 | 0.0367416778338871 | 0.0376586419618656 | 0.83209467605423 |
| 2032-10-13 | 6.00547945205479 | 0.0369120285560446 | 0.0377714775204602 | 0.80117616158083 |
| 2033-10-13 | 7.00547945205479 | 0.0370347109463504 | 0.0394696605946732 | 0.771478938824663 |
| 2034-10-13 | 8.00547945205479 | 0.0373676285493542 | 0.0397212432723373 | 0.741451310912332 |
| 2035-10-13 | 9.00547945205479 | 0.0376289821769442 | 0.0397212432723347 | 0.712577197174962 |
| 2036-10-13 | 10.0082191780822 | 0.0378386092125077 | 0.0397212432723348 | 0.684752996778211 |
Zero rates as they are
Three zero rates make the curve themselves. Between two and five years the forward rate is flat, so the zero rate at three years is not the straight line between 3.5 % and 4 %.
EVALUATE
VAR Zeros =
DATATABLE (
"Kind", STRING, "Tenor", STRING, "Rate", DOUBLE,
{ { "zero", "1Y", 0.03 }, { "zero", "2Y", 0.035 }, { "zero", "5Y", 0.04 } }
)
RETURN
FILTER (
QUANT.CURVE ( Zeros, [Kind], [Tenor], [Rate], DATE ( 2026, 1, 1 ) ),
MONTH ( [Date] ) = 1
)
| Date | Years | Zero | Forward | Discount |
|---|---|---|---|---|
| 2026-01-01 | 0 | 0.0300000000000177 | 0.030000000000001 | 1 |
| 2027-01-01 | 1 | 0.0300000000000001 | 0.0400000000000006 | 0.970445533548508 |
| 2028-01-01 | 2 | 0.0349999999999999 | 0.0433302919708042 | 0.932393819905948 |
| 2029-01-01 | 3.0027397260274 | 0.0377818310778411 | 0.0433302919708042 | 0.892749720933615 |
| 2030-01-01 | 4.0027397260274 | 0.0391679968724551 | 0.0433302919708042 | 0.854892715325255 |
| 2031-01-01 | 5.0027397260274 | 0.04 | 0.0433302919708042 | 0.818641034076036 |
Related functions
QUANT.KEYRATE, QUANT.BOND.PRICE, QUANT.FX.FORWARD, VALUATION.