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 hidden or 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 hidden or 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