diff options
Diffstat (limited to 'R/cds_functions_generic.R')
| -rw-r--r-- | R/cds_functions_generic.R | 8 |
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")
|
