convexity¶
Evaluates the convexity for a security.
Synopsis¶
convexity (settlement, maturity, couponRate, t_yield, frequency, basis)
Required Arguments¶
- date
settlement
(Input) - The date on which payment is made to settle a trade. For a more detailed discussion on dates see the Usage Notes section of this chapter.
- date
maturity
(Input) - The date on which the bond comes due, and principal and accrued interest are paid. For a more detailed discussion on dates see the Usage Notes section of this chapter.
- float
couponRate
(Input) - Annual interest rate set forth on the face of the security; the coupon rate.
- float
t_yield
(Input) - Annual yield of the security.
- int
frequency
(Input) - Frequency of the interest payments. It should be one of
ANNUAL
,SEMIANNUAL
orQUARTERLY
. For a more detailed discussion onfrequency
see the Usage Notes section of this chapter. - int
basis
(Input) - The method for computing the number of days between two dates. It should
be one of
DAY_CNT_BASIS_ACTUALACTUAL
,DAY_CNT_BASIS_NASD
,DAY_CNT_BASIS_ACTUAL360
,DAY_CNT_BASIS_ACTUAL365
, orDAY_CNT_BASIS_30E360
. For a more detailed discussion see the Usage Notes section of this chapter.
Return Value¶
The convexity for a security. If no result can be computed, NaN is returned.
Description¶
Function convexity
computes the convexity for a security. Convexity is
the sensitivity of the duration of a security to changes in yield.
It is computed using the following:
1(q∗frequency)2{n∑t=1t(t+1)(ratefrequency)q−t+n(n+1)q−n}n∑t=1(ratefrequency)q−t+q−n
where n is calculated from couponNumber
, and
q=1+yieldfrequency.
Example¶
In this example, convexity
computes the convexity for a security with
the settlement date of July 1, 1990, and maturity date of July 1, 2000,
using the Actual/365 day count method.
from __future__ import print_function
from numpy import *
from datetime import date
from pyimsl.math.convexity import convexity, DAY_CNT_BASIS_ACTUAL365, SEMIANNUAL
coupon = .075
yield_val = .09
frequency = SEMIANNUAL
basis = DAY_CNT_BASIS_ACTUAL365
settlement = date(1990, 7, 1)
maturity = date(2000, 7, 1)
convexity_value = convexity(settlement, maturity,
coupon, yield_val, frequency, basis)
print("The convexity of the bond with", end=' ')
print("semiannual interest payments is %.4f." % (convexity_value))
Output¶
The convexity of the bond with semiannual interest payments is 59.4050.