aboutsummaryrefslogtreecommitdiffstats
path: root/R/loadcashflows.R
blob: 26ea12f1b0ae59021d070cd097c20f46ea9f44c7 (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
cusips <- c("000743AA2","00083VAE1","009368AD3","00936BAA2","00936XAA4","03761KAG3","03761LAE6","039549AC4","30605LAA7","82626RAA0","92849RAA0")
cfdir <- "T:/Analytics/Runs/20100608"
test <- read.table(paste(cusip[1],"cashflow.txt",sep="_"),header=T)
index_scen <- function(data,i){
  return( which(data$"Scenario"==paste("SCENARIO",i,sep="")) )
}

as.Date(as.character(test[index_scen(test,1),]$Date),format="%Y%m%d")

library(zoo)
today <- function(){
  as.Date(Sys.time())
}
df <- function(spreadcurve){
  df <- exp(-cumsum(as.numeric(diff(c(spreadcurve$curvedate,time(spreadcurve$curve)))/365)*spreadcurve$curve))
  list(curvedate=spreadcurve$curvedate,curve=zoo(df,time(spreadcurve$curve)))
}
test <- zoo(c(100,200,300),c(today+365*1:3))
yc.usd <-list(curvedate=today(),curve=zoo(c(100,200,300),today()+365*1:3))

addcurves <- function(curveA,curveB){
  if(curveA$curvedate==curveB$curvedate){
    curvemerged <- na.locf(na.locf(merge(curveA$curve,curveB$curve),na.rm=F,fromLast=T))
    return(list(curvedate=curveA$curvedate,curve=curvemerged[,1]+curvemerged[,2]))
  }else{
    return(0)
  }
}
multcurves <- function(curveA,curveB){
  if(curveA$curvedate==curveB$curvedate){
    curvemerged <- na.locf(na.locf(merge(curveA$curve,curveB$curve),na.rm=F,fromLast=T))
    return(list(curvedate=curveA$curvedate,curve=curvemerged[,1]*curvemerged[,2]))
  }else{
    return(0)
  }
}
spreadfrombondprice <- function(price,spread,maturity,yieldcurve){  
}