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.R36
1 files changed, 1 insertions, 35 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index aadd99ba..073075de 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -738,15 +738,11 @@ getdealschedule <- function(dealdata, freq="1 month", lag=0, adjust=FALSE){
return(sched)
}
-getsettledate <- function(tradedate, settledays = 3, calendar="UnitedStates/GovernmentBond"){
- return(advance(calendar=calendar, tradedate, n = settledays, timeUnit = 0))
-}
-
SPmatrix2 <- function(portfolio, dealdata, freq="3 months", startdate=Sys.Date()){
## computes the default and prepay probability matrix of a portfolio
## at the dates specified from dealdata
dates <- getdealschedule(dealdata, freq)
- dates <- dates[dates>=getsettledate(startdate)]
+ dates <- dates[dates>=addBusDay(startdate, 3)]
DP <- matrix(0, length(portfolio), length(dates))
PP <- matrix(0, length(portfolio), length(dates))
for(i in seq_along(portfolio)){
@@ -792,36 +788,6 @@ forwardportfolioprice <- function(portfolio, startdate, maturity, coupontype, ma
sum(portfolio$notional[idx]))
}
-forwardportfolioprice2 <- function(cdrmonthly, recoverymonthly, startdate, maturity,
- coupontype, margin, liborfloor){
- if(missing(liborfloor)||is.na(liborfloor)){
- currentcoupon <- margin
- }else{
- currentcoupon <- margin + liborfloor
- }
- forwardcs <- data.table(couponSchedule(nextpaydate=startdate+45, maturity,
- frequency="Q", coupontype, margin,
- currentcoupon, startdate=startdate), key="dates")
- notionals <- cdrmonthly[date>=startdate, lapply(.SD,function(x)cumprod(1-x/100*1/12)),
- .SDcols=paste0("V",1:100)]
- recovery <- as.matrix(recoverymonthly[date>=startdate, .SD, .SDcols=paste0("V",1:100)])*
- -apply(rbind(1,as.matrix(notionals)), 2, diff)
- if(nrow(recovery)==1){
- recovery <- recovery*last(forwardcs[,df])
- }else{
- recovery <- data.table(dates=cdrmonthly[date>=startdate,date],apply(recovery, 2, cumsum),key="dates")
- recovery <- recovery[forwardcs, roll=TRUE]
- df <- recovery[,df]
- recovery <- t(df)%*%as.matrix(recovery[,lapply(.SD,function(x)diff(c(0,x))),.SDcols=paste0("V",1:100)])
- }
- notionals <- data.table(dates=cdrmonthly[date>=startdate,date], notionals, key="dates")
- outstanding <- notionals[forwardcs, roll=TRUE]
- mat.outstanding <- as.matrix(outstanding[,.SD,.SDcols=paste0("V",1:100)])
- po <- mat.outstanding[nrow(mat.outstanding),]*last(outstanding)[,df]
- io <- outstanding[, df*coupons]%*%mat.outstanding
- mean(recovery+po+io)
-}
-
creditcurve.maturity <- function(creditcurve){
if(class(creditcurve)=="creditcurve"){
dates <- creditcurve@curve@dates