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.R14
1 files changed, 8 insertions, 6 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index 92fae5a7..26037343 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -547,10 +547,12 @@ indexpv <- function(index, epsilon=0, tradedate=Sys.Date(), clean=TRUE){
## computes the intrinsic price of a portfolio of cds
if(epsilon!=0){
portfolio <- tweakportfolio(index$portfolio, epsilon)
+ }else{
+ portfolio <- index$portfolio
}
startdate <- tradedate + 1
- cl.list <- unlist(lapply(index$portfolio, function(x){couponleg(index$cs, x@curve, startdate)}))
- pl.list <- unlist(lapply(index$portfolio, function(x){defaultleg(index$cs, x@curve, x@recovery, startdate)}))
+ cl.list <- unlist(lapply(portfolio, function(x){couponleg(index$cs, x@curve, startdate)}))
+ pl.list <- unlist(lapply(portfolio, function(x){defaultleg(index$cs, x@curve, x@recovery, startdate)}))
accrued <- cdsAccrued(tradedate, index$coupon)
r <- list(cl = mean(cl.list) - accrued, pl = mean(pl.list), bp = 1+mean(cl.list-pl.list))
if(clean){
@@ -608,15 +610,15 @@ portfolioduration <- function(portfolio, maturity){
return( crossprod(durations, portfolio$notional)/sum(portfolio$notional) )
}
-tweakcurves <- function(portfolio, index, tradedate=Sys.Date()){
+tweakcurves <- function(index, tradedate=Sys.Date()){
## computes the tweaking factor
epsilon <- 0
f <- function(epsilon, ...){
- abs(indexpv(portfolio, index, epsilon, tradedate)$bp - index$indexref)
+ abs(indexpv(index, epsilon, tradedate)$bp - index$indexref)
}
- epsilon <- optimize(f, c(-0.5, 0.5), portfolio, index, tol=1e-6)$minimum
+ epsilon <- optimize(f, c(-0.5, 0.5), index, tol=1e-6)$minimum
cat("tweak = ", epsilon, "\n")
- return( list(portfolio=tweakportfolio(portfolio, epsilon), epsilon=epsilon) )
+ return( list(portfolio=tweakportfolio(index$portfolio, epsilon), epsilon=epsilon) )
}
survivalProbability1 <- function(startdate, date, survival.curve) {