diff options
| -rw-r--r-- | R/calibration.R | 6 | ||||
| -rw-r--r-- | R/serenitasdb.R | 8 | ||||
| -rw-r--r-- | sql/serenitasdb.sql | 1 |
3 files changed, 10 insertions, 5 deletions
diff --git a/R/calibration.R b/R/calibration.R index 4e8cac31..23441583 100644 --- a/R/calibration.R +++ b/R/calibration.R @@ -66,11 +66,7 @@ set.tranchedata <- function(index, tradedate){ index$quotes <- data.frame(maturity=index$maturity, refspread=temp$indexrefspread[1], refprice=temp$indexrefprice[1]) - if(index$name=="ig19" || index$name=="ig21"){ - index$quotes$spread <- 0.01 - }else{ - index$quotes$spread <- index$quotes$refspread*1e-4 - } + index$quotes$spread <- couponfromindex(index, index$tenor)*1e-4 index$cs <- couponSchedule(IMMDate(tradedate, noadj=TRUE), index$maturity,"Q", "FIXED", 1, 0, tradedate, IMMDate(tradedate, "prev")) if(!is.na(index$quotes$refprice) && index$quotes$refprice != 0){ diff --git a/R/serenitasdb.R b/R/serenitasdb.R index 86299d41..6e6d5344 100644 --- a/R/serenitasdb.R +++ b/R/serenitasdb.R @@ -106,3 +106,11 @@ get.tranchequotes <- function(indexname, tenor='5yr', date=Sys.Date()){ } return( r ) } + +couponfromindex <- function(indexname, tenor){ + temp <- indexsplit(indexname) + sqlstr <- sprintf("select coupon from index_maturity where index='%s' and series=%s and tenor='%s'", + temp$index, temp$series, tenor) + r <- dbGetQuery(serenitasdb, sqlstr) + r$coupon +} diff --git a/sql/serenitasdb.sql b/sql/serenitasdb.sql index cc56cb65..2f6d2471 100644 --- a/sql/serenitasdb.sql +++ b/sql/serenitasdb.sql @@ -40,6 +40,7 @@ CREATE TABLE index_maturity( series smallint,
tenor tenor,
maturity date,
+ coupon integer,
PRIMARY KEY(index, series, tenor)
);
|
