Last active
August 29, 2015 14:05
-
-
Save alexchinco/2cc03ccdfafdc41890ae to your computer and use it in GitHub Desktop.
Simulate equilibrium parameters for 2 period Kyle (1985)-type model
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Prep workspace | |
rm(list=ls()) | |
library(foreign) | |
library(grid) | |
library(plyr) | |
library(ggplot2) | |
library(tikzDevice) | |
print(options('tikzLatexPackages')) | |
options(tikzLatexPackages = | |
c("\\usepackage{tikz}\n", | |
"\\usepackage[active,tightpage,psfixbb]{preview}\n", | |
"\\PreviewEnvironment{pgfpicture}\n", | |
"\\setlength\\PreviewBorder{0pt}\n", | |
"\\usepackage{amsmath}\n", | |
"\\usepackage{xfrac}\n" | |
) | |
) | |
setTikzDefaults(overwrite = FALSE) | |
print(options('tikzLatexPackages')) | |
library(reshape) | |
library(vars) | |
library(scales) | |
library(zoo) | |
library(optimx) | |
scl.str.DAT_DIR <- "~/Dropbox/research/absolutely_small/data/" | |
scl.str.FIG_DIR <- "~/Dropbox/research/absolutely_small/figures/" | |
## Define global parameters | |
scl.flt.SIG_V <- 1 | |
## Define equilibrium parameter functions | |
fun.LAM_0_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.A <- scl.flt.BET_0 * scl.flt.SIG_V^2 | |
scl.flt.B <- scl.flt.SIG_NZ^2 + scl.flt.BET_0^2 * scl.flt.SIG_S^2 | |
scl.flt.OUT <- scl.flt.A/scl.flt.B | |
return(scl.flt.OUT) | |
} | |
fun.SIG_V_COND_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.A <- scl.flt.BET_0^2 * scl.flt.SIG_EP^2 + scl.flt.SIG_NZ^2 | |
scl.flt.B <- scl.flt.BET_0^2 * scl.flt.SIG_S^2 + scl.flt.SIG_NZ^2 | |
scl.flt.OUT <- sqrt((scl.flt.A/scl.flt.B) * scl.flt.SIG_V^2) | |
return(scl.flt.OUT) | |
} | |
fun.SIG_S_COND_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.A <- scl.flt.SIG_NZ^2 | |
scl.flt.B <- scl.flt.BET_0^2 * scl.flt.SIG_S^2 + scl.flt.SIG_NZ^2 | |
scl.flt.OUT <- sqrt((scl.flt.A/scl.flt.B) * scl.flt.SIG_S^2) | |
return(scl.flt.OUT) | |
} | |
fun.LAM_1_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.TET <- scl.flt.SIG_V^2/scl.flt.SIG_S^2 | |
scl.flt.SIG_V_COND_HAT <- fun.SIG_V_COND_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.SIG_S_COND_HAT <- fun.SIG_S_COND_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.A <- sqrt((scl.flt.TET/2) * (scl.flt.SIG_V_COND_HAT^2 - (scl.flt.TET/2) * scl.flt.SIG_S_COND_HAT^2)) | |
scl.flt.OUT <- (1/scl.flt.SIG_NZ) * scl.flt.A | |
return(scl.flt.OUT) | |
} | |
## Define beta1 solver | |
fun.BET_0_SLN <- function(scl.flt.BET_0, vec.flt.PAR) { | |
scl.flt.SIG_NZ <- vec.flt.PAR[1] | |
scl.flt.SIG_EP <- vec.flt.PAR[2] | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.TET <- scl.flt.SIG_V^2/scl.flt.SIG_S^2 | |
scl.flt.LAM_0_HAT <- fun.LAM_0_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.LAM_1_HAT <- fun.LAM_1_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.OMG_1_HAT <- 1/(4 * scl.flt.LAM_1_HAT) | |
scl.flt.A <- scl.flt.TET/(2 * scl.flt.LAM_0_HAT) | |
scl.flt.B <- scl.flt.LAM_1_HAT - 2 * scl.flt.OMG_1_HAT * scl.flt.LAM_0_HAT | |
scl.flt.C <- scl.flt.LAM_1_HAT - scl.flt.OMG_1_HAT * scl.flt.LAM_0_HAT | |
scl.flt.ERR <- (scl.flt.A * scl.flt.B/scl.flt.C - scl.flt.BET_0)^2 | |
return(scl.flt.ERR) | |
} | |
## Try out solver to make sure that it works | |
scl.flt.SIG_NZ <- 1 | |
scl.flt.SIG_EP <- 1 | |
obj.opt.RESULTS <- optimize(fun.BET_0_SLN, vec.flt.PAR = c(scl.flt.SIG_NZ, scl.flt.SIG_EP), lower = 0, upper = 2, tol = 0.001) | |
print(obj.opt.RESULTS) | |
## Define simulation parameters | |
vec.flt.SIG_NZ <- c(0.50, 1, 1.50, 2) | |
scl.int.SIG_NZ_LEN <- length(vec.flt.SIG_NZ) | |
vec.flt.SIG_EP <- seq(0.01,3,by=0.01) | |
scl.int.SIG_EP_LEN <- length(vec.flt.SIG_EP) | |
mat.df.PARAM <- data.frame(sigEP = rep(vec.flt.SIG_EP, scl.int.SIG_NZ_LEN), | |
sigNZ = sort(rep(vec.flt.SIG_NZ, scl.int.SIG_EP_LEN)), | |
bet0 = NA, | |
bet1 = NA, | |
lam0 = NA, | |
lam1 = NA | |
) | |
## Compute model parameters | |
scl.flt.TOL <- 0.0001 | |
for (s in 1:scl.int.SIG_NZ_LEN) { | |
for (e in 1:scl.int.SIG_EP_LEN) { | |
scl.flt.UB <- min(1/2 * (1/vec.flt.SIG_EP[e]), 1/2) | |
obj.opt.RESULTS <- optimize(f = fun.BET_0_SLN, interval = c(0,scl.flt.UB), tol = scl.flt.TOL, vec.flt.PAR = c(vec.flt.SIG_NZ[s], vec.flt.SIG_EP[e])) | |
scl.flt.TET <- scl.flt.SIG_V^2/(scl.flt.SIG_V^2 + vec.flt.SIG_EP[e]^2) | |
if (obj.opt.RESULTS$objective <= scl.flt.TOL) { | |
vec.int.ROWS <- which((mat.df.PARAM$sigNZ == vec.flt.SIG_NZ[s]) & (mat.df.PARAM$sigEP == vec.flt.SIG_EP[e])) | |
mat.df.PARAM[vec.int.ROWS, ]$bet0 <- obj.opt.RESULTS$minimum | |
mat.df.PARAM[vec.int.ROWS, ]$lam0 <- fun.LAM_0_HAT(obj.opt.RESULTS$minimum, vec.flt.SIG_NZ[s], vec.flt.SIG_EP[e]) | |
mat.df.PARAM[vec.int.ROWS, ]$lam1 <- fun.LAM_1_HAT(obj.opt.RESULTS$minimum, vec.flt.SIG_NZ[s], vec.flt.SIG_EP[e]) | |
mat.df.PARAM[vec.int.ROWS, ]$bet1 <- scl.flt.TET/(2 * mat.df.PARAM[vec.int.ROWS, ]$lam1) | |
} | |
} | |
} | |
## Create realized dividend plot | |
theme_set(theme_bw()) | |
mat.df.PLOT <- mat.df.PARAM[, c("sigNZ", "sigEP", "bet0", "bet1", "lam0", "lam1")] | |
mat.df.PLOT <- melt(mat.df.PLOT, c("sigNZ", "sigEP")) | |
mat.df.PLOT$time <- "$t=0$" | |
mat.df.PLOT[mat.df.PLOT$variable %in% c("bet1", "lam1"), ]$time <- "$t=1$" | |
mat.df.PLOT$coef <- "$\\beta_t$" | |
mat.df.PLOT[mat.df.PLOT$variable %in% c("lam0", "lam1"), ]$coef <- "$\\lambda_t$" | |
mat.df.PLOT$sigNZ <- factor(mat.df.PLOT$sigNZ, | |
levels = c("0.5", "1", "1.5", "2"), | |
labels = c("$\\sigma_{\\text{nz}} = \\sfrac{1}{2}$", "$\\sigma_{\\text{nz}} = 1$", "$\\sigma_{\\text{nz}} = \\sfrac{3}{2}$", "$\\sigma_{\\text{nz}} = 2$") | |
) | |
scl.str.RAW_FILE <- 'plot--2-period-kyle-model-solution--11aug2014' | |
scl.str.TEX_FILE <- paste(scl.str.RAW_FILE,'.tex',sep='') | |
scl.str.PDF_FILE <- paste(scl.str.RAW_FILE,'.pdf',sep='') | |
scl.str.PNG_FILE <- paste(scl.str.RAW_FILE,'.png',sep='') | |
scl.str.AUX_FILE <- paste(scl.str.RAW_FILE,'.aux',sep='') | |
scl.str.LOG_FILE <- paste(scl.str.RAW_FILE,'.log',sep='') | |
tikz(file = scl.str.TEX_FILE, height = 3, width = 7, standAlone=TRUE) | |
obj.gg2.PLOT <- ggplot() | |
obj.gg2.PLOT <- obj.gg2.PLOT + scale_colour_brewer(palette="Set1") | |
obj.gg2.PLOT <- obj.gg2.PLOT + geom_path(data = mat.df.PLOT, | |
aes(x = sigEP, | |
y = value, | |
group = time, | |
colour = time | |
), | |
size = 0.75 | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + scale_x_continuous(limits = c(0,3), breaks = c(0.50, 1.00, 1.5, 2, 2.5), labels = c("$\\sfrac{1}{2}$", "$1$", "$\\sfrac{3}{2}$", "$2$", "$\\sfrac{5}{2}$")) | |
obj.gg2.PLOT <- obj.gg2.PLOT + xlab("$\\sigma_{\\epsilon}$") | |
obj.gg2.PLOT <- obj.gg2.PLOT + ylab("") | |
obj.gg2.PLOT <- obj.gg2.PLOT + labs(group = "", colour = "") | |
obj.gg2.PLOT <- obj.gg2.PLOT + facet_grid(coef ~ sigNZ, scales = "free_y") | |
obj.gg2.PLOT <- obj.gg2.PLOT + theme(plot.margin = unit(c(1,0.15,0.15,-1.00), "lines"), | |
plot.title = element_text(vjust = 1.75), | |
legend.position = c(0.05, 0.90), | |
legend.background = element_blank(), | |
axis.text = element_text(size = 6), | |
axis.title = element_text(size = 10), | |
panel.grid.minor = element_blank() | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + ggtitle("Kyle (1985) Model Solution with $\\sigma_v = \\mathdollar 1$") | |
print(obj.gg2.PLOT) | |
dev.off() | |
system(paste('lualatex', file.path(scl.str.TEX_FILE)), ignore.stdout = TRUE) | |
system(paste('convert -density 600', file.path(scl.str.PDF_FILE), ' ', file.path(scl.str.PNG_FILE))) | |
system(paste('mv ', scl.str.PNG_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.TEX_FILE, sep = '')) | |
system(paste('mv ', scl.str.PDF_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.AUX_FILE, sep = '')) | |
system(paste('rm ', scl.str.LOG_FILE, sep = '')) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Prep workspace | |
rm(list=ls()) | |
library(foreign) | |
library(grid) | |
library(plyr) | |
library(ggplot2) | |
library(tikzDevice) | |
print(options('tikzLatexPackages')) | |
options(tikzLatexPackages = | |
c("\\usepackage{tikz}\n", | |
"\\usepackage[active,tightpage,psfixbb]{preview}\n", | |
"\\PreviewEnvironment{pgfpicture}\n", | |
"\\setlength\\PreviewBorder{0pt}\n", | |
"\\usepackage{amsmath}\n", | |
"\\usepackage{xfrac}\n" | |
) | |
) | |
setTikzDefaults(overwrite = FALSE) | |
print(options('tikzLatexPackages')) | |
library(reshape) | |
library(vars) | |
library(scales) | |
library(zoo) | |
scl.str.DAT_DIR <- "~/Dropbox/research/absolutely_small/data/" | |
scl.str.FIG_DIR <- "~/Dropbox/research/absolutely_small/figures/" | |
## Define global parameters | |
scl.flt.SIG_V <- sqrt(1) | |
scl.flt.SIG_NZ <- sqrt(1) | |
scl.flt.SIG_EP <- sqrt(1) | |
scl.flt.TOL <- 0.00001 | |
scl.int.ITER <- 10000 | |
## Define equilibrium parameter functions | |
fun.LAM_0_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.A <- scl.flt.BET_0 * scl.flt.SIG_V^2 | |
scl.flt.B <- scl.flt.SIG_NZ^2 + scl.flt.BET_0^2 * scl.flt.SIG_S^2 | |
scl.flt.OUT <- scl.flt.A/scl.flt.B | |
return(scl.flt.OUT) | |
} | |
fun.SIG_V_COND_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.A <- scl.flt.BET_0^2 * scl.flt.SIG_EP^2 + scl.flt.SIG_NZ^2 | |
scl.flt.B <- scl.flt.BET_0^2 * scl.flt.SIG_S^2 + scl.flt.SIG_NZ^2 | |
scl.flt.OUT <- sqrt((scl.flt.A/scl.flt.B) * scl.flt.SIG_V^2) | |
return(scl.flt.OUT) | |
} | |
fun.SIG_S_COND_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.A <- scl.flt.SIG_NZ^2 | |
scl.flt.B <- scl.flt.BET_0^2 * scl.flt.SIG_S^2 + scl.flt.SIG_NZ^2 | |
scl.flt.OUT <- sqrt((scl.flt.A/scl.flt.B) * scl.flt.SIG_S^2) | |
return(scl.flt.OUT) | |
} | |
fun.LAM_1_HAT <- function(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) { | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.TET <- scl.flt.SIG_V^2/scl.flt.SIG_S^2 | |
scl.flt.SIG_V_COND_HAT <- fun.SIG_V_COND_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.SIG_S_COND_HAT <- fun.SIG_S_COND_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.A <- sqrt((scl.flt.TET/2) * (scl.flt.SIG_V_COND_HAT^2 - (scl.flt.TET/2) * scl.flt.SIG_S_COND_HAT^2)) | |
scl.flt.OUT <- (1/scl.flt.SIG_NZ) * scl.flt.A | |
return(scl.flt.OUT) | |
} | |
## Define beta1 solver | |
fun.BET_0_SLN <- function(scl.flt.BET_0, vec.flt.PAR) { | |
scl.flt.SIG_NZ <- vec.flt.PAR[1] | |
scl.flt.SIG_EP <- vec.flt.PAR[2] | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.TET <- scl.flt.SIG_V^2/scl.flt.SIG_S^2 | |
scl.flt.LAM_0_HAT <- fun.LAM_0_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.LAM_1_HAT <- fun.LAM_1_HAT(scl.flt.BET_0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.OMG_1_HAT <- 1/(4 * scl.flt.LAM_1_HAT) | |
scl.flt.A <- scl.flt.TET/(2 * scl.flt.LAM_0_HAT) | |
scl.flt.B <- scl.flt.LAM_1_HAT - 2 * scl.flt.OMG_1_HAT * scl.flt.LAM_0_HAT | |
scl.flt.C <- scl.flt.LAM_1_HAT - scl.flt.OMG_1_HAT * scl.flt.LAM_0_HAT | |
scl.flt.ERR <- (scl.flt.A * scl.flt.B/scl.flt.C - scl.flt.BET_0)^2 | |
return(scl.flt.ERR) | |
} | |
## Compute equilibrium parameters | |
scl.flt.UB <- min(1/2 * (1/scl.flt.SIG_EP), 1/2) | |
obj.opt.RESULTS <- optimize(f = fun.BET_0_SLN, interval = c(0,scl.flt.UB), tol = scl.flt.TOL, vec.flt.PAR = c(scl.flt.SIG_NZ, scl.flt.SIG_EP)) | |
scl.flt.BET0 <- obj.opt.RESULTS$minimum | |
scl.flt.LAM0 <- fun.LAM_0_HAT(scl.flt.BET0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.LAM1 <- fun.LAM_1_HAT(scl.flt.BET0, scl.flt.SIG_NZ, scl.flt.SIG_EP) | |
scl.flt.SIG_S <- sqrt(scl.flt.SIG_V^2 + scl.flt.SIG_EP^2) | |
scl.flt.TET <- scl.flt.SIG_V^2/scl.flt.SIG_S^2 | |
scl.flt.BET1 <- scl.flt.TET/(2 * scl.flt.LAM1) | |
## Simulate asset value, signal, and prices | |
mat.df.SIM <- data.frame(i = seq(1, scl.int.ITER), | |
v = NA, | |
s = NA, | |
sCond = NA, | |
nz1 = NA, | |
nz2 = NA, | |
p1 = NA, | |
p2 = NA | |
) | |
for (i in 1:scl.int.ITER) { | |
mat.df.SIM[i, ]$v <- scl.flt.V <- rnorm(1, 0, scl.flt.SIG_V) | |
mat.df.SIM[i, ]$s <- scl.flt.S <- scl.flt.V + rnorm(1, 0, scl.flt.SIG_EP) | |
mat.df.SIM[i, ]$nz1 <- scl.flt.NZ1 <- rnorm(1, 0, scl.flt.SIG_NZ) | |
mat.df.SIM[i, ]$nz2 <- scl.flt.NZ2 <- rnorm(1, 0, scl.flt.SIG_NZ) | |
mat.df.SIM[i, ]$p1 <- scl.flt.P1 <- scl.flt.LAM0 * (scl.flt.BET0 * scl.flt.S + scl.flt.NZ1) | |
mat.df.SIM[i, ]$sCond <- ((scl.flt.BET0^2 * scl.flt.SIG_S^2)/(scl.flt.BET0^2 * scl.flt.SIG_S^2 + scl.flt.SIG_NZ^2)) * (scl.flt.BET0 * scl.flt.S + scl.flt.NZ1) | |
mat.df.SIM[i, ]$p2 <- scl.flt.P2 <- scl.flt.P1/2 + scl.flt.LAM1 * (scl.flt.BET1 * scl.flt.S + scl.flt.NZ2) | |
## mat.df.SIM[i, ]$p2 <- scl.flt.P2 <- scl.flt.LAM1 * (scl.flt.BET1 * scl.flt.S + scl.flt.NZ2) | |
} | |
## Plot price vs value | |
theme_set(theme_bw()) | |
mat.df.SIM$sDiff <- mat.df.SIM$s - mat.df.SIM$sCond | |
mat.df.SIM$sDiff2 <- mat.df.SIM$sDiff^2 | |
obj.lm.RESULT0A <- summary(lm(sDiff ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT0B <- summary(lm(sDiff2 ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT0C <- summary(lm(s ~ sCond, data = mat.df.SIM)) | |
mat.df.PLOT <- mat.df.SIM[, c("i", "s", "sCond")] | |
scl.str.RAW_FILE <- 'plot--2-period-kyle-model--signal-updating--11aug2014' | |
scl.str.TEX_FILE <- paste(scl.str.RAW_FILE,'.tex',sep='') | |
scl.str.PDF_FILE <- paste(scl.str.RAW_FILE,'.pdf',sep='') | |
scl.str.PNG_FILE <- paste(scl.str.RAW_FILE,'.png',sep='') | |
scl.str.AUX_FILE <- paste(scl.str.RAW_FILE,'.aux',sep='') | |
scl.str.LOG_FILE <- paste(scl.str.RAW_FILE,'.log',sep='') | |
tikz(file = scl.str.TEX_FILE, height = 2, width = 7, standAlone=TRUE) | |
obj.gg2.PLOT <- ggplot(data = mat.df.PLOT, | |
aes(x = sCond, | |
y = s | |
) | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + scale_colour_brewer(palette="Set1") | |
obj.gg2.PLOT <- obj.gg2.PLOT + stat_smooth(method = "lm", se = FALSE, colour = "blue", size = 1) | |
obj.gg2.PLOT <- obj.gg2.PLOT + geom_point(size = 0.50, alpha = 0.50) | |
## obj.gg2.PLOT <- obj.gg2.PLOT + scale_x_continuous(limits = c(0,3), breaks = c(0.50, 1.00, 1.5, 2, 2.5), labels = c("$\\sfrac{1}{2}$", "$1$", "$\\sfrac{3}{2}$", "$2$", "$\\sfrac{5}{2}$")) | |
obj.gg2.PLOT <- obj.gg2.PLOT + ylab("$s_n$") | |
obj.gg2.PLOT <- obj.gg2.PLOT + xlab("$\\mathrm{E}[s_n|\\Delta x_{n,1}]$") | |
## obj.gg2.PLOT <- obj.gg2.PLOT + labs(group = "", colour = "") | |
obj.gg2.PLOT <- obj.gg2.PLOT + theme(plot.margin = unit(c(1,0.15,0.15,0.15), "lines"), | |
plot.title = element_text(vjust = 1.75), | |
legend.position = c(0.05, 0.90), | |
legend.background = element_blank(), | |
axis.text = element_text(size = 6), | |
axis.title = element_text(size = 10), | |
panel.grid.minor = element_blank() | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + ggtitle("Kyle (1985) Model Solution: Signal Updating") | |
print(obj.gg2.PLOT) | |
dev.off() | |
system(paste('lualatex', file.path(scl.str.TEX_FILE)), ignore.stdout = TRUE) | |
system(paste('convert -density 600', file.path(scl.str.PDF_FILE), ' ', file.path(scl.str.PNG_FILE))) | |
system(paste('mv ', scl.str.PNG_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.TEX_FILE, sep = '')) | |
system(paste('mv ', scl.str.PDF_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.AUX_FILE, sep = '')) | |
system(paste('rm ', scl.str.LOG_FILE, sep = '')) | |
## Plot price vs value | |
theme_set(theme_bw()) | |
mat.df.SIM$p1Diff <- mat.df.SIM$v - mat.df.SIM$p1 | |
mat.df.SIM$p1Diff2 <- mat.df.SIM$p1Diff^2 | |
obj.lm.RESULT1A <- summary(lm(p1Diff ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT1B <- summary(lm(p1Diff2 ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT1C <- summary(lm(v ~ p1, data = mat.df.SIM)) | |
mat.df.SIM$p2Diff <- mat.df.SIM$v - mat.df.SIM$p2 | |
mat.df.SIM$p2Diff2 <- mat.df.SIM$p2Diff^2 | |
obj.lm.RESULT2A <- summary(lm(p2Diff ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT2B <- summary(lm(p2Diff2 ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT2C <- summary(lm(v ~ p2, data = mat.df.SIM)) | |
mat.df.SIM$dp2 <- (mat.df.SIM$p2 - mat.df.SIM$p1) | |
mat.df.SIM$dp1 <- mat.df.SIM$p1 | |
mat.df.SIM$dpDiff <- mat.df.SIM$dp2 - mat.df.SIM$dp1 | |
mat.df.SIM$dpDiff2 <- mat.df.SIM$dpDiff^2 | |
obj.lm.RESULT3A <- summary(lm(dpDiff ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT3B <- summary(lm(dpDiff2 ~ 1, data = mat.df.SIM)) | |
obj.lm.RESULT3C <- summary(lm(dp2 ~ dp1, data = mat.df.SIM)) | |
obj.lm.RESULT3D <- summary(lm(dpDiff ~ dp1, data = mat.df.SIM)) | |
obj.lm.RESULT3E <- summary(lm(dpDiff2 ~ dp1, data = mat.df.SIM)) | |
obj.lm.RESULT3F <- summary(lm(dp2 ~ p1, data = mat.df.SIM)) | |
mat.df.PLOT <- mat.df.SIM[, c("i", "v", "p1", "p2")] | |
mat.df.PLOT <- melt(mat.df.PLOT, c("i", "v")) | |
mat.df.PLOT$time <- "$t=1$" | |
mat.df.PLOT[mat.df.PLOT$variable == "p2", ]$time <- "$t=2$" | |
scl.str.RAW_FILE <- 'plot--2-period-kyle-model--price-vs-value--11aug2014' | |
scl.str.TEX_FILE <- paste(scl.str.RAW_FILE,'.tex',sep='') | |
scl.str.PDF_FILE <- paste(scl.str.RAW_FILE,'.pdf',sep='') | |
scl.str.PNG_FILE <- paste(scl.str.RAW_FILE,'.png',sep='') | |
scl.str.AUX_FILE <- paste(scl.str.RAW_FILE,'.aux',sep='') | |
scl.str.LOG_FILE <- paste(scl.str.RAW_FILE,'.log',sep='') | |
tikz(file = scl.str.TEX_FILE, height = 2, width = 7, standAlone=TRUE) | |
obj.gg2.PLOT <- ggplot(data = mat.df.PLOT, | |
aes(x = value, | |
y = v, | |
group = time | |
) | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + scale_colour_brewer(palette="Set1") | |
obj.gg2.PLOT <- obj.gg2.PLOT + stat_smooth(method = "lm", se = FALSE, colour = "blue", size = 1) | |
obj.gg2.PLOT <- obj.gg2.PLOT + geom_point(size = 0.50, alpha = 0.50) | |
## obj.gg2.PLOT <- obj.gg2.PLOT + scale_x_continuous(limits = c(0,3), breaks = c(0.50, 1.00, 1.5, 2, 2.5), labels = c("$\\sfrac{1}{2}$", "$1$", "$\\sfrac{3}{2}$", "$2$", "$\\sfrac{5}{2}$")) | |
obj.gg2.PLOT <- obj.gg2.PLOT + ylab("$v_n$") | |
obj.gg2.PLOT <- obj.gg2.PLOT + xlab("$p_{n,t}$") | |
## obj.gg2.PLOT <- obj.gg2.PLOT + labs(group = "", colour = "") | |
obj.gg2.PLOT <- obj.gg2.PLOT + facet_wrap( ~ time, ncol = 2) | |
obj.gg2.PLOT <- obj.gg2.PLOT + theme(plot.margin = unit(c(1,0.15,0.15,0.15), "lines"), | |
plot.title = element_text(vjust = 1.75), | |
legend.position = c(0.05, 0.90), | |
legend.background = element_blank(), | |
axis.text = element_text(size = 6), | |
axis.title = element_text(size = 10), | |
panel.grid.minor = element_blank() | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + ggtitle("Kyle (1985) Model Solution: Price vs. Value") | |
print(obj.gg2.PLOT) | |
dev.off() | |
system(paste('lualatex', file.path(scl.str.TEX_FILE)), ignore.stdout = TRUE) | |
system(paste('convert -density 600', file.path(scl.str.PDF_FILE), ' ', file.path(scl.str.PNG_FILE))) | |
system(paste('mv ', scl.str.PNG_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.TEX_FILE, sep = '')) | |
system(paste('mv ', scl.str.PDF_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.AUX_FILE, sep = '')) | |
system(paste('rm ', scl.str.LOG_FILE, sep = '')) | |
mat.df.PLOT <- mat.df.SIM[, c("i", "dp2", "p1")] | |
scl.str.RAW_FILE <- 'plot--2-period-kyle-model--price-change-predictability--11aug2014' | |
scl.str.TEX_FILE <- paste(scl.str.RAW_FILE,'.tex',sep='') | |
scl.str.PDF_FILE <- paste(scl.str.RAW_FILE,'.pdf',sep='') | |
scl.str.PNG_FILE <- paste(scl.str.RAW_FILE,'.png',sep='') | |
scl.str.AUX_FILE <- paste(scl.str.RAW_FILE,'.aux',sep='') | |
scl.str.LOG_FILE <- paste(scl.str.RAW_FILE,'.log',sep='') | |
tikz(file = scl.str.TEX_FILE, height = 2, width = 7, standAlone=TRUE) | |
obj.gg2.PLOT <- ggplot(data = mat.df.PLOT, | |
aes(x = p1, | |
y = dp2 | |
) | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + scale_colour_brewer(palette="Set1") | |
obj.gg2.PLOT <- obj.gg2.PLOT + stat_smooth(method = "lm", se = FALSE, colour = "blue", size = 1) | |
obj.gg2.PLOT <- obj.gg2.PLOT + geom_point(size = 0.50, alpha = 0.50) | |
## obj.gg2.PLOT <- obj.gg2.PLOT + scale_x_continuous(limits = c(0,3), breaks = c(0.50, 1.00, 1.5, 2, 2.5), labels = c("$\\sfrac{1}{2}$", "$1$", "$\\sfrac{3}{2}$", "$2$", "$\\sfrac{5}{2}$")) | |
obj.gg2.PLOT <- obj.gg2.PLOT + xlab("$p_{n,1}$") | |
obj.gg2.PLOT <- obj.gg2.PLOT + ylab("$\\Delta p_{n,2} = p_{n,2} - p_{n,1}$") | |
## obj.gg2.PLOT <- obj.gg2.PLOT + labs(group = "", colour = "") | |
obj.gg2.PLOT <- obj.gg2.PLOT + theme(plot.margin = unit(c(1,0.15,0.15,0.15), "lines"), | |
plot.title = element_text(vjust = 1.75), | |
legend.position = c(0.05, 0.90), | |
legend.background = element_blank(), | |
axis.text = element_text(size = 6), | |
axis.title = element_text(size = 10), | |
panel.grid.minor = element_blank() | |
) | |
obj.gg2.PLOT <- obj.gg2.PLOT + ggtitle("Kyle (1985) Model Solution: Price Change Predictability") | |
print(obj.gg2.PLOT) | |
dev.off() | |
system(paste('lualatex', file.path(scl.str.TEX_FILE)), ignore.stdout = TRUE) | |
system(paste('convert -density 600', file.path(scl.str.PDF_FILE), ' ', file.path(scl.str.PNG_FILE))) | |
system(paste('mv ', scl.str.PNG_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.TEX_FILE, sep = '')) | |
system(paste('mv ', scl.str.PDF_FILE, ' ', scl.str.FIG_DIR, sep = '')) | |
system(paste('rm ', scl.str.AUX_FILE, sep = '')) | |
system(paste('rm ', scl.str.LOG_FILE, sep = '')) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment