aboutsummaryrefslogtreecommitdiffstats
path: root/R/tests
diff options
context:
space:
mode:
Diffstat (limited to 'R/tests')
-rw-r--r--R/tests/test.cds_functions.R46
-rw-r--r--R/tests/test_lossdistrib.R15
-rw-r--r--R/tests/test_yieldcurve.R15
3 files changed, 76 insertions, 0 deletions
diff --git a/R/tests/test.cds_functions.R b/R/tests/test.cds_functions.R
new file mode 100644
index 00000000..c30651ba
--- /dev/null
+++ b/R/tests/test.cds_functions.R
@@ -0,0 +1,46 @@
+library("RUnit")
+root = "//WDSENTINEL/share/CorpCDOs/R"
+source(file.path(root, "yieldCurve.R"))
+source(file.path(root, "cds_functions.R"))
+
+#unit tests
+cs <- couponSchedule(as.Date("2012-09-28"), as.Date("2016-04-22"),"Q", "FLOAT", 0.075,0.0703)
+#test that the curve version gives the same result as the flat version for flat curves
+h <- rep(0.05, nrow(cs))
+dpc <- new("defaultprepaycurve", dates=cs$dates, hazardrates=h)
+eps <- 1e-6
+test.flat <- function() {
+ checkEquals(contingentleg.flat(cs, 0.05, 0.7), contingentleg(cs, dpc, 0.7))
+}
+#test derivative of the flat version
+test.derivativeflat <- function() {
+ checkEquals((contingentleg.flat(cs, 0.05+eps, 0.7)-contingentleg.flat(cs, 0.05-eps,0.7))/(2*eps),
+ dcontingentleg.flat(cs, 0.05, 0.7))
+}
+#test derivative of the curved version
+hvec <- c(rep(0.05,5), rep(0.07, 10))
+hvecplus <- c(rep(0.05,5), rep(0.07 + eps,10))
+hvecminus <- c(rep(0.05, 5), rep(0.07 - eps,10))
+index <- c(rep(0,5), rep(1,10))
+dpc <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvec)
+dpcplus <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvecplus)
+dpcminus <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvecminus)
+
+test.derivativecurve <- function() {
+ checkEquals((contingentleg(cs, dpcplus, 0.7) - contingentleg(cs, dpcminus, 0.7))/(2*eps),
+ dcontingentleg(cs, dpc, 0.7, index))
+}
+## test that the prepay version with 0 prepay is the same as the curved version
+dpc <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvec, prepayrates=rep(0,nrow(cs)))
+test.prepay <- function() {
+ checkEquals(contingentleg(cs, dpc, 0.7),
+ contingentleg.prepay(cs, dpc, 0.7))
+}
+## test derivative of prepay version
+dpcplus <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvecplus, prepayrates=k(hvecplus))
+dpcminus <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvecminus, prepayrates=k(hvecminus))
+dpc <- new("defaultprepaycurve", dates=cs$dates, hazardrates=hvec, prepayrates=k(hvec))
+(contingentleg.prepay(cs, dpcplus, 0.7)-contingentleg.prepay(cs, dpcminus, 0.7))/(2*bps)
+dcontingentleg.prepay(cs, dpc, 0.7, index, 15)
+(couponleg.prepay(cs, dpcplus)-couponleg.prepay(cs, dpcminus, 0.7))/(2*bps)
+dcouponleg.prepay(cs, dpc, index, 15)
diff --git a/R/tests/test_lossdistrib.R b/R/tests/test_lossdistrib.R
new file mode 100644
index 00000000..34c7554c
--- /dev/null
+++ b/R/tests/test_lossdistrib.R
@@ -0,0 +1,15 @@
+library(lossdistrib)
+p <- runif(1000)
+S <- runif(1000)
+w <- rep(1/10000,10000)
+
+run1 <- system.time(for(i in 1:1000){
+ lossdistC(p, w, S, 301)
+})
+cat("simple lossdist", run1["elapsed"], "\n")
+
+run2 <- system.time(for(i in 1:1000){
+ lossdistCblas(p, w, S, 301)
+})
+# the blas function should be roughly twice as fast
+cat("blas lossdist", run2["elapsed"], "\n")
diff --git a/R/tests/test_yieldcurve.R b/R/tests/test_yieldcurve.R
new file mode 100644
index 00000000..7adcb813
--- /dev/null
+++ b/R/tests/test_yieldcurve.R
@@ -0,0 +1,15 @@
+source("yieldcurve.R")
+source("cds_utils.R")
+root.dir <- "/home/share/CorpCDOs/"
+
+dates <- seq(as.Date("2013-05-01"), as.Date("2014-05-01"), by=1)
+for(i in 1:length(dates)){
+ day <- dates[i]
+ calibration.date <- addBusDay(day, -1)
+ print(calibration.date)
+ print(day)
+ if(isBusinessDay(calendar="UnitedStates", day)){
+ exportYC(calibration.date)
+ test <- DiscountCurve(L3m$params, L3m$tsQuotes, 1)
+ }
+}