Estoy tratando de fijar el precio de un bono convertible utilizando un árbol binomial. Para ello, escribí un árbol binomial para el precio de las acciones. Me he dado cuenta de que al cambiar el tamaño de los pasos (timesteps), cambia el valor final de mis precios de las acciones significativamente. Intuitivamente esto es incorrecto, ya que los movimientos de subida y bajada deberían ser escalados en consecuencia. Me imagino que esto también cambiará el precio del bono convertible.
Pensé en establecer $u = \text{e}^{\sigma\sqrt{dt}}$ podría hacer el truco. ¿Alguien podría decirme qué estoy haciendo mal? Gracias.
import numpy as np
import math as math
S0 = 100 #Initial stock price
T = 5 #Maturity
timesteps = 16 #Amount of steps in the three
dt = T/timesteps #Step size
sigma = 0.28 #Vol
r = 0.01 #Interest rate
N = 300 #Notional amount (for convertible bond)
kappa = N/S0 #Conversion rate (for convertible bond)
c = 0.05 #Coupomn rate (for convertible bond)
u = np.exp(sigma*math.sqrt(dt))
d = 1/u
p = (np.exp(r*dt)-d)/(u-d)
S = np.zeros((timesteps,timesteps))
for i in range(timesteps):
for j in range(timesteps):
S[j,i] = S0*(u**(i-j))*(d**j)
S = np.triu(S)