Fed rate cut in December?
EconomicsDecember meetingSettles from Federal Reserve
Work in a notebook
Monte Carlo to resolution
How could a 68¢ price evolve over the next 18 days? Simulate 20,000 paths and inspect the range of outcomes.
1vq.mc.seed(7)2var history = market.history.filter(p => !p.live)3var hourlySd = vq.stats.std(vq.stats.diff(history.map(p => p.close)))4var days = Array.from({ length: 145 }, (_, step) => step / 8)5var paths = vq.mc.run(20000, () => {6 var path = [market.price.yesCents]7 for (var step = 1; step < days.length; step++) {8 var shock = vq.mc.normal(0, hourlySd * Math.sqrt(3))9 path.push(Math.min(99, Math.max(1, path[step - 1] + shock)))10 }11 return path12})13var fan = vq.plot.fan(paths, {14 x: days, title: "20,000 possible price paths", xLabel: "Days ahead", yFmt: "cents"15})16paths.slice(0, 8).forEach((path, i) => fan.chart.series.push({17 name: "Sample path " + (i + 1), points: path.map((y, step) => ({ x: days[step], y }))18}))19vq.show(fan)20var finals = paths.map(path => path.at(-1))21vq.show(vq.plot.hist(finals, { bins: 36, title: "Where the paths end", xLabel: "YES price (¢)" }))22vq.show(vq.table([10, 50, 90].map(p => ({23 measure: p === 50 ? "Median" : p + "th percentile", cents: vq.stats.quantile(finals, p / 100)24})), { title: "Day 18 · Price percentiles" }))Assumptions: zero drift, normally distributed three-hour shocks, volatility scaled from the hourly sample, prices bounded at 1–99¢. Bands show simulated price dispersion, not the probability of a rate cut.