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){
}
|