aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/calibration.R7
-rw-r--r--R/thetas-curve.R11
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