diff options
Diffstat (limited to 'R/thetas-durations.R')
| -rw-r--r-- | R/thetas-durations.R | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/R/thetas-durations.R b/R/thetas-durations.R index 90646b06..a9a74b83 100644 --- a/R/thetas-durations.R +++ b/R/thetas-durations.R @@ -112,6 +112,9 @@ for(index in c('IG', 'HY', 'EU', 'XO')) { 0, tradedate, IMMDate(tradedate, "prev")) quotes <- data.frame(upfront=(100-as.numeric(indexquotes[i,maturities$tenor]))/100, maturities) + ## prevent negative hazardrates + quotes$upfront <- pmax(yearFrac(tradedate + 1, quotes$maturity, "act/360") * + quotes$running + 1e-6, quotes$upfront) sc <- cdshazardrate(quotes, recov, tradedate, cs) c(fastduration(sc, cs, tradedate, maturities$maturity), fasttheta(sc, cs, recov, tradedate, maturities$maturity, quotes$upfront, coupon)) @@ -125,8 +128,8 @@ for(index in c('IG', 'HY', 'EU', 'XO')) { ## 0, tradedate, IMMDate(tradedate, "prev")) ## quotes <- data.frame(upfront=(100-as.numeric(indexquotes[i,maturities$tenor]))/100, ## maturities) - ## quotes <- data.frame(upfront=(100-as.numeric(indexquotes[i,-1]))/100, maturities) %>% - ## arrange(maturity) + ## quotes$upfront <- pmax(yearFrac(tradedate + 1, quotes$maturity, "act/360") * + ## quotes$running + 1e-6, quotes$upfront) ## sc <- cdshazardrate(quotes, recov, tradedate, cs) ## durandthetas <- rbind(durandthetas, c(fastduration(sc, cs, tradedate, maturities$maturity), ## fasttheta(sc, cs, recov, tradedate, maturities$maturity, quotes$upfront, coupon))) |
