---
name: generate_taker_order
kind: function
lang: py
domain: finance
version: "1.0.0"
purity: pure
signature: "generate_taker_order(alpha: float, size_min: float, size_max: float, buy_prob: float, seed: int | None) -> dict"
description: "Genera una market order de taker con tamano distribuido segun power-law (Pareto). Alpha bajo produce ordenes mas grandes (ballenas)."
tags: [simulation, taker, power-law, montecarlo, finance, order-book]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [numpy]
params:
  - name: alpha
    desc: "exponente de la distribucion Pareto (rango tipico: 1.5-3.0). Menor alpha = colas mas pesadas y ordenes mas grandes."
  - name: size_min
    desc: "tamanio minimo de orden (ej: 1.0)"
  - name: size_max
    desc: "tamanio maximo de orden (clipping superior, ej: 100.0)"
  - name: buy_prob
    desc: "probabilidad de que la orden sea BUY en rango [0, 1] (ej: 0.5 para igual BUY/SELL)"
  - name: seed
    desc: "semilla para reproducibilidad (int o None). Si None, no deterministica."
output: "dict con campos {'side': 'buy'|'sell', 'qty': float redondeado a 1 decimal}"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/finance/finance.py"
---

## Ejemplo

```python
order = generate_taker_order(
    alpha=2.0,
    size_min=1.0,
    size_max=100.0,
    buy_prob=0.5,
    seed=42,
)
# {'side': 'buy', 'qty': 3.7}
```

## Notas

Funcion pura cuando se fija seed. Con seed=None el resultado es no deterministico.
La distribucion Pareto con alpha=2 modela bien la distribucion empirica de tamaños de ordenes en mercados reales.
`size_max` actua como techo (clipping) para evitar ordenes extremas.
Retorna dict con keys: `side` ('buy' o 'sell') y `qty` (float redondeado a 1 decimal).
