p = 1/2 ## Build the grid that represents the possible outcomes at each point in time to plot: ## reductions = c(-1, +1) ## how much does our price change n_steps = 3 seg_x0 = c() seg_y0 = c() seg_x1 = c() seg_y1 = c() current_nodes = c(0) ## the initial price for( yi in 1:n_steps ){ new_current_nodes = c() for( pti in 1:length(current_nodes) ){ xx = yi-1 yy = current_nodes[pti] ## Create a segment from (xx, yy) -> (xx+1, yy + reduction): ## for( rai in 1:length(reductions) ){ xxp = xx+1 yyp = yy + reductions[rai] new_current_nodes = c(new_current_nodes, yyp) seg_x0 = c(seg_x0, xx) seg_y0 = c(seg_y0, yy) seg_x1 = c(seg_x1, xxp) seg_y1 = c(seg_y1, yyp) } } current_nodes = new_current_nodes } ##print(cbind(seg_x0, seg_y0, seg_x1, seg_y1)) ##postscript('../../WriteUp/Graphics/Chapter12/chap_12_ex_9_outcomes.eps', onefile=FALSE, horizontal=FALSE) plot(NULL, xlim=c(0, max(c(seg_x0, seg_x1))+0.5), ylim=c(min(c(seg_y0, seg_y1)), max(c(seg_y0, seg_y1))), xlab='toss number', ylab='N_heads - N_tails', xaxt='n') segments(seg_x0, seg_y0, seg_x1, seg_y1) axis(1, at=0:4, labels=c('0','1','2','3','4')) final_state = sort(unique(seg_y1[seg_x1==n_steps]), decreasing=T) points(rep(4, length(final_state)), final_state, type='p', pch=19) text(rep(n_steps, length(final_state))+0.1, final_state, labels=c(27, 27, 0, 0)) text(0.25, 0, labels='V_1') text(1.25, -1, labels='V_2') text(1.25, 1, labels='V_3') text(2.25, -2, labels='V_4') text(2.25, 0, labels='V_5') text(2.25, 2, labels='V_6') points(rep(2, 3), c(-2, 0, 2), type='p', pch=19) text(rep(2, 3), c(-1.75, 0.25, 2.25), labels=c(0, 9, 27)) points(rep(1, 2), c(-1, 1), type='p', pch=19) text(rep(1, 2), c(-0.75, 1.25), labels=c(3, 15)) points(0, 0, type='p', pch=19) text(0, 0.25, labels=c(7)) ##dev.off() print('In three coin flips N_heads - N_tails= ') print(round(final_state, 2))