---
title: "1.1.5 Costes, liquidación, apalancamiento y margen"
description: "Comisiones, horquilla efectiva y realizada, impacto, deslizamiento y financiación; liquidación T+1 y T+2; margen, apalancamiento y llamada de margen."
url: "https://pythonparatrading.com/curso-python-trading/nivel-1/costes-liquidacion-apalancamiento-y-margen/"
lang: "es"
image: "https://pythonparatrading.com/og/curso-python-trading/nivel-1/costes-liquidacion-apalancamiento-y-margen.png"
---

# 1.1.5 · Costes, liquidación, apalancamiento y margen

> Lo que cuesta operar casi nunca está en la factura del bróker: está en la horquilla, en el impacto y en el tiempo que pasa entre decidir y ejecutar. Esta lección mide esos costes con la sesión de NOVA, explica cuándo se liquida una operación y calcula a qué precio llega una llamada de margen.

- Curso: [Nivel 1: Datos financieros, mercados y análisis](https://pythonparatrading.com/curso-python-trading/nivel-1/)
- Módulo: 1.1 · Cómo funcionan los mercados
- Duración: 65 min
- Requisitos: [1.1.1 · Participantes y centros de negociación](https://pythonparatrading.com/curso-python-trading/nivel-1/participantes-y-centros-de-negociacion/), [1.1.3 · Libro de órdenes: bid, ask, spread y profundidad](https://pythonparatrading.com/curso-python-trading/nivel-1/libro-de-ordenes-bid-ask-y-profundidad/), [1.1.4 · Tipos de órdenes](https://pythonparatrading.com/curso-python-trading/nivel-1/tipos-de-ordenes/)

## Al terminar esta lección

- Separar los costes explícitos (comisiones, tasas, financiación) de los implícitos (horquilla, impacto, deslizamiento) y expresarlos en puntos básicos.
- Calcular la horquilla efectiva y la realizada de cada operación alineando la cinta con la cotización vigente sin anticipación.
- Construir una curva de impacto recorriendo el libro con órdenes de tamaño creciente y una cascada de costes de una orden concreta.
- Calcular fechas de liquidación con un calendario de bolsa y explicar el paso a T+1 en EE. UU. (2024) y en la UE (2027).
- Calcular el apalancamiento de una cuenta a margen y el precio al que salta una llamada de margen con los mínimos de Reg T y FINRA.

## Lo que cuesta una operación

El coste de una operación es la diferencia entre lo que habría ganado el sistema en un mundo sin fricciones y lo que
gana de verdad. Una parte se ve en el extracto del bróker; la mayor parte, no.

| Coste | Tipo | Cuándo se paga | Cómo se mide |
|---|---|---|---|
| Comisión del bróker | Explícito | Al ejecutar | Por acción, por operación o en % del importe |
| Tasas de mercado y regulatorias | Explícito | Al ejecutar (algunas solo en ventas) | Según la tarifa de cada mercado y país |
| Horquilla | Implícito | Al cruzarla | Media horquilla por cada lado |
| Impacto | Implícito | Al ejecutar una orden mayor que el primer nivel | Precio medio pagado frente al mejor precio |
| Deslizamiento (retraso) | Implícito | Entre la decisión y la ejecución | Precio de ejecución frente al de decisión |
| Financiación | Explícito | Cada día con la posición abierta | Interés del préstamo, coste de tomar prestados títulos |
| Oportunidad | Implícito | Si la orden no se ejecuta | Lo que habría ganado la parte no ejecutada |

La referencia para todos los implícitos es el **precio de decisión**: el precio medio en el instante en que el sistema
decide operar. La diferencia entre ese precio y lo que se acaba pagando, más los costes explícitos, se llama
*implementation shortfall*. Medirlo en **puntos básicos** (centésimas de punto porcentual) permite sumar costes de
naturaleza distinta y comparar activos de precios muy diferentes.

## Horquilla efectiva y horquilla realizada

La horquilla cotizada (lección 1.1.3) es lo que cuesta cruzar el libro si la orden cabe en el primer nivel. La
**horquilla efectiva** mide lo que se pagó de verdad en cada operación, contra el precio medio vigente justo antes:

$$
s_{\text{ef}} = 2\,D\,\frac{P - M_t}{M_t}
$$

donde $P$ es el precio de la operación, $M_t$ el medio vigente y $D = +1$ si el agresor compra y $-1$ si vende. El
factor 2 la hace comparable con la horquilla cotizada, que es una ida y vuelta. La **horquilla realizada** usa en su
lugar el medio unos segundos o minutos después, $M_{t+\Delta}$:

$$
s_{\text{real}} = 2\,D\,\frac{P - M_{t+\Delta}}{M_t}, \qquad
\text{impacto} = s_{\text{ef}} - s_{\text{real}}
$$

La realizada es lo que se queda quien dio la liquidez si deshace su posición al precio medio de ese momento. Si el
precio se mueve en la dirección del agresor, el proveedor de liquidez pierde parte de la horquilla, o toda: es la
**selección adversa**, y la diferencia entre las dos horquillas es el impacto en el precio de la operación.

Para calcularlas hay que unir cada operación con la cotización vigente **antes** de ella, con
`allow_exact_matches=False`, como en la lección 1.1.1, y con la cotización vigente en $t+\Delta$:

```python
import numpy as np
import pandas as pd

op = pd.read_parquet("nova_operaciones.parquet")
cot = pd.read_parquet("nova_cotizaciones.parquet")
cot["medio"] = (cot["bid"] + cot["ask"]) / 2
medios = cot[["ts", "medio"]]

reg = op[op["condicion"] == "regular"].copy()
reg = pd.merge_asof(reg, medios, on="ts", allow_exact_matches=False)
reg["D"] = np.where(reg["agresor"] == "compra", 1, -1)

def medio_en(ts):
    """Medio vigente en cada instante de `ts` (último cambio <= ts)."""
    m = pd.merge_asof(pd.DataFrame({"ts": ts}), medios, on="ts")
    return m["medio"].to_numpy()

reg["ef_pb"] = (2e4 * reg["D"] * (reg["precio"] - reg["medio"])
                / reg["medio"])
cols = ["ts", "precio", "agresor", "centro", "medio", "ef_pb"]
reg[cols].head(3).round({"ef_pb": 3})
```
```output
                                ts  precio agresor     centro  medio  ef_pb
0 2025-06-02 13:30:00.301051+00:00   53.34   venta  PRINCIPAL  53.35  3.749
1 2025-06-02 13:30:00.301052+00:00   53.34   venta  PRINCIPAL  53.35  3.749
2 2025-06-02 13:30:00.407366+00:00   53.34   venta  PRINCIPAL  53.35  3.749
```

```python
def media_pond(g, col):
    return np.average(g[col], weights=g["tamano"])

por_centro = reg.groupby("centro").apply(
    lambda g: pd.Series({"efectiva_pb": media_pond(g, "ef_pb"),
                         "operaciones": len(g)}))
por_centro.round(3)
```
```output
                efectiva_pb  operaciones
centro
INTERNALIZADOR        1.054       3914.0
MTF_A                 2.039       9640.0
MTF_B                 2.078       7230.0
OSCURO                0.000       4380.0
PRINCIPAL             2.074      25774.0
```

Los tres centros con libro cobran de media entre 2,04 y 2,08 puntos básicos de horquilla efectiva, algo más que la horquilla
cotizada típica de un tick (1,9 puntos básicos, lección 1.1.3) porque algunas órdenes barren más de un nivel. El
centro oscuro, que cruza al punto medio, tiene horquilla efectiva cero: ni comprador ni vendedor pagan horquilla. El
internalizador, que mejora a menudo el precio del libro (lección 1.1.1), cobra la mitad que los libros visibles. Para
un cliente, ese es el argumento económico de los dos.

Ahora la realizada, a varios horizontes, para las operaciones de los centros con libro:

```python
lit = reg[reg["centro"].isin(["PRINCIPAL", "MTF_A", "MTF_B"])].copy()
filas = {}
for h in ("1s", "10s", "1min", "5min"):
    m_desp = medio_en(lit["ts"] + pd.Timedelta(h))
    real = 2e4 * lit["D"] * (lit["precio"] - m_desp) / lit["medio"]
    ef = media_pond(lit, "ef_pb")
    rr = np.average(real, weights=lit["tamano"])
    filas[h] = {"efectiva": ef, "realizada": rr, "impacto": ef - rr}
pd.DataFrame(filas).T.round(2)
```
```output
      efectiva  realizada  impacto
1s        2.07       1.68     0.38
10s       2.07       0.27     1.80
1min      2.07      -6.95     9.02
5min      2.07     -14.47    16.54
```

A un segundo, el proveedor de liquidez conserva 1,68 de los 2,07 puntos básicos de la horquilla. A diez segundos,
casi nada. A un minuto y a cinco, la realizada es negativa: el precio ha seguido al agresor tanto que quien le dio la
liquidez pierde dinero si mantiene la posición. En la sesión simulada de NOVA, el flujo de órdenes agresoras es el que
mueve el precio, y eso se paga en la horquilla de quien provee liquidez. En datos reales la forma suele ser la misma
(la realizada cae con el horizonte), aunque las cifras dependen del valor y del día.

<aside class="callout" data-kind="aviso">

Las dos lecturas importan a un sistema. Si toma liquidez (órdenes de mercado), paga la horquilla efectiva. Si la da
(limitadas que esperan en el libro), cobra la horquilla, pero solo se ejecuta cuando alguien quiere cruzar, y a menudo
justo antes de que el precio se mueva en su contra. Un backtest que supone que las limitadas se ejecutan «al tocar»
el precio ignora esa selección adversa y sobrestima el resultado.

</aside>

## La curva de impacto

La horquilla efectiva media habla de órdenes pequeñas. Para una orden grande, lo que importa es cuánto libro tiene que
recorrer. Con las 2.340 fotos L2 de la sesión se puede simular una compra a mercado de cada tamaño en cada foto y
medir el coste medio contra el medio vigente:

```python
l2 = pd.read_parquet("nova_libro_l2.parquet")
tamanos = [100, 500, 1_000, 2_000, 5_000,
           10_000, 20_000, 30_000, 50_000]

def coste_pb(foto, n):
    a = foto[foto["lado"] == "ask"].sort_values("precio")
    b = foto[foto["lado"] == "bid"]
    medio = (a["precio"].iloc[0] + b["precio"].max()) / 2
    if a["tamano"].sum() < n:
        return np.nan                     # el libro visible no llega
    resto, gasto = n, 0.0
    for p, q in zip(a["precio"], a["tamano"]):
        t = min(resto, q)
        gasto, resto = gasto + t * p, resto - t
        if resto == 0:
            break
    return 1e4 * (gasto / n - medio) / medio

costes = {n: [] for n in tamanos}
for _, foto in l2.groupby("ts"):
    for n in tamanos:
        costes[n].append(coste_pb(foto, n))
curva = pd.DataFrame({n: pd.Series(v) for n, v in costes.items()}).T
pd.DataFrame({"coste_medio_pb": curva.mean(axis=1),
              "mediana_pb": curva.median(axis=1),
              "sin_liquidez_pct": 100 * curva.isna().mean(axis=1)}
             ).round(2)
```
```output
       coste_medio_pb  mediana_pb  sin_liquidez_pct
100              0.98        0.94              0.00
500              1.04        0.94              0.00
1000             1.10        0.94              0.00
2000             1.22        0.94              0.00
5000             1.55        0.95              0.00
10000            2.02        1.68              0.17
20000            2.82        2.40              1.20
30000            3.57        3.02              5.64
50000            5.33        4.81             48.46
```

*Fig. — Coste medio de una compra a mercado de NOVA según su tamaño, recorriendo cada una de las 2.340 fotos L2 de la sesión del 2 de junio de 2025.* Curva en escala logarítmica de tamaño, de 100 a 50.000 acciones. El coste sobre el precio medio se mantiene en torno a 1 punto básico hasta 2.000 acciones, sube a 1,55 con 5.000, 2,02 con 10.000, 2,82 con 20.000, 3,57 con 30.000 (destacado) y 5,33 con 50.000, tamaño para el que en casi la mitad de las fotos el libro visible no tiene liquidez suficiente.

Hasta 2.000 acciones, el coste apenas pasa de media horquilla: poco más de un punto básico. A partir de 5.000 la orden suele salir
del primer nivel y el coste se acelera: 2,0 puntos básicos con 10.000 acciones, 3,6 con 30.000. Con 50.000 la media es
de 5,3, y en casi la mitad de las fotos el libro visible ni siquiera tiene tantas acciones a la venta en diez niveles.
Esa es la razón por la que las órdenes grandes se parten en trozos y se reparten en el tiempo (los algoritmos TWAP y
VWAP de la lección 1.1.4) o se llevan a un centro oscuro (lección 1.1.1).

Dos advertencias. La curva es optimista: supone que el libro no reacciona mientras la orden lo recorre, y en la realidad
los proveedores de liquidez retiran órdenes en cuanto ven una orden grande. Y es de un solo lado: si la posición se
deshace después, se paga otra vez.

## Una orden, todos sus costes

La figura de la cabecera es la cascada de costes de una orden concreta. A las 15:00:00 de Nueva York un sistema decide
comprar 20.000 acciones de NOVA, con el precio medio a 52,745. La orden de mercado llega al libro diez segundos
después. El sistema paga una comisión supuesta de 0,005 USD por acción y financia la mitad de la compra a margen
durante cinco días a un tipo supuesto del 6 % anual (base 360). Las cifras del bróker son hipotéticas; las del libro,
las de la foto L2.

```python
def foto_en(ts):
    return l2[l2["ts"] == ts]

def precio_medio_compra(foto, n):
    a = foto[foto["lado"] == "ask"].sort_values("precio")
    resto, gasto = n, 0.0
    for p, q in zip(a["precio"], a["tamano"]):
        t = min(resto, q)
        gasto, resto = gasto + t * p, resto - t
        if resto == 0:
            break
    return gasto / n

def mejores(foto):
    return (foto.loc[foto["lado"] == "bid", "precio"].max(),
            foto.loc[foto["lado"] == "ask", "precio"].min())

n = 20_000
decision = sum(mejores(foto_en("2025-06-02 19:00:00+00:00"))) / 2
f10 = foto_en("2025-06-02 19:00:10+00:00")
bid10, ask10 = mejores(f10)
medio10 = (bid10 + ask10) / 2
pagado = precio_medio_compra(f10, n)

pb = lambda x: 1e4 * x / decision
cascada = pd.Series({
    "retraso": pb(medio10 - decision),
    "media_horquilla": pb(ask10 - medio10),
    "impacto": pb(pagado - ask10),
    "comision": pb(0.005),
    "financiacion": 1e4 * 0.5 * 0.06 * 5 / 360,
})
print(f"decisión {decision:.3f} · pagado {pagado:.4f}")
print(f"nominal {n * pagado:,.0f} USD")
cascada["total"] = cascada.sum()
cascada.round(2)
```
```output
decisión 52.745 · pagado 52.7693
nominal 1,055,386 USD
retraso            1.90
media_horquilla    0.95
impacto            1.76
comision           0.95
financiacion       4.17
total              9.72
dtype: float64
```

En diez segundos el precio medio sube un céntimo, de 52,745 a 52,755: 1,90 puntos básicos de **retraso** que se
pagan antes de tocar el libro (en esa foto el primer nivel estaba muy cargado a la compra, y la lección 1.1.3 mostró que
eso anticipa la subida). Después, media **horquilla**, 0,95, y el **impacto** de recorrer el libro más allá del mejor
ask, 1,76. La comisión supuesta añade 0,95. Los costes de ejecución suman 5,56 puntos básicos, unos 590 USD sobre
1,06 millones. Y la **financiación** de cinco días a margen añade 4,17 puntos básicos más: el coste más grande de la
cascada es el que no aparece en la ejecución.

<aside class="callout" data-kind="riesgo">

Un backtest que solo descuenta la comisión ve una parte pequeña del coste real. Para un sistema que rota la cartera a
menudo, 10 puntos básicos por operación son un 25 % anual de rentabilidad con 250 operaciones de ida y vuelta (lección
0.1.2). Modela al menos la media horquilla y un impacto que crezca con el tamaño, y suma la financiación si hay
apalancamiento.

</aside>

## Liquidación: T+1 en EE. UU., T+2 en Europa

Después de la operación, la entrega de los títulos contra el efectivo ocurre unos días hábiles más tarde: la
**liquidación** (lección 1.1.1). Hasta entonces, comprador y vendedor tienen un compromiso, no los títulos ni el
dinero.

```mermaid
flowchart LR
  T[T: negociación] --> C[T: compensación]
  C -->|liquidación| L1[T+1: EE. UU.]
  C -->|liquidación| L2[T+2: UE]
```

- **EE. UU.** liquida las acciones en T+1, el día hábil siguiente, desde el 28 de mayo de 2024, fecha de cumplimiento
  de las normas que la SEC aprobó en febrero de 2023[^1].
- **La Unión Europea** liquida en T+2 las operaciones sobre valores negociables ejecutadas en centros de negociación.
  El Reglamento (UE) 2025/2075, de 8 de octubre de 2025, que modifica el reglamento de depositarios centrales (CSDR),
  las pasa a T+1 a partir del 11 de octubre de 2027[^2].

[^1]: SEC, nota de prensa 2023-29, «SEC Finalizes Rules to Reduce Risks in Clearance and Settlement», 15 de febrero de
    2023: «The compliance date for the final rules is May 28, 2024».
[^2]: AMF, «Transition to T+1 settlement of transactions» (actualizada el 23 de abril de 2026). El texto del
    reglamento en EUR-Lex no se pudo leer de forma automática al preparar esta lección.

Los días hábiles se cuentan con un calendario, no sumando días naturales:

```python
import exchange_calendars as xcals

nyse = xcals.get_calendar("XNYS")
bme = xcals.get_calendar("XMAD")

for cal, n_dias, fechas in ((nyse, 1, ["2025-07-03", "2025-11-26",
                                       "2025-12-31"]),
                            (bme, 2, ["2025-04-16", "2025-12-23"])):
    for f in fechas:
        liq = cal.session_offset(f, n_dias)
        print(f"{cal.name}  operación {f} ({pd.Timestamp(f):%a})"
              f"  ->  T+{n_dias} {liq.date()} ({liq:%a})")
```
```output
XNYS  operación 2025-07-03 (Thu)  ->  T+1 2025-07-07 (Mon)
XNYS  operación 2025-11-26 (Wed)  ->  T+1 2025-11-28 (Fri)
XNYS  operación 2025-12-31 (Wed)  ->  T+1 2026-01-02 (Fri)
XMAD  operación 2025-04-16 (Wed)  ->  T+2 2025-04-22 (Tue)
XMAD  operación 2025-12-23 (Tue)  ->  T+2 2025-12-29 (Mon)
```

El 3 de julio de 2025 se liquida el lunes 7, porque el 4 la NYSE cierra; el 26 de noviembre, el viernes 28, saltando
Acción de Gracias. En Madrid, una venta del miércoles 16 de abril de 2025 se liquida el martes 22, porque Viernes Santo
y Lunes de Pascua no son hábiles. El calendario de la bolsa es una aproximación: el que manda es el del depositario y
el sistema de pagos, que puede no coincidir con el de la bolsa algún día del año (lección 1.1.2).

Para un sistema, la liquidación importa en tres sitios. En una **cuenta de contado**, el efectivo de una venta no se
puede usar para comprar otra cosa hasta que se liquida (o el bróker lo adelanta con condiciones). Los **dividendos** los
cobra quien figura como titular en la fecha de registro, así que la fecha ex depende del ciclo de liquidación
(lección 1.2.1). Y en una **cuenta a margen**, es el bróker quien pone el efectivo que falta cuando la compra se
liquida, y desde entonces cobra intereses por él.

## Margen y apalancamiento

Una **cuenta a margen** permite comprar con dinero prestado por el bróker, con los títulos como garantía. El
**apalancamiento** es la exposición dividida por el patrimonio propio: con 50.000 USD propios y 50.000 prestados, una
posición de 100.000 tiene apalancamiento 2. Una caída del 10 % del precio se convierte en una del 20 % del patrimonio.

En EE. UU. hay dos reglas mínimas para las acciones compradas a margen:

- **Margen inicial (Regulation T).** El bróker puede prestar hasta el 50 % del precio de compra: el cliente pone al
  menos la mitad[^3].
- **Margen de mantenimiento (FINRA Rule 4210).** El patrimonio de la cuenta debe ser al menos el 25 % del valor de
  mercado de los títulos en largo[^4]. Si cae por debajo, hay una **llamada de margen**: aportar garantías o vender.

[^3]: 12 CFR 220.12 (Regulation T): «50 percent of the current market value of the security» para los valores de
    renta variable admitidos a margen.
[^4]: FINRA Rule 4210 (c)(1): «25 percent of the current market value of all margin securities … "long" in the
    account». FINRA recuerda que el bróker puede liquidar la cuenta en cualquier momento para cubrir una deficiencia.

```mermaid
flowchart TB
  P[El precio baja] --> E{¿Bajo el 25 %?}
  E -- no --> S[Sigue la posición]
  E -- sí --> M[Llamada de margen]
  M --> A[Aportar efectivo]
  M --> V[Vender posición]
```

Con un préstamo $L$ por cada acción y precio $P$, el patrimonio por acción es $P - L$. La llamada salta cuando el
patrimonio cae al margen de mantenimiento $m$ del valor:

$$
P - L = m\,P \quad\Longrightarrow\quad P^{*} = \frac{L}{1 - m}
$$

Si la compra se hizo a $P_0$ con el préstamo máximo de Reg T, $L = (1 - m_i)\,P_0$ con $m_i = 0{,}5$, y queda

$$
P^{*} = P_0\,\frac{1 - m_i}{1 - m} = P_0\,\frac{0{,}5}{0{,}75} = \tfrac{2}{3}\,P_0
$$

```python
def precio_llamada(p0, m_inicial=0.50, m_mant=0.25):
    prestamo = (1 - m_inicial) * p0
    return prestamo / (1 - m_mant)

p0 = op.loc[op["condicion"] == "subasta_cierre", "precio"].iloc[0]
acciones = 1_000
pstar = precio_llamada(p0)
print(f"compra de {acciones} acciones a {p0} USD")
print(f"préstamo: {(1 - 0.5) * p0 * acciones:,.0f} USD")
print(f"llamada de margen a {pstar:.2f} USD ({pstar / p0 - 1:.1%})")
for mm in (0.30, 0.35, 0.40):
    print(f"  mantenimiento del {mm:.0%}: llamada a "
          f"{precio_llamada(p0, m_mant=mm):.2f}")
```
```output
compra de 1000 acciones a 53.12 USD
préstamo: 26,560 USD
llamada de margen a 35.41 USD (-33.3%)
  mantenimiento del 30%: llamada a 37.94
  mantenimiento del 35%: llamada a 40.86
  mantenimiento del 40%: llamada a 44.27
```

*Fig. — Patrimonio de una compra de 1.000 acciones de NOVA a 53,12 USD con un préstamo del 50 % frente al mantenimiento exigido del 25 %.* Dos rectas en función del precio de 20 a 60 USD. El patrimonio de la cuenta, el valor de la posición menos el préstamo de 26.560 USD, vale 26.560 USD a 53,12 y cero a 26,56. El mantenimiento exigido, el 25 % del valor, es más plano. Se cruzan a 35,41 USD, con 8.853 USD de patrimonio (destacado): ahí salta la llamada de margen, un 33 % por debajo de la compra.

Con el cierre de NOVA del 2 de junio de 2025, 53,12 USD, la llamada salta a 35,41: una caída de un tercio. Parece
lejos, pero con requisitos más exigentes se acerca: con un mantenimiento del 40 %, que un bróker puede imponer a
valores volátiles, la llamada llega con una caída del 16,7 %. La figura dibuja el patrimonio de la cuenta frente al
precio y el mantenimiento exigido: se cruzan en la llamada.

Tres cosas que el cálculo no dice. El bróker puede vender **sin avisar** y al precio que haya, incluido un hueco como
el de la lección 1.1.4: la llamada no garantiza salir a $P^{*}$. Los requisitos del bróker pueden ser mayores que los
mínimos legales, y cambiar con la volatilidad. Y el préstamo cuesta intereses cada día, que se restan del patrimonio y
acercan la llamada. Los productos apalancados para minoristas en la UE (CFD, con límites de apalancamiento de ESMA) se
tratan en las lecciones 1.2.4 y 1.2.7; los márgenes de futuros, que funcionan de otra forma, en la 1.2.3.

```python
prestamo = (1 - 0.5) * p0 * acciones
for dias in (5, 30, 365):
    interes = prestamo * 0.06 * dias / 360     # tipo supuesto, base 360
    print(f"{dias:>3} días: {interes:8.2f} USD · "
          f"{1e4 * interes / (p0 * acciones):6.1f} pb de la posición")
```
```output
  5 días:    22.13 USD ·    4.2 pb de la posición
 30 días:   132.80 USD ·   25.0 pb de la posición
365 días:  1615.73 USD ·  304.2 pb de la posición
```

Un año a margen con un tipo del 6 % sobre la mitad de la posición cuesta 3,04 % de la posición, 6,08 % del patrimonio
propio. Es una barrera de rentabilidad que la estrategia tiene que superar antes de ganar nada con el apalancamiento.

## Ejercicios

1. Calcula la horquilla efectiva media ponderada de las operaciones de los centros con libro en la primera media hora
   de la sesión (13:30 a 14:00 UTC) y en el resto del día. ¿Es más caro operar al principio de la sesión?

**Solución.**

```python
apertura = lit["ts"] < "2025-06-02 14:00:00+00:00"
for nombre, g in (("primera media hora", lit[apertura]),
                  ("resto del día", lit[~apertura])):
    print(f"{nombre:<19} {media_pond(g, 'ef_pb'):.3f} pb"
          f" · {len(g)} operaciones")
```
```output
primera media hora  2.065 pb · 6090 operaciones
resto del día       2.067 pb · 36554 operaciones
```

En NOVA, no: 2,065 frente a 2,067 puntos básicos, prácticamente lo mismo. Cuadra con la tabla de horquillas por media
hora de la lección 1.1.3, en la que la primera media hora no destaca (solo el 2,2 % de las fotos con más de un tick) y
la que sí lo hace es la última. La primera foto de la sesión tenía dos ticks de horquilla, pero se cierra en segundos.
Con datos reales la medición hay que repetirla en cada valor: es la forma de decidir con números a qué hora conviene
ejecutar.

2. Repite la cascada de costes con una orden de 5.000 acciones y otra de 40.000. ¿Qué componente cambia más?

**Solución.**

```python
for n in (5_000, 40_000):
    pagado = precio_medio_compra(f10, n)
    print(n, "acciones · impacto",
          round(1e4 * (pagado - ask10) / decision, 2), "pb")
```
```output
5000 acciones · impacto 0.0 pb
40000 acciones · impacto 3.08 pb
```

Con 5.000 acciones el impacto es cero: en la foto de las 15:00:10 caben en el primer nivel de venta. Con 40.000 sube a
3,08 puntos básicos. El retraso, la media horquilla y la comisión por acción no dependen del tamaño de la orden: son los mismos puntos
básicos para 5.000 que para 40.000 acciones. El impacto sí: crece con el número de niveles que hay que recorrer. Para
órdenes pequeñas, lo que domina es la horquilla; para órdenes grandes, el impacto.

3. Una cuenta con 30.000 USD propios compra 1.000 acciones de NOVA a 53,12 con el resto prestado. ¿Qué apalancamiento
   tiene? ¿A qué precio salta la llamada de margen con el mantenimiento del 25 %? ¿Cumple el margen inicial de Reg T?

**Solución.**

La posición vale 53.120 USD y el préstamo es de 23.120 USD. Apalancamiento: 53.120 / 30.000 = 1,77. El préstamo por
acción es 23,12, así que la llamada salta a 23,12 / 0,75 = 30,83 USD, un 42 % por debajo de la compra. Cumple Reg T:
el cliente aporta el 56,5 % del precio, más del 50 % mínimo. Con menos préstamo la llamada se aleja, porque el colchón
propio es mayor.

## Autoevaluación

1. Una compra se ejecuta a 52,76 cuando el precio medio vigente es 52,755. ¿Cuál es su horquilla efectiva en puntos básicos?

   - A. 0,95 puntos básicos
   - B. 1,90 puntos básicos
   - C. 0,5 céntimos
   - D. No se puede calcular sin la cotización posterior

   *Respuesta B: 1,90 puntos básicos.* La horquilla efectiva es el doble de la distancia entre el precio pagado y el medio, en proporción al medio: 2 × (52,76 − 52,755) / 52,755 = 0,000190, es decir, 1,90 puntos básicos. Se multiplica por dos para compararla con la horquilla cotizada, que es la ida y vuelta.

2. En NOVA, la horquilla realizada de las operaciones de los centros con libro es positiva a 1 segundo y negativa a 1 minuto. ¿Qué significa?

   - A. Que los datos están mal
   - B. Que quien da liquidez gana la horquilla si cierra enseguida, pero pierde si mantiene la posición: el flujo agresor anticipa el precio
   - C. Que las comisiones son negativas
   - D. Que el centro oscuro es más caro

   *Respuesta B: Que quien da liquidez gana la horquilla si cierra enseguida, pero pierde si mantiene la posición: el flujo agresor anticipa el precio.* La horquilla realizada mide lo que se queda el proveedor de liquidez después de que el precio se mueva. Si el precio sigue en la dirección del agresor, el proveedor ha vendido barato o comprado caro: es la selección adversa. La diferencia entre efectiva y realizada es el impacto en el precio.

3. Una acción de EE. UU. se vende el jueves 3 de julio de 2025. ¿Cuándo se liquida?

   - A. El viernes 4 de julio
   - B. El lunes 7 de julio, el siguiente día hábil (T+1), porque el 4 es festivo
   - C. El martes 8 de julio (T+2)
   - D. El mismo día

   *Respuesta B: El lunes 7 de julio, el siguiente día hábil (T+1), porque el 4 es festivo.* Desde el 28 de mayo de 2024 el ciclo estándar en EE. UU. es T+1. El viernes 4 de julio de 2025 la NYSE cerró por el Día de la Independencia, así que el siguiente día hábil es el lunes 7.

4. Compras acciones a 53,12 USD con el máximo préstamo de Reg T (50 %) y el bróker exige el mantenimiento mínimo de FINRA (25 %). ¿A qué precio salta la llamada de margen?

   - A. A 39,84
   - B. A 35,41
   - C. A 26,56
   - D. A 13,28

   *Respuesta B: A 35,41.* La llamada salta cuando el patrimonio de la cuenta cae al 25 % del valor de la posición. Con un préstamo del 50 % del precio de compra, eso ocurre a P0 × (1 − 0,50) / (1 − 0,25) = 53,12 × 2/3 = 35,41 USD, una caída del 33 %.

5. ¿Por qué la financiación puede ser el coste mayor de una operación aunque la tasa diaria parezca pequeña?

   - A. Porque se cobra en cada operación
   - B. Porque se paga cada día que la posición sigue abierta y sobre el importe prestado, mientras que horquilla e impacto se pagan una vez
   - C. Porque es un coste implícito
   - D. No puede serlo

   *Respuesta B: Porque se paga cada día que la posición sigue abierta y sobre el importe prestado, mientras que horquilla e impacto se pagan una vez.* Horquilla, impacto y comisión se pagan al entrar y al salir. El interés del préstamo se acumula con el tiempo: en el ejemplo de la lección, cinco días a margen con un tipo supuesto del 6 % anual cuestan 4,2 puntos básicos, casi tanto como todos los costes de ejecución juntos (5,6).

## Ideas clave

- Los costes de ejecución se miden contra el precio de decisión: retraso, media horquilla, impacto y comisión. En la orden de 20.000 acciones de NOVA suman 5,6 puntos básicos, y la comisión es solo uno.
- La horquilla efectiva mide lo pagado contra el medio vigente; la realizada, lo que se queda el proveedor tras unos segundos. La diferencia es el impacto, y su signo dice si el flujo agresor estaba informado.
- El impacto crece con el tamaño más deprisa que de forma lineal cuando la orden pasa de los primeros niveles: de 1 punto básico con 100 acciones a 3,6 con 30.000 en el libro de NOVA.
- EE. UU. liquida en T+1 desde el 28 de mayo de 2024; la UE pasa de T+2 a T+1 el 11 de octubre de 2027. Los días hábiles los da un calendario, no una suma de días.
- Con Reg T (50 % inicial) y FINRA 4210 (25 % de mantenimiento), una compra a margen al máximo recibe una llamada si el precio cae un tercio. El bróker puede exigir más y liquidar sin avisar.

## Recursos

### Research

- [Modelos Cuantitativos y Ejecución Algorítmica](https://pythonparatrading.com/modelos-cuantitativos-ejecucion-algoritmica/) · Research-0009 · 11 min

### Documentación

- [SEC: SEC Finalizes Rules to Reduce Risks in Clearance and Settlement (nota de prensa 2023-29; T+1 desde el 28 de mayo de 2024)](https://www.sec.gov/news/press-release/2023-29) · sec.gov
- [AMF: Transition to T+1 settlement of transactions (Reglamento (UE) 2025/2075, aplicable desde el 11 de octubre de 2027)](https://www.amf-france.org/en/news-publications/depth/settlement-cycle-t1) · amf-france.org
- [eCFR: 12 CFR 220.12, Supplement: Margin requirements (Regulation T, 50 %)](https://www.ecfr.gov/current/title-12/chapter-II/subchapter-A/part-220/section-220.12) · ecfr.gov
- [FINRA Rule 4210: Margin Requirements (mantenimiento del 25 % en largos)](https://www.finra.org/rules-guidance/rulebooks/finra-rules/4210) · finra.org
- [FINRA: Margin Regulation](https://www.finra.org/rules-guidance/key-topics/margin-accounts) · finra.org

### Datos

- [Datos del nivel 1: cotizaciones (L1) de NOVA del 2 de junio de 2025 (Parquet)](https://pythonparatrading.com/curso/datos/nivel-1/nova_cotizaciones.parquet) · Descarga · nova_cotizaciones.parquet

Lección anterior: [1.1.4 · Tipos de órdenes](https://pythonparatrading.com/curso-python-trading/nivel-1/tipos-de-ordenes/)

Lección siguiente: [1.2.1 · Acciones: splits, dividendos y eventos corporativos](https://pythonparatrading.com/curso-python-trading/nivel-1/acciones-splits-dividendos-y-eventos-corporativos/)
