diff options
| -rw-r--r-- | R/calibration.R | 7 | ||||
| -rw-r--r-- | R/thetas-curve.R | 11 |
2 files changed, 15 insertions, 3 deletions
diff --git a/R/calibration.R b/R/calibration.R index 07723448..259ebde6 100644 --- a/R/calibration.R +++ b/R/calibration.R @@ -43,7 +43,12 @@ set.singlenamesdata <- function(index, tradedate){ loginfo(paste("no quotes available for", quote$ticker, "on day", as.character(tradedate))) ## probably defaulted - quote$upfront = (1-quote$recovery) * 0.9 + if(!is.na(quote$recovery)) { + quote$upfront = (1-quote$recovery) * 0.9 + } else { + index$portfolio <- NULL + return( index ) + } } index$portfolio <- c(index$portfolio, buildSC(quote, cds.cs$cs, cds.cs$cdsdates)) } diff --git a/R/thetas-curve.R b/R/thetas-curve.R index 427ac4ba..2923c83b 100644 --- a/R/thetas-curve.R +++ b/R/thetas-curve.R @@ -57,12 +57,19 @@ for(i in seq_along(unique.dates)) { loginfo(paste("calibrating", index$name, tradedate)) exportYC(tradedate, "USD") index <- set.index.desc(index, tradedate) + index$quotes <- quotes %>% filter(date == tradedate) %>% + inner_join(maturities, by="tenor") %>% arrange(maturity) + if(nrow(index$quotes) == 0) { + next + } index <- set.singlenamesdata(index, tradedate) + if(is.null(index$portfolio)){ + next + } index$cs <- couponSchedule(IMMDate(tradedate, noadj=TRUE), index$maturity, "Q", "FIXED", 1, 0, tradedate, IMMDate(tradedate, "prev")) - index$quotes <- quotes %>% filter(date == tradedate) %>% - right_join(maturities, by="tenor") %>% arrange(maturity) + tweak <- tweakcurves(index, tradedate) index$portfolio <- tweak$portfolio index$basis <- tweak$basis |
