aboutsummaryrefslogtreecommitdiffstats
path: root/R/build_portfolios.R
blob: 8a53c547d2385e1385d6e7057ee0d75519e28f4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
library("RQuantLib")
library("parallel")

if(.Platform$OS.type == "unix"){
  root.dir <- "/home/share/CorpCDOs"
}else{
  root.dir <- "//WDSENTINEL/share/CorpCDOs"
}

source(file.path(root.dir, "code", "R", "intex_deal_functions.R"))
source(file.path(root.dir, "code", "R", "index_definitions.R"))

workdate <- as.Date('2013-01-24')
MarkitData <- getMarkitIRData(workdate)

L1m <- buildMarkitYC(MarkitData, dt = 1/12)
L2m <- buildMarkitYC(MarkitData, dt = 1/6)
L3m <-  buildMarkitYC(MarkitData)
L6m <- buildMarkitYC(MarkitData, dt = 1/2)
L12m <- buildMarkitYC(MarkitData, dt = 1)
setEvaluationDate(as.Date(MarkitData$effectiveasof))

bps <- 1e-4
global.params <- list()
global.params$recovery.assumptions <- list("Loan"=0.7,
                                           "Senior Notes"=0.7,
                                           "SecondLien"=0.3,
                                           "Bond"=0.4,
                                           "Mezzanine"=0.15,
                                           "Adj_Covlite"=0.1,
                                           "Credit Default Swap"=0)

global.params$cdoprices <- list("Aaa"=90,
                                "Aa"=88,
                                "A"=80,
                                "Baa"=75,
                                "Ba"=70,
                                "B"=65,
                                "NR"=50)
#reinvest in 7 years assets
global.params$rollingmaturity <- 7 * 365
global.params$defaultedlag <- 90
global.params$defaultcorr <- 0.45
global.params$defaultbondhazardrate <- 1500 * bps
global.params$defaultloanhazardrate <- 1500 * bps
global.params$alpha <- 0.25
global.params$beta <- 15
global.params$shape <- function(T)0.25+(1-exp(-T/5))

dealnames <- listdealnames()

calibration.date <- Sys.Date()
calibration.date <- '2013-01-24'
cusipdata <- cusip.data()
do <- function(deal.name){
    deal.data <- getdealdata(deal.name, calibration.date)
    if(deal.data$"Curr Collat Bal" < 1 ||is.na(deal.data$maturity)||deal.data$maturity<=today()+90){
        return()
    }
    deal.portfolio <- buildSC.portfolio(deal.name, deal.data, cusipdata, global.params)
    A <- SPmatrix2(deal.portfolio$SC, deal.data, freq="3 months")
    S <- 1 - sapply(deal.portfolio$SC, attr, "recov")
    deal.weights <- deal.portfolio$notional/sum(deal.portfolio$notional)
    deal.dates <- getdealschedule(deal.data)
    deal.spread <- portfoliospread(deal.portfolio, hy19$maturity)
    save.dir <- file.path(root.dir, "Scenarios", paste("Portfolios", calibration.date, sep="_"))
    if(!file.exists(save.dir)){
        dir.create(save.dir)
    }
    save(deal.portfolio, A, S, deal.weights, deal.dates, deal.spread,
         file=file.path(save.dir, paste0(deal.name, ".RData")))
    cat(deal.name, "... done\n")
}

## build portfolio data
for(deal.name in dealnames){
    do(deal.name)
}