OpenBI Docs Buy

QUANT.BOND.DV01 OpenBI

How much a bond's price changes, for each 100 of nominal, when its yield rises by one basis point.

Group: Quantitative finance. OpenBI’s own: DAX has no function of this name.

Syntax

QUANT.BOND.DV01 ( <settlement>, <maturity>, <coupon>, <yieldRate> [, <frequency>] [, <dayCount>] [, <redemption>] )
ParameterTypeDescription
settlementDateThe day the bond changes hands: everything is worked out as of this day.
maturityDateThe day the bond pays its last coupon and its redemption.
couponNumberThe coupon rate a year, as a decimal: 0.04 for 4 %.
yieldRateNumberThe yield to maturity as a decimal, compounded as many times a year as the coupon is paid.
frequencyWhole number
optional
Coupons a year: 1 (when left out), 2, 4 or 12.
dayCountText
optional
How days are counted between coupons: "Actual/Actual" (when left out: each coupon period's own days), "Actual/Actual ISDA", "Actual/365", "Actual/360" or "30/360".
redemptionNumber
optional
What the bond pays back at maturity for each 100 of nominal; 100 when left out.

Returns

Number. The change in the dirty price for each 100 of nominal for a yield one basis point (0.01 %) higher: negative for an ordinary bond.

Remarks

  • The sign follows the price: a rise in the yield lowers the price, so the DV01 is negative. Many desks quote it as a positive number; take its absolute value with ABS where a report needs that.
  • It is worked out to first order: minus the modified duration, times the dirty price, times 0.0001.
  • For a holding, multiply by its nominal and divide by 100: the change in money for a basis point.
  • For the same risk spread over the curve's maturities, use QUANT.KEYRATE.
  • The coupon dates are counted back from the maturity one period at a time, on the same day of the month, and are not moved off weekends or holidays.
  • The yield is compounded at the coupon frequency, with the day count given: the convention of a bond's own quote.
  • A blank or a text where a number belongs, a maturity on or before the settlement, or a frequency other than 1, 2, 4 or 12 is an error.

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 holdings' DV01 in NOK

Each holding's value change for one basis point at a yield of 4 %, and their total.

EVALUATE
VAR Risk =
    ADDCOLUMNS (
        Holdings,
        "DV01", QUANT.BOND.DV01 ( DATE ( 2026, 10, 13 ), Holdings[Maturity], Holdings[Coupon], 0.04 ) * Holdings[Nominal] / 100
    )
RETURN
    UNION (
        SELECTCOLUMNS ( Risk, "Bond", Holdings[Bond], "DV01, NOK", ROUND ( [DV01], 0 ) ),
        ROW ( "Bond", "All", "DV01, NOK", ROUND ( SUMX ( Risk, [DV01] ), 0 ) )
    )
BondDV01, NOK
Government 2028-32720
Government 2033-156957
Municipal 2031-64507
Covered 2029-30035
Corporate 2030-30386
All-314604

DV01 against a basis point repriced

The five-year bond's DV01, and its price at 4.51 % less its price at 4.5 %: close, as the change is small.

EVALUATE
ROW (
    "DV01", QUANT.BOND.DV01 ( DATE ( 2026, 10, 13 ), DATE ( 2031, 10, 13 ), 0.04, 0.045 ),
    "Repriced", QUANT.BOND.PRICE ( DATE ( 2026, 10, 13 ), DATE ( 2031, 10, 13 ), 0.04, 0.0451 ) - QUANT.BOND.PRICE ( DATE ( 2026, 10, 13 ), DATE ( 2031, 10, 13 ), 0.04, 0.045 )
)
DV01Repriced
-0.0432881029409165-0.0432760068560043

QUANT.BOND.DURATION, QUANT.KEYRATE, QUANT.BOND.PRICE, VALUATION.VALUE.

Last updated · OpenBI Studio 0.3.74