OpenBI Docs Buy

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>] )
ParameterTypeDescription
tableTableThe instruments: one row each, such as the Rates table.
kindExpression
evaluated for each row
The row's kind of instrument: "deposit", "swap" or "zero".
tenorExpression
evaluated for each row
The row's tenor as text: "ON", "1W", "3M", "10Y".
rateExpression
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.
asOfDateThe curve's date: today, for the rates given.
whatText
optional
"curve" (when left out) for a point a month, or "pillars" for a row per instrument.
calendarText
optional
The holidays settlement and maturities keep to: "TARGET" (when left out), "Norway", "UnitedStates", "UnitedKingdom", "Sweden", "Denmark" or "None".
settlementDaysWhole 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"
)
KindTenorRateDateYearsZeroDiscount
deposit1M0.04052026-11-130.08493150684931510.04098876441246630.996524814956499
deposit3M0.0412027-01-130.2520547945205480.04134102905001960.989633897667396
deposit6M0.04152027-04-130.4986301369863010.04163067185970460.979455662942095
swap2Y0.0392028-10-132.00273972602740.03814649889775750.926447862221235
swap3Y0.0382029-10-133.00273972602740.03722188944459910.894252016294497
swap5Y0.03752031-10-135.00273972602740.03674167783388710.83209467605423
swap7Y0.03782033-10-137.005479452054790.03703471094635040.771478938824663
swap10Y0.03852036-10-1310.00821917808220.03783860921250770.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
)
DateYearsZeroForwardDiscount
2026-10-1300.04098876441245130.04098876441246631
2027-10-1310.03932283399022670.03697337783559490.961440273439625
2028-10-132.00273972602740.03814649889775750.03551328893493310.926447862221235
2029-10-133.00273972602740.03722188944459910.03597957955426680.894252016294497
2030-10-134.00273972602740.03692134264370670.0360225263622540.862615242130159
2031-10-135.00273972602740.03674167783388710.03765864196186560.83209467605423
2032-10-136.005479452054790.03691202855604460.03777147752046020.80117616158083
2033-10-137.005479452054790.03703471094635040.03946966059467320.771478938824663
2034-10-138.005479452054790.03736762854935420.03972124327233730.741451310912332
2035-10-139.005479452054790.03762898217694420.03972124327233470.712577197174962
2036-10-1310.00821917808220.03783860921250770.03972124327233480.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
    )
DateYearsZeroForwardDiscount
2026-01-0100.03000000000001770.0300000000000011
2027-01-0110.03000000000000010.04000000000000060.970445533548508
2028-01-0120.03499999999999990.04333029197080420.932393819905948
2029-01-013.00273972602740.03778183107784110.04333029197080420.892749720933615
2030-01-014.00273972602740.03916799687245510.04333029197080420.854892715325255
2031-01-015.00273972602740.040.04333029197080420.818641034076036

QUANT.KEYRATE, QUANT.BOND.PRICE, QUANT.FX.FORWARD, VALUATION.

Last updated · OpenBI Studio 0.3.74