Saltar al contenido
Finance & Banking
Evolution Program
Inicio / apps / onchain_fx_lab

Onchain FX Lab

Laboratorio de cambio de divisas sobre registros de la Parte 21. Tres módulos que implementan el coste total por ruta, el creador de mercado automatizado y el riesgo de liquidación, con la biblioteca estándar y sin red.

Aviso

Todo lo que hay aquí es didáctico y trabaja con datos sintéticos. No se conecta a ninguna plataforma, no ejecuta ninguna operación real y no recomienda ninguna estrategia ni ningún proveedor.

Qué demuestra ejecutando

Afirmación habitual Lo que el laboratorio demuestra Clase
«El precio es el mismo» El mostrado esconde cuatro de los seis tramos 11
«Ahorra 33 puntos básicos» 9 tras medir la profundidad del libro 11
«Rinde un 12,6 % por comisiones» La divergencia se come una parte 13
«Siempre hay precio» Y puede ser ruinoso: dar precio no es dar liquidez 13
«Tenemos acuerdo de neteo» Solo vale si es oponible en concurso 12

Estructura

apps/onchain_fx_lab/
├── README.md
├── __init__.py
├── pricing.py     rutas, tramos y corrección por profundidad
├── amm.py         producto constante, deslizamiento y divergencia
├── settlement.py  ventana, neteo, límites y pago contra pago
└── cli.py

Uso

Comparar el coste total en un par principal y en uno poco líquido:

python apps/onchain_fx_lab/cli.py pricing --notional 3000000

Medir el deslizamiento y la pérdida por divergencia:

python apps/onchain_fx_lab/cli.py amm --rounds 4

Comparar los mecanismos de riesgo de liquidación contra la misma base:

python apps/onchain_fx_lab/cli.py settlement

Pruebas

python -m pytest tests/test_onchain_fx_lab.py -q

Dos de ellas documentan un error de razonamiento y deben pasar:

Decisiones de diseño que conviene mirar

Cada mecanismo se compara con la pérdida sin ningún mecanismo. Es la trampa de la clase 12: comparar el pago contra pago con la pérdida que el neteo ya redujo invierte la conclusión. Comparacion.evaluar() devuelve las cuatro filas contra la misma base para que el error no se pueda cometer.

neteo_oponible es un parámetro y no un supuesto silencioso. Un acuerdo firmado que no es oponible en el concurso de la contraparte no reduce nada, y el código lo modela: con False, el neteo da exactamente el mismo total que no tener mecanismo.

La ventana va de irrevocable a confirmado. ventana_de_exposicion recibe la hora de irrevocabilidad y la de confirmación, no las de envío, y admite días no hábiles para calcular el peor caso, que es el viernes y es recurrente.

La piscina nunca se vacía, y eso no es una buena noticia. Es la propiedad del producto constante: siempre hay precio, y ese precio puede ser ruinoso. Dar precio no es lo mismo que dar liquidez.

Mecanismo.forma_precio distingue los tres orígenes. Solo un libro propio forma precio; el oráculo lo copia y la fórmula lo deriva de sus reservas. Es lo que sostiene que el registro consume precio en vez de formarlo.

razon_que_anula_las_comisiones se resuelve por bisección sobre un tramo donde la función es monótona, de modo que converge siempre y no depende de un punto de partida afortunado.

Límites declarados

Referencias