Thursday , June 20 2024
Home / Lars P. Syll / Gambler’s ruin — a Markov process analysis (student stuff)

Gambler’s ruin — a Markov process analysis (student stuff)

Summary:
Gambler’s ruin — a Markov process analysis (student stuff) .[embedded content] Below you will find a little Python script yours truly made to simulate a betting scenario as a Markov process and visualise how the total amount of money changes over time. This model highlights that, due to a higher probability of losing, the total money will generally trend downwards over a large number of bets. import numpy as np # Define the transition matrix B B = np.array([ [1, 0, 0, 0], [0.51, 0, 0.49, 0], [0, 0.51, 0, 0.49], [0, 0, 0, 1] ]) # Define the initial state vector v25 v25 = np.array([0, 1, 0, 0]) # Function to compute the state vector after n steps def markov_steps(B, v, n): state_vector = v for _ in range(n): state_vector = state_vector.dot(B) return

Topics:
Lars Pålsson Syll considers the following as important:

This could be interesting, too:

Lars Pålsson Syll writes Random Walk (student stuff)

Lars Pålsson Syll writes The Beta distribution (student stuff)

Lars Pålsson Syll writes The ‘Just One More’ Paradox (student stuff)

Lars Pålsson Syll writes Monte Carlo simulation explained (student stuff)

Gambler’s ruin — a Markov process analysis (student stuff)

.

Below you will find a little Python script yours truly made to simulate a betting scenario as a Markov process and visualise how the total amount of money changes over time. This model highlights that, due to a higher probability of losing, the total money will generally trend downwards over a large number of bets.

import numpy as np
# Define the transition matrix B
B = np.array([
[1, 0, 0, 0],
[0.51, 0, 0.49, 0],
[0, 0.51, 0, 0.49],
[0, 0, 0, 1]
])
# Define the initial state vector v25
v25 = np.array([0, 1, 0, 0])
# Function to compute the state vector after n steps
def markov_steps(B, v, n):
state_vector = v
for _ in range(n):
state_vector = state_vector.dot(B)
return state_vector
# Number of steps to simulate
num_steps = 25
# Compute the state vector after 25 steps
v_final = markov_steps(B, v25, num_steps)
# Print the final state vector
print(f”State vector after {num_steps} steps: {v_final}”)
# Optional: Plot the evolution of the state vector
import matplotlib.pyplot as plt
# Compute the state vector evolution
state_vectors = [v25]
for i in range(1, num_steps + 1):
state_vectors.append(markov_steps(B, v25, i))
# Convert to numpy array for easier plotting
state_vectors = np.array(state_vectors)
# Plot the evolution of the state vector
plt.plot(state_vectors)
plt.xlabel(‘Number of Steps’)
plt.ylabel(‘State Probability’)
plt.title(‘Markov Process: Evolution of State Vector’)
plt.legend([‘State 1’, ‘State 2’, ‘State 3’, ‘State 4’])
plt.show()

Lars Pålsson Syll
Professor at Malmö University. Primary research interest - the philosophy, history and methodology of economics.

Leave a Reply

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