aboutsummaryrefslogtreecommitdiffstats
path: root/R/loan_universe.R
blob: 821022a39bdba4745655c4e902470d1d3e91d15e (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
source("cds_utils.R")
source("cds_functions_generic.R")
source("index_definitions.R")
source("tranche_functions.R")
source("yieldcurve.R")
source("etdb.R")
library(ggplot2)

##source("optimization.R")
MarkitData <- getMarkitIRData()
L1m <- buildMarkitYC(MarkitData, dt = 1/12)
L2m <- buildMarkitYC(MarkitData, dt = 1/6)
L3m <-  buildMarkitYC(MarkitData)
L6m <- buildMarkitYC(MarkitData, dt = 1/2)
setEvaluationDate(as.Date(MarkitData$effectiveasof))

library(RQuantLib)
loan.data <- dbGetQuery(dbCon, "select * from latest_markit_prices where lower(facility) in (select distinct lower(facility) as lf from latest_markit_prices where lower(facility) like 'tl%') order by maturity")
flatshape <- splinefun(c(0,20),rep(1,2))
loan.data.clean <- loan.data[loan.data$depth>=10,]
loan.data.clean <- loan.data.clean[loan.data.clean$latestdate==as.Date("2012-09-11"),]
loan.data.clean <- loan.data.clean[-(1:4),]
SC.universe <- c()
Rvec <- c()
maturityvec <- as.Date(character(0))
indexvec <- c()
w1 <- c()
w2 <- c()
for(i in 1:nrow(loan.data.clean)){
    if(i%%10==0){
        cat(i, sep="\n")
    }
    collateral <- loan.data.clean[i,]
    collateral$frequency <- "Q"
    collateral$fixedorfloat <- "FLOAT"
    collateral$grosscoupon <- 0
    collateral$spread <- collateral$spread/100
    collateral$price <- (collateral$bid+collateral$offer)/2
    if(is.na(collateral$spread)){
        next
    }
    ## negative hazard rate
    if(collateral$price-100-
       (yearFrac(today(), collateral$maturity) * collateral$spread)>=0){
        next
    }
    if(collateral$price<=50){
        next
    }
    recov <- min(collateral$price/100-0.2, 0.6)
    sc <- bondhazardrate.shaped(collateral, flatshape, recov)
    if(sc@h<=0){
        next
    }
    SC.universe <- c(SC.universe, sc)
    Rvec <- c(Rvec, recov)
    maturityvec <- c(maturityvec, collateral$maturity)
    indexvec <- c(indexvec, i)
    w1 <- c(w1, collateral$amount)
    w2 <- c(w2, collateral$amount * collateral$price/100)
}

hvec <- sapply(SC.universe, attr, "h")
spreads <- hvec*(1-Rvec)
T <- yearFrac(today(), maturityvec)
test <- loess(spreads~T)

loan.data2 <- loan.data.clean[!is.na(loan.data.clean$stm),]
maturities <- yearFrac(today(),loan.data2$maturity)
test2 <- loess(loan.data2$stm~maturities)