--- name: generate_gbm_prices kind: function lang: py domain: finance version: "1.0.0" purity: pure signature: "generate_gbm_prices(initial_price: float, n_ticks: int, sigma: float, mu: float, jump_intensity: float, jump_size_std: float, seed: int) -> list[float]" description: "Genera serie de precios fundamentales con Geometric Brownian Motion + jump-diffusion. S(t+1) = S(t) * exp((mu - sigma^2/2)*dt + sigma*sqrt(dt)*Z + J*N)." tags: [simulation, gbm, price, montecarlo, finance, stochastic] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: [numpy] params: - name: initial_price desc: "precio inicial S(0) del activo subyacente (ej: 100.0)" - name: n_ticks desc: "numero de ticks/pasos en la simulacion (ej: 1000). Determina len(resultado)." - name: sigma desc: "volatilidad anualizada (ej: 0.02 para 2% por tick). Controlador clave del ruido." - name: mu desc: "drift anualizado (ej: 0.0 para random walk, 0.05 para uptrend). Retorno esperado por tick." - name: jump_intensity desc: "probabilidad de salto por tick en rango [0, 1] (ej: 0.01 para 1% por tick). 0.0 = GBM puro." - name: jump_size_std desc: "desviacion estandar del tamanio de los saltos (ej: 0.05 para jumps de ~5%). Normal(0, jump_size_std)." - name: seed desc: "semilla para reproducibilidad deterministica (ej: 42)" output: "lista de precios con len(resultado) == n_ticks. resultado[0] == initial_price." tested: false tests: [] test_file_path: "" file_path: "python/functions/finance/finance.py" --- ## Ejemplo ```python prices = generate_gbm_prices( initial_price=100.0, n_ticks=1000, sigma=0.02, mu=0.0, jump_intensity=0.01, jump_size_std=0.05, seed=42, ) # prices[0] == 100.0 # len(prices) == 1000 ``` ## Notas Funcion pura — el seed fija el resultado deterministicamente. `jump_intensity=0.0` desactiva los saltos (GBM puro). `dt=1.0` por tick (tiempo discreto). Para tiempo continuo, ajustar sigma y mu en consecuencia. Requiere numpy para la generacion de numeros aleatorios y el calculo de exp.