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