Simulated Random Walk in MATLAB

Put in simple terms, a Random Walk basically involves taking successive random steps and tracing the trajectory. I adapted the example from part one of Wilmott on Quantitative Finance and wrote a quick MATLAB script to simulate a simple random walk. Basically flip a coin if it is heads multiply the equity seed by 1.01 and if its tails multiply by 0.99.

Results

The graphs below show successive runs of the script. I simulated 10,000 coin tosses in each test.

Simulated Random Walk Matlab .m fileSimulated Random Walk – Sim One: You flipped 5000 heads & 5000 tails

Simulated Random Walk 2 Matlab .m File

Simulated Random Walk – Sim Two: You flipped 5077 heads & 4923 tails

Simulated Random Walk 3 Matlab .m File

Simulated Random Walk – Sim Three: You flipped 4890 heads & 5110 tails

MATLAB Code

Writing the code in MATLAB is very straightforward I wrote the code in less then five minutes so it is a bit rough around the edges. I probably could refactor it but it does the job.

% Simple Simulated Random Walk Adapted  
% from part 1 Paul Wilmott on Quant Fin  
% create matrix with random int either 1 or 2 
randMat = randi(2,10000,1); 
randEquity = [1:10000];  
headCount = 0; 
tailCount = 0; 
equitySeed = 100.00;  
for i=1:10000     
    if randMat(i)==1         
        % we flipped a heads         
        headCount = headCount + 1;         
        equitySeed = 1.01 * equitySeed;         
        randEquity(i) = equitySeed;     
    else
        % must have flipped tails         
        tailCount = tailCount + 1;         
        equitySeed = 0.99 * equitySeed;         
        randEquity(i) = equitySeed;     
    end
end
fprintf('You flipped %i heads & %i tails\n', headCount, tailCount); 
plot(randEquity); 
title('\bf \fontname{Arial} \fontsize{16}Simulated Random Walk'); 
xlabel('\bf \fontname{Arial} \fontsize{12}Number of Coin Tosses'); 
ylabel('\bf \fontname{Arial} \fontsize{12}Price in ($)');  
% clean-up 
clear equitySeed headCount tailCount randMat i;

 

Leave a Reply

Your email address will not be published. Required fields are marked *