01 · Punto de partida
El papel antes que el código
Muchas simulaciones fallan antes de correr: mezclan entradas con salidas, esconden supuestos o evalúan otra pregunta. El modelo conceptual es el plano en papel: qué es aleatorio, qué es decisión, qué fórmula une ambos y qué se reporta.
En Monte Carlo estático el plano es simple y siempre igual: entradas → modelo → salidas, más supuestos escritos.
- ¿Qué pregunta debe responder la simulación?
- ¿Qué entradas son aleatorias y con qué F?
- ¿Qué parámetros decide el usuario?
- ¿Qué salidas se promedian y qué decisión toman?
02 · Definición
Las cuatro cajas
Entradas
Lo incierto sorteado (demanda, costo) y la decisión a evaluar (Q, precio). Cada entrada dice su F o su valor.
Modelo
Función pura sin tiempo: y = g(x). Ejemplo: utilidad = ingreso − costo.
Salidas
Lo que se mide por réplica y se promedia: ganancia media, P(pérdida), π estimado, integral.
| Caja | Contenido | Ejemplo |
|---|---|---|
| Entradas aleatorias | Variables con F | Costo ~ Normal(100, 15) |
| Parámetros / decisión | Valores fijos a comparar | Ingreso = 150, umbral = 120 |
| Modelo | Fórmula instantánea | Utilidad = 150 − costo |
| Salidas | Estimaciones con error | Utilidad media, P(costo > 120) |
| Supuestos | Lo que se da por cierto | Costos iid, sin inflación, N = 10 000 |
03 · Cómo armarlo
Del enunciado al esquema en 4 pasos
- 1Escribir la pregunta.
«¿Qué Q maximiza la ganancia media?» y no «simular el negocio». Una pregunta = un modelo.
- 2Listar entradas.
Separar aleatorias (con F) de decisiones (valores a probar). Nada de «demanda más o menos 100».
- 3Escribir g(x).
Una fórmula por salida, con unidades. Si lleva tiempo o «si ayer…», no es estática.
- 4Definir salidas y supuestos.
Media, probabilidad, intervalo. Y por escrito: iid, N, semilla, límites.
- Supuesto
- Decisión explícita que sostiene el modelo: distribución elegida, independencia, rango válido. Se escribe, no se esconde.
- Parámetro
- Constante del modelo que podés variar para decidir: Q, precio, umbral. No se sortea, se prueba.
- Frontera
- Qué queda dentro y qué fuera: un periodo, un producto, un horizonte. Todo lo fuera entra como supuesto.
04 · Ejemplos
Tres planos en una línea cada uno
- 1Diarios.
Entradas: D en {80,100,120}; decisión Q. Modelo: 5·min(Q,D)−2·Q. Salida: media. Supuesto: demandas iid.
- 2π.
Entradas: (x,y) ~ U². Modelo: dentro = x²+y² ≤ 1. Salida: 4·dentro/N. Supuesto: uniforme real.
- 3Garantía.
Entrada: falla ~ Bernoulli(0,05). Modelo: costo = 200·falla. Salida: costo medio. Supuesto: p constante.
05 · Representación en Python
El plano se vuelve diccionario y función
El modelo conceptual cabe en un diccionario (qué es qué) y una función pura (cómo se calcula). La simulación solo itera.
Python en tu navegador. El diccionario documenta; la función calcula. Cambiá el ingreso y repetí.
modelo = {
"pregunta": "¿Cuál es la utilidad media si el ingreso es 150?",
"entradas": {"costo": "Normal(100, 15)"},
"parametros": {"ingreso": 150},
"modelo": "utilidad = ingreso - costo",
"salidas": ["utilidad media", "P(costo > 120)"],
"supuestos": ["costos iid", "N = 10000"],
}
def utilidad(costo, ingreso=150):
return ingreso - costo
print(modelo["pregunta"])
print(utilidad(110))
import random
def simular_utilidad(N, ingreso=150, mu=100, sigma=15):
tot, caros = 0, 0
for _ in range(N):
costo = random.gauss(mu, sigma)
tot += ingreso - costo
if costo > 120:
caros += 1
return tot / N, caros / N
print(simular_utilidad(10000))
06 · Exploración
Laboratorio: mover una entrada, mover la salida
Cambiamos el costo medio μ y miramos la utilidad 150 − costo. El histograma se desplaza entero: el modelo conceptual predice antes de correr.
Entradas → modelo → salidas
utilidad = 150 − costo, costo ~ N(μ, 15)
Tocá «Simular» para evaluar el modelo.
Barras: distribución de la utilidad. La media debe caer sobre 150 − μ. Si subís μ, todo el histograma viaja a la izquierda.
Preguntas para explorar
- Con μ = 100, ¿la media ronda 50? ¿Y con μ = 120?
- ¿Por qué el ancho del histograma no cambia al mover μ?
- ¿Qué parte del dibujo es entrada, cuál modelo y cuál salida?
Ver respuestas sugeridas
- Sí: 150 − 100 = 50 y 150 − 120 = 30. El modelo lo anticipa sin simular.
- Porque solo moviste la media; σ = 15 sigue igual. El ancho lo manda σ, la posición la manda μ.
- Entrada: μ y cada costo sorteado. Modelo: 150 − costo. Salida: media y P(costo > 120).
07 · Comprensión
Confusiones frecuentes
«El modelo es el programa»
No: el modelo es la fórmula y el plano (utilidad = ingreso − costo). El programa solo la repite N veces.
«Todo lo que influye va dentro»
Si entra todo, el modelo es inmanejable. Lo no sorteado va a supuestos o a parámetros fijos.
«Los supuestos se sobreentienden»
Nunca: iid, F elegida, N y frontera se escriben. Dos supuestos distintos dan decisiones distintas.
«Más detalle es mejor modelo»
Más detalle pide más datos y más F por justificar. El modelo debe responder la pregunta, no impresionarla.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: escribir el plano
Completá el diccionario para π por puntos y ejecutalo.
plano_pi = {
"pregunta": "¿Cuánto vale pi por puntos?",
"entradas": {"x": "U(0,1)", "y": "U(0,1)"},
"modelo": "dentro = (x*x + y*y <= 1); pi = 4*dentro/N",
"salidas": ["pi estimado"],
"supuestos": ["puntos iid uniformes"],
}
print(plano_pi["modelo"])
Ver solución razonada
El plano cabe en 5 líneas y ya dice cómo programar: sortear x, y; evaluar dentro; promediar por 4.
Ejercicio 2: predecir sin correr
Si ingreso = 150 y costo ~ N(110, 10), ¿qué utilidad media esperás? Comprobalo.
import random
def media(N, ingreso=150, mu=110, sigma=10):
return sum(ingreso - random.gauss(mu, sigma) for _ in range(N)) / N
print(media(10000))
Ver solución
150 − 110 = 40. Verás ~40 ± 0,3. El modelo conceptual predice; la simulación confirma.
Ejercicio 3: separar piezas
Dividí en generar(), modelo() y simular() el caso garantía: falla ~ Bernoulli(0,05), costo = 200·falla.
Ver una posible respuesta
import random
def generar():
return 1 if random.random() < 0.05 else 0
def modelo(falla):
return 200 * falla
def simular(N):
return sum(modelo(generar()) for _ in range(N)) / N
print(simular(20000))
Verás ~10. Cada pieza se testea sola: el plano se vuelve código limpio.
09 · Síntesis
Ideas para recordar
- El plano va primero: pregunta, entradas, modelo, salidas y supuestos.
- El modelo estático es una función pura y = g(x), sin tiempo.
- Separar aleatorias (con F) de parámetros (a probar) evita half de los errores.
- En Python: diccionario que documenta + función que calcula + bucle que promedia.
- Si el modelo predice la media (150 − μ), la simulación solo la confirma.
En el próximo tema distinguiremos las variables de entrada: qué sortear, con qué F y con qué datos.