aboutsummaryrefslogtreecommitdiffstats
path: root/R/cds_functions_generic.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/cds_functions_generic.R')
-rw-r--r--R/cds_functions_generic.R8
1 files changed, 4 insertions, 4 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index 7ce84daa..a38e38ef 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -538,9 +538,9 @@ tweakportfolio <- function(portfolio, epsilon, multiplicative=TRUE){
return( r )
}
-indexpv <- function(portfolio, index, epsilon=0){
+indexpv <- function(portfolio, index, epsilon=0, workdate=Sys.Date()){
## computes the intrinsic index pv of a portfolio of cds
- cs <- couponSchedule(nextIMMDate(Sys.Date()), index$maturity, "Q", "FIXED", index$coupon)
+ cs <- couponSchedule(nextIMMDate(workdate+1), index$maturity, "Q", "FIXED", index$coupon)
if(epsilon!=0){
portfolio <- tweakportfolio(portfolio, epsilon)
}
@@ -598,11 +598,11 @@ portfolioduration <- function(portfolio, maturity){
return( crossprod(durations, portfolio$notional)/sum(portfolio$notional) )
}
-tweakcurves <- function(portfolio, index){
+tweakcurves <- function(portfolio, index, workdate=Sys.Date()){
## computes the tweaking factor
epsilon <- 0
f <- function(epsilon, ...){
- abs(indexpv(portfolio, index, epsilon)$bp-index$indexref)
+ abs(indexpv(portfolio, index, epsilon, workdate)$bp-index$indexref)
}
epsilon <- optimize(f, c(-0.5, 0.5), portfolio, index, tol=1e-6)$minimum
cat("tweak = ", epsilon, "\n")