Path: blob/master/sandbox/paper_analysis/data/preparedata_monthly.R
1433 views
123setwd("c:/Documents and Settings/Administrator/Desktop/risk budget programs")45library(zoo);67# Load the data8start = as.Date("1975-12-31") ; end = as.Date("2010-06-30") ;9dates = seq.Date(as.Date(start) + 1, as.Date(end) + 1, by ="month") - 1101112# S&P GSCI1314data = as.data.frame(read.csv( file = "data/SPGSCIall.csv",skip=5,sep=","))15colnames(data) = c("Date","SPGSCI")16SPGSCI = zoo( data$SPGSCI , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )17SPGSCI = window( SPGSCI , start = start , end = end );18monthlySPGSCI = aggregate(SPGSCI, as.yearmon , tail , 1 );19monthlyR_SPGSCI = diff(monthlySPGSCI)/as.vector(lag(monthlySPGSCI))20monthlyR_SPGSCI = zoo( as.vector(monthlyR_SPGSCI) , order.by = dates[2:length(dates)])2122# S&P 500 total returns2324data = as.data.frame(read.csv( file = "data/SP500all.csv",skip=5,sep=","))25colnames(data) = c("Date","SP500")26SP500 = zoo( data$SP500 , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )27SP500= window( SP500 , start = start , end = end );28monthlySP500 = aggregate(SP500, as.yearmon , tail , 1 );29monthlyR_SP500 = diff(monthlySP500)/as.vector(lag(monthlySP500))3031# we still need the returns on the total return index for the period Jan 1976-Jan 19883233data = as.data.frame(read.csv( file = "data/SP500returns.csv",skip=5,sep=","))34colnames(data) = c("Date","SP500")35SP500 = zoo( data$SP500 , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )36SP500= window( SP500 , start = start , end = "1988-01-31" );37monthlyRSP500bis = aggregate(SP500, as.yearmon , tail , 1 );38Z = merge( monthlyRSP500bis , monthlyR_SP500 )39monthlyR_SP500 = replace(Z$monthlyRSP500bis, is.na( Z$monthlyRSP500bis) , 0) + replace( Z$monthlyR_SP500, is.na( Z$monthlyR_SP500) , 0)40monthlyR_SP500 = zoo( as.vector(monthlyR_SP500) , order.by = dates[2:length(dates)])4142# MSCI EAFE4344data = as.data.frame(read.csv( file = "data/EAFEall.csv",skip=5,sep=","))45colnames(data) = c("Date","EAFE")46EAFE = zoo( data$EAFE , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )47EAFE = window( EAFE , start = start , end = end );48monthlyEAFE= aggregate(EAFE, as.yearmon , tail , 1 );49monthlyR_EAFE = diff(monthlyEAFE)/as.vector(lag(monthlyEAFE))50monthlyR_EAFE = zoo( as.vector(monthlyR_EAFE) , order.by = dates[2:length(dates)])515253# NAREIT5455data = as.data.frame(read.csv( file = "data/nareit.csv",skip=0,sep=","))56colnames(data) = c("Date","NAREIT")57monthlyNAREIT = zoo( as.numeric(data$NAREIT) , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )58monthlyNAREIT = window( monthlyNAREIT , start = start , end = end );59monthlyR_NAREIT = diff(monthlyNAREIT)/as.vector(lag(monthlyNAREIT))60monthlyR_NAREIT = zoo( as.vector(monthlyR_NAREIT) , order.by = dates[2:length(dates)])6162# Bond6364data = as.data.frame(read.csv( file = "data/MLDOMMASTERall.csv",skip=5,sep=","))65colnames(data) = c("Date","bond")66bond = zoo( data$bond , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )67bond = window( bond , start = start , end = end );68monthlybond= aggregate(bond, as.yearmon , tail , 1 );69monthlyR_bond = diff(monthlybond)/as.vector(lag(monthlybond))70monthlyR_bond = zoo( as.vector(monthlyR_bond) , order.by = dates[2:length(dates)])7172# Inflation7374data = as.data.frame(read.csv( file = "data/CPI.csv",skip=5,sep=","))75colnames(data) = c("Date","CPI")76CPI = zoo( data$CPI , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )77CPI = window( CPI , start = start , end = end );78monthlyCPI = aggregate(CPI, as.yearmon , tail , 1 );79monthlyInflation = diff(monthlyCPI)/as.vector(lag(monthlyCPI))80monthlyInflation = zoo( as.vector(monthlyInflation) , order.by = dates[2:length(dates)])818283# Middle interest rate on secondary market 3-month treasury bill:8485data = as.data.frame(read.csv( file = "data/Tbillall.csv",skip=5,sep=","))86colnames(data) = c("Date","TBill")87TBill = zoo( data$TBill , order.by = as.Date( as.character(data$Date) , format = "%m/%d/%Y" ) )88TBill = window( TBill , start = start , end = end );89monthlyTBill = aggregate(TBill, as.yearmon , tail , 1 );90#data$TBill[(as.character(data$TBill)=="#NA")]=NA;91# The rates listed on Treasury bills are annualized discount rates, assuming a year has 360 days.92# T-bill discount rate = [face value-bill price]*(360/number of days until maturity)93# A three month T-Bill has a maturity of 91 days94# The bond equivalent yield associated to the T-Bill is95# T-bill yield = [ (face value - bill price)/bill price ]x(365/number of days until maturity)96# The annualized yield is then (take face value of 1000):97# bill price = 100 - (91/360)*rate98# yield = {[(91/360)*rate]/[100 - (91/360)*rate]}*(365/91)99# See e.g. Mizrach, Bruce and Neely, Christopher J.,The Microstructure of the U.S. Treasury Market(April 2008). FRB St. Louis Working Paper No. 2007-052B. Available at SSRN: http://ssrn.com/abstract=1070226100101# Bond-equivalent annualized yield102monthlyTBill = (91/360)*(365/91)*monthlyTBill/(100-monthlyTBill*(91/360) ) ;103# Make it monthly104monthlyTBill = monthlyTBill/12;105monthlyTBill = zoo( as.vector(monthlyTBill) , order.by = dates[2:length(dates)])106107# Mixed portfolio108109data = merge.zoo( monthlyR_bond , monthlyR_SP500 , monthlyR_NAREIT, monthlyR_SPGSCI , monthlyTBill,monthlyInflation , monthlyR_EAFE)110colnames(data) = c( "Bond" , "SP500", "NAREIT" , "SPGSCI" ,"TBill","Inflation", "EAFE" )111data = na.locf(data);112head(data); plot(data); tail(data)113write.zoo( data , file="data/data.txt" , row.names=F )114write.csv( data , file="data/data.csv" , row.names=F )115#save( data , file = paste( getwd(),"/data/equitybondscommodity/equitybondscommodity.Rdata" , sep="") )116117118119120