---
title: "1.2.4 Forex: pares, pips, lotes, rollover y CFD"
description: "Cómo se cotiza un par, cuánto vale un pip, por qué la horquilla se abre a las 17:00 de Nueva York, de dónde salen los puntos forward y qué limita ESMA."
url: "https://pythonparatrading.com/curso-python-trading/nivel-1/forex-pares-pips-lotes-y-rollover/"
lang: "es"
image: "https://pythonparatrading.com/og/curso-python-trading/nivel-1/forex-pares-pips-lotes-y-rollover.png"
---

# 1.2.4 · Forex: pares, pips, lotes, rollover y CFD

> El mercado de divisas no tiene una bolsa central ni un cierre: cotiza de domingo a viernes y cada posición abierta se renueva cada noche. Esta lección mide en dos años de EURUSD por horas lo que cuesta operar y mantener una posición, deriva los puntos forward de los tipos de interés y explica las reglas que ESMA impone a los CFD para minoristas.

- Curso: [Nivel 1: Datos financieros, mercados y análisis](https://pythonparatrading.com/curso-python-trading/nivel-1/)
- Módulo: 1.2 · Clases de activos
- Duración: 60 min
- Requisitos: [1.1.5 · Costes, liquidación, apalancamiento y margen](https://pythonparatrading.com/curso-python-trading/nivel-1/costes-liquidacion-apalancamiento-y-margen/), [1.2.3 · Futuros: especificaciones, margen, roll y contango](https://pythonparatrading.com/curso-python-trading/nivel-1/futuros-especificaciones-margen-y-roll/), [0.4.4 · Ficheros (CSV, JSON, YAML, TOML) y fechas con zonas horarias](https://pythonparatrading.com/curso-python-trading/nivel-0/ficheros-pathlib-y-zonas-horarias/)

## Al terminar esta lección

- Leer la cotización de un par (base y cotizada), calcular el valor de un pip para un lote y convertirlo a la divisa de la cuenta.
- Medir con pandas la horquilla por hora del día y explicar por qué se abre en la sesión asiática y en la hora del rollover.
- Distinguir spot, forward, swap de divisas y futuro, y calcular los puntos forward por la paridad de tipos de interés.
- Calcular el coste o ingreso del rollover de una posición mantenida varios días, con el triple del miércoles.
- Explicar los límites de ESMA a los CFD para minoristas (apalancamiento, cierre al 50 % del margen, saldo negativo) y calcular cuánto movimiento cierra una posición.

## Un mercado sin bolsa

El mercado de divisas (*forex*, FX) es sobre todo un mercado OTC: bancos, creadores de mercado y plataformas
electrónicas cotizan entre sí y a sus clientes sin una bolsa central (lección 1.1.1). No hay un precio oficial ni un
cierre: se negocia de forma continua desde el domingo por la tarde hasta el viernes por la tarde, siguiendo el sol por
Sídney, Tokio, Londres y Nueva York. Como día de negociación se toma el que termina a las 17:00 de Nueva York.

Un **par** se escribe con dos códigos ISO: `EURUSD` es el precio de un euro (la divisa **base**) en dólares (la divisa
**cotizada**). Si EURUSD cotiza a 1,17000, un euro vale 1,17 dólares. Comprar EURUSD es comprar euros y vender
dólares. Los datos del curso son dos años de un EURUSD sintético con su compra (*bid*) y su venta (*ask*) cada hora:

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

fx = pd.read_parquet("eurusd_1h.parquet")
print(len(fx), "horas;", fx["ts"].min(), "a", fx["ts"].max())
fx.head(3)
```
```output
12552 horas; 2024-01-01 00:00:00+00:00 a 2025-12-31 23:00:00+00:00
                         ts      bid      ask       mid
0 2024-01-01 00:00:00+00:00  1.10379  1.10389  1.103840
1 2024-01-01 01:00:00+00:00  1.10416  1.10421  1.104185
2 2024-01-01 02:00:00+00:00  1.10405  1.10412  1.104085
```

Las marcas de tiempo están en UTC. La cotización tiene cinco decimales: la quinta es una fracción de pip.

## Pips, lotes y lo que vale un movimiento

Un **pip** es la unidad de movimiento convencional: en EURUSD, la cuarta decimal (0,0001). La quinta, que hoy cotizan
casi todos los proveedores, es una décima de pip. La posición se mide en **lotes** de la divisa base; la convención de
los brókers minoristas es:

| Lote | Unidades de la base | Valor de un pip en EURUSD |
|---|---|---|
| Estándar | 100.000 EUR | 10 USD |
| Mini | 10.000 EUR | 1 USD |
| Micro | 1.000 EUR | 0,10 USD |

El valor del pip sale en la divisa **cotizada** (USD en EURUSD). Una cuenta en euros lo convierte al cambio del
momento:

```python
PIP = 0.0001

def valor_pip(unidades, precio):
    """Valor de un pip de EURUSD en USD y en EUR."""
    usd = unidades * PIP
    return usd, usd / precio

precio = fx.set_index("ts").loc["2025-06-02 15:00", "mid"]
print(f"EURUSD medio: {precio:.5f}")
for nombre, unidades in [("estándar", 100_000), ("mini", 10_000),
                         ("micro", 1_000)]:
    usd, eur = valor_pip(unidades, precio)
    print(f"{nombre:9s} {usd:7.2f} USD  {eur:7.2f} EUR")
```
```output
EURUSD medio: 1.17162
estándar    10.00 USD     8.54 EUR
mini         1.00 USD     0.85 EUR
micro        0.10 USD     0.09 EUR
```

Con EURUSD a 1,17162, un pip de un lote estándar son 10 USD, 8,54 EUR. Un movimiento de 100 pips (de 1,1700 a 1,1800,
un 0,85 %) son 1.000 USD por lote. En pares en los que la cuenta no está ni en la base ni en la cotizada (EURGBP para
una cuenta en dólares, por ejemplo), el valor del pip se convierte con un tercer cambio.

La horquilla también se mide en pips:

```python
fx["horquilla_pips"] = (fx["ask"] - fx["bid"]) / PIP
print(fx["horquilla_pips"].describe().round(2))
media = fx["horquilla_pips"].mean()
print(f"Coste de cruzar la horquilla media, 1 lote: "
      f"{media * 10:.2f} USD")
```
```output
count    12552.00
mean         0.46
std          0.51
min          0.10
25%          0.20
50%          0.30
75%          0.50
max          5.60
Name: horquilla_pips, dtype: float64
Coste de cruzar la horquilla media, 1 lote: 4.56 USD
```

La mediana es de 0,3 pips y la media sube a 0,46 por unas pocas horas muy caras (el máximo, 5,6 pips). Cruzar la
horquilla media con un lote estándar cuesta 4,56 USD. Un sistema que opera muchas veces al día paga ese coste en cada
entrada y cada salida (lección 1.1.5), y no lo paga igual a todas horas.

## La horquilla a lo largo del día

El mercado no duerme, pero su liquidez sí cambia. Agrupando por la hora de Nueva York, que es la referencia del día
de divisas:

```python
ny = fx["ts"].dt.tz_convert("America/New_York")
fx["hora_ny"] = ny.dt.hour
por_hora = fx.groupby("hora_ny")["horquilla_pips"].mean()
print(por_hora.round(2).to_string())
```
```output
hora_ny
0     0.61
1     0.52
2     0.28
3     0.21
4     0.21
5     0.21
6     0.21
7     0.19
8     0.15
9     0.15
10    0.15
11    0.21
12    0.30
13    0.31
14    0.31
15    0.31
16    0.31
17    2.57
18    0.61
19    0.63
20    0.62
21    0.62
22    0.63
23    0.62
```

La figura de la cabecera dibuja esa tabla. Tres tramos:

- **De 18:00 a 01:00 de Nueva York** (sesión asiática): unos 0,6 pips. Opera Asia, pero los grandes centros del euro y
  del dólar están cerrados.
- **De 02:00 a 16:00**: Londres abre y la horquilla cae a 0,2; en el solape de Londres y Nueva York (08:00 a 10:00)
  llega al mínimo, 0,15 pips. Después del cierre de Londres sube a 0,3.
- **17:00**: 2,57 pips de media, diecisiete veces el mínimo. Es la **hora del rollover**: termina el día de divisas,
  las posiciones abiertas se renuevan a la fecha valor siguiente y los proveedores de liquidez retiran o ensanchan
  sus precios durante unos minutos. El domingo, esa misma hora es además la primera de la semana.

Para un sistema que opera en UTC (como casi todos), hay una trampa: la hora del rollover es fija en Nueva York y se
mueve en UTC con el horario de verano de EE. UU.

```python
fx["hora_utc"] = fx["ts"].dt.hour
fx["mes"] = fx["ts"].dt.month
cara = (fx[fx["ts"].dt.year == 2025]
        .groupby(["mes", "hora_utc"])["horquilla_pips"].mean()
        .groupby("mes").idxmax().str[1])
cara.rename("hora_utc_mas_cara")
```
```output
mes
1     22
2     22
3     21
4     21
5     21
6     21
7     21
8     21
9     21
10    21
11    22
12    22
Name: hora_utc_mas_cara, dtype: int64
```

De noviembre a febrero, la hora más cara es las 22:00 UTC; de marzo a octubre, las 21:00 UTC. Marzo y noviembre son
meses mixtos: parte del mes la hora del rollover cae a una hora UTC y parte a la otra, y la tabla solo enseña la que
domina. Un filtro «no operar a las 21:00 UTC» falla cuatro meses al año (lección 0.4.4).

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

Los datos de un bróker minorista enseñan su horquilla, no la del mercado interbancario. Suele ser más ancha y puede
incluir el margen del bróker; algunos cobran en su lugar una comisión por lote. Para un backtest, la horquilla y la
comisión tienen que ser las del bróker que se va a usar, y por horas, no una media diaria.

</aside>

## Spot, forward, swap y futuro

Una operación de divisas al **contado** (*spot*) no se liquida al instante. Según la definición del BIS en su
encuesta trienal, spot es un intercambio de dos divisas al precio acordado hoy con fecha valor (entrega) **dentro de
dos días hábiles**; la convención de mercado para EURUSD es la fecha valor a dos días hábiles (T+2). Todo lo que se
liquida más tarde es un **forward** (*outright forward*).

```mermaid
flowchart TB
  L[Lunes: operación] --> X[Miércoles: valor]
  R[Rollover 17:00 NY] --> S[Swap tom-next]
  S --> J[Valor un día más]
```

- **Forward**: intercambio a una fecha posterior a la spot, a un precio fijado hoy. OTC, a medida.
- **Swap de divisas** (*FX swap*): una operación spot y otra a plazo en sentido contrario, a la vez. Es la herramienta
  con la que se renuevan las posiciones: el *tom-next* aplaza un día la fecha valor.
- **Futuro de divisas**: un forward estandarizado en bolsa (en la CME, por ejemplo), con vencimientos trimestrales,
  margen y liquidación diaria (lección 1.2.3).

El precio forward no es una previsión: lo fija el arbitraje. Quien tiene euros puede invertirlos al tipo del euro, o
cambiarlos a dólares, invertirlos al tipo del dólar y deshacer el cambio a plazo. Las dos cosas tienen que dar lo
mismo (**paridad cubierta de tipos de interés**). Con tipos en base Act/360:

$$
F = S \cdot \frac{1 + i_{\text{USD}} \cdot d / 360}{1 + i_{\text{EUR}} \cdot d / 360},
\qquad
\text{puntos forward} = (F - S) \cdot 10^4
$$

```python
tipos = pd.read_csv("tipos_corto_eur_usd.csv", parse_dates=["fecha"],
                    index_col="fecha")
i_eur, i_usd = tipos.loc["2025-06-02", ["tipo_eur", "tipo_usd"]] / 100
print(f"i_EUR = {i_eur:.3%}  i_USD = {i_usd:.3%}  S = {precio:.5f}")

def forward(S, i_cot, i_base, dias):
    return S * (1 + i_cot * dias / 360) / (1 + i_base * dias / 360)

plazos = {"1 semana": 7, "1 mes": 30, "3 meses": 91, "1 año": 365}
pd.DataFrame({
    "forward": {k: forward(precio, i_usd, i_eur, d)
                for k, d in plazos.items()},
    "puntos": {k: (forward(precio, i_usd, i_eur, d) - precio) / PIP
               for k, d in plazos.items()},
}).round({"forward": 5, "puntos": 1})
```
```output
i_EUR = 2.165%  i_USD = 4.293%  S = 1.17162
          forward  puntos
1 semana  1.17210     4.8
1 mes     1.17369    20.7
3 meses   1.17788    62.7
1 año     1.19635   247.4
```

Con el tipo del dólar 2,1 puntos por encima del del euro, el euro cotiza a plazo con **prima**: 4,8 pips a una
semana, 62,7 a tres meses y 247,4 a un año.
Quien compra euros a plazo paga más que al contado, y lo compensa lo que deja de ganar en dólares. (Para simplificar,
el ejemplo usa el tipo a un día para todos los plazos; en la práctica cada plazo tiene su tipo.)

## Swaps y rollover: el coste de mantener la posición

Una posición spot en un bróker minorista no se entrega nunca: cada día, a las 17:00 de Nueva York, el bróker la
renueva con un swap tom-next a la fecha valor siguiente. El efecto económico es el de la paridad: quien está largo
EURUSD tiene euros (cobra el tipo del euro) y debe dólares (paga el tipo del dólar). Ese diferencial es el
**rollover** o **swap**, y se carga o abona cada noche.

Un detalle de calendario lo hace triple una vez por semana. La renovación del miércoles mueve la fecha valor del
viernes al lunes siguiente (la spot es a dos días hábiles), así que cubre tres días de intereses:

```python
cierre = (fx.set_index("ts")["mid"].tz_convert("America/New_York")
          .between_time("16:00", "16:00"))
cierre.index = cierre.index.normalize().tz_localize(None)
dias = cierre.loc["2025"].to_frame("S").join(tipos / 100)
dias = dias[dias.index.dayofweek < 5]
# días de intereses de cada renovación: 3 la del miércoles
dias["n"] = np.where(dias.index.dayofweek == 2, 3, 1)
nominal = 100_000  # EUR
dif = dias["tipo_eur"] - dias["tipo_usd"]
dias["swap_usd"] = nominal * dias["S"] * dif * dias["n"] / 360
print(f"Renovaciones: {len(dias)},"
      f" días de intereses: {dias['n'].sum()}")
print(f"Diferencial medio EUR − USD: {100 * dif.mean():.2f} puntos")
print(f"Rollover del año, largo: {dias['swap_usd'].sum():,.0f} USD")
dias["swap_usd"].loc["2025-06-02":"2025-06-06"].round(2)
```
```output
Renovaciones: 261, días de intereses: 367
Diferencial medio EUR − USD: -2.01 puntos
Rollover del año, largo: -2,360 USD
ts
2025-06-02    -6.89
2025-06-03    -6.90
2025-06-04   -20.78
2025-06-05    -6.89
2025-06-06    -6.94
Name: swap_usd, dtype: float64
```

*Fig. — Rollover teórico acumulado de un largo de un lote estándar de EURUSD durante 2025.* Línea en escalera que baja de 0 a −2.360 USD a lo largo de 2025, destacado el valor final. Cada día laborable resta entre 3,9 y 8,1 USD y cada miércoles el triple, porque el diferencial entre el tipo del euro y el del dólar fue de unos 2 puntos en contra del largo todo el año.

Un largo de un lote en EURUSD durante 2025 paga 2.360 USD de rollover teórico, sin el margen que añade el bróker: el
diferencial medio fue de 2,01 puntos en contra. 261 renovaciones suman 367 días de intereses, y cada miércoles cuesta
el triple: en la semana del 2 de junio, 6,89 USD por noche y 20,78 el miércoles. Un corto cobraría lo mismo, menos
el margen del bróker, que en la práctica reduce lo que se cobra y aumenta lo que se paga. Una estrategia de tendencia
que mantiene posiciones semanas tiene que incluir este coste; una de *carry* (comprar la divisa de tipo alto) vive de
él.

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

El cálculo usa los tipos a un día del curso, con base Act/360 para las dos divisas, y el cambio de las 16:00 de Nueva
York como precio de la renovación. Un bróker publica sus propios puntos de swap, por lote y día, que incluyen su
margen. Los festivos de cada divisa también cambian qué noche es «triple»; los datos del curso no tienen festivos de
divisas.

</aside>

## CFD y los límites de ESMA

Muchos minoristas no operan divisas spot sino **CFD** (contratos por diferencias): un contrato con el bróker que paga la
diferencia de precio del subyacente, con margen y rollover, sin entrega. Desde 2018, ESMA restringió su venta a
minoristas en la UE, y la CNMV mantiene las mismas medidas en España desde el 1 de agosto de 2019 (Resolución de 27 de
junio de 2019). Las reglas:

| Subyacente | Margen inicial mínimo | Apalancamiento máximo |
|---|---|---|
| Pares formados por dos de USD, EUR, JPY, GBP, CAD, CHF | 3,33 % | 30:1 |
| Otros pares, oro e índices principales | 5 % | 20:1 |
| Otras materias primas e índices | 10 % | 10:1 |
| Acciones y otros subyacentes | 20 % | 5:1 |
| Criptoactivos | 50 % | 2:1 |

*Fig. — Margen inicial mínimo y apalancamiento máximo de los CFD para minoristas en la UE, por subyacente.* Cinco barras horizontales con el margen inicial mínimo en porcentaje del nominal y el apalancamiento máximo equivalente: pares formados por dos divisas principales, 3,33 % y 30 a 1, destacado; otras divisas, oro e índices principales, 5 % y 20 a 1; otras materias primas e índices, 10 % y 10 a 1; acciones y otros subyacentes, 20 % y 5 a 1; criptoactivos, 50 % y 2 a 1.

Además del margen, el proveedor tiene que:

- **Cerrar las posiciones** cuando los fondos de la cuenta más las ganancias no realizadas bajen de la **mitad** del
  margen inicial aportado para todos los CFD abiertos.
- Dar **protección frente a saldo negativo**: el cliente no puede perder más que los fondos de su cuenta de CFD.
- Incluir una advertencia de riesgo estandarizada con el porcentaje de sus cuentas minoristas que pierden dinero. El
  texto estándar de la resolución de la CNMV cita los estudios de los supervisores: entre un 74 % y un 89 % de los
  inversores minoristas pierden dinero cuando negocian con CFD.

```mermaid
stateDiagram-v2
  [*] --> Abierta
  Abierta --> Aviso: margen bajo
  Aviso --> Abierta: aporta fondos
  Aviso --> Cerrada: fondos < 50 %
  Abierta --> Cerrada: cierra el cliente
  Cerrada --> [*]
```

Con el margen mínimo, ¿cuánto movimiento cierra una posición? Si se usa todo el capital como margen, la cuenta llega al
50 % del margen cuando pierde la mitad, es decir, la mitad del 3,33 % del nominal:

```python
capital = 1_000  # EUR
margen = 1 / 30  # 3,33 % del nominal
nominal = capital / margen
cierre_pct = 0.5 * margen
pips = cierre_pct * precio / PIP
print(f"Nominal máximo: {nominal:,.0f} EUR ({nominal / 1e5:.2f} lotes)")
print(f"Se cierra con una pérdida de {0.5 * capital:,.0f} EUR:"
      f" un {cierre_pct:.2%} en contra, unos {pips:.0f} pips")
```
```output
Nominal máximo: 30,000 EUR (0.30 lotes)
Se cierra con una pérdida de 500 EUR: un 1.67% en contra, unos 195 pips
```

Con 1.000 EUR se pueden abrir 30.000 EUR de nominal (0,30 lotes). La posición se cierra al perder 500 EUR, con un
movimiento en contra del 1,67 %, unos 195 pips. ¿Es mucho? Los datos dicen con qué frecuencia EURUSD se mueve eso en
contra de un largo en pocos días:

```python
mid = fx.set_index("ts")["mid"]
for horas, nombre in [(24, "un día"), (120, "cinco días")]:
    peor = mid[::-1].rolling(horas, min_periods=horas).min()[::-1]
    caida = (peor / mid - 1).dropna()
    print(f"Caída de más del {cierre_pct:.2%} en {nombre}: "
          f"{(caida < -cierre_pct).mean():.1%} de las horas")
```
```output
Caída de más del 1.67% en un día: 0.5% de las horas
Caída de más del 1.67% en cinco días: 9.0% de las horas
```

Con el apalancamiento máximo, un largo abierto en una hora cualquiera llega al cierre por margen en las 24 horas
siguientes en el 0,5 % de los casos, y en los cinco días siguientes en el 9,0 %: casi una de cada diez, y eso con una
divisa de volatilidad baja y sin contar la horquilla ni el rollover. El límite de ESMA no hace segura una posición:
solo la hace menos frágil que sin límite. El apalancamiento sensato lo decide el tamaño de la posición (lección 0.1.2),
no el máximo legal.

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

La protección frente a saldo negativo existe porque el cierre al 50 % no siempre llega a tiempo. Si el mercado abre el
domingo con un hueco grande, o se mueve de golpe por una noticia, el precio puede saltar por encima del nivel de cierre
y la pérdida superar los fondos de la cuenta. Para un minorista en la UE, esa pérdida extra la asume el proveedor. Para
un cliente profesional, no.

</aside>

## Lo que esto cambia en tus datos

- **El precio tiene dos lados.** Un backtest de divisas compra al ask y vende al bid; con el precio medio, regala la
  horquilla en cada operación.
- **La horquilla depende de la hora.** Una media diaria esconde que la hora del rollover cuesta diez veces más que el
  solape de Londres y Nueva York.
- **Las horas en UTC se mueven.** El rollover está a las 17:00 de Nueva York; en UTC, a las 21:00 o a las 22:00 según
  la época del año.
- **El rollover es un flujo de caja.** Mantener una posición cuesta o rinde el diferencial de tipos, triple los
  miércoles. Un backtest que lo omita favorece a las estrategias que compran la divisa de tipo bajo.
- **No hay «cierre» diario oficial.** Las barras diarias de divisas dependen de la hora de corte que use el proveedor
  (normalmente las 17:00 de Nueva York); dos proveedores con cortes distintos dan velas distintas.

## Ejercicios

1. Calcula el rollover teórico de un **corto** de un lote en EURUSD durante 2024. ¿Cobra o paga, y cuánto?

**Solución.**

```python
d24 = cierre.loc["2024"].to_frame("S").join(tipos / 100)
d24 = d24[d24.index.dayofweek < 5]
d24["n"] = np.where(d24.index.dayofweek == 2, 3, 1)
dif24 = d24["tipo_usd"] - d24["tipo_eur"]  # corto: tiene USD, debe EUR
swap24 = 100_000 * d24["S"] * dif24 * d24["n"] / 360
print(f"Diferencial medio USD − EUR: {100 * dif24.mean():.2f} puntos")
print(f"Rollover del año, corto: {swap24.sum():,.0f} USD")
```
```output
Diferencial medio USD − EUR: 1.48 puntos
Rollover del año, corto: 1,618 USD
```

Un corto en EURUSD tiene dólares y debe euros: cobra el tipo del dólar y paga el del euro. En 2024 el diferencial fue
de unos 1,5 puntos a favor y el corto habría cobrado más de 1.600 USD teóricos por lote. Un bróker real cobraría
menos, porque descuenta su margen, pero el signo es el mismo.

2. Calcula la horquilla media por día de la semana (en hora de Nueva York). ¿Qué día es más caro y por qué?

**Solución.**

```python
fx["dia_ny"] = ny.dt.day_name()
fx.groupby("dia_ny")["horquilla_pips"].mean().round(2).sort_values()
```
```output
dia_ny
Friday       0.27
Monday       0.45
Wednesday    0.45
Thursday     0.46
Tuesday      0.46
Sunday       0.89
Name: horquilla_pips, dtype: float64
```

El domingo es con diferencia el más caro: solo tiene siete horas de mercado (de 17:00 a 24:00 de Nueva York), todas de
sesión asiática y la primera, la de apertura de la semana, a más de 2,5 pips. Los días laborables se parecen entre sí;
el viernes cierra a las 17:00 y no tiene hora de rollover, así que su media baja.

3. Un amigo te enseña un backtest de una estrategia de divisas con un Sharpe de 2 que mantiene posiciones largas en
   EURUSD una media de diez días, con datos de precio medio y sin rollover. ¿Qué tres costes faltan y en qué sentido
   cambiarían el resultado?

**Solución.**

Faltan la horquilla (comprar al ask y vender al bid: unos 0,5 pips de media por ida y vuelta, más a ciertas horas),
la comisión del bróker si la cobra, y el rollover: con el tipo del dólar por encima del del euro en 2024 y 2025, un
largo paga cada noche y el triple los miércoles, unos 2 puntos al año sobre el nominal. Los tres empeoran el resultado;
el rollover pesa mucho en posiciones largas mantenidas días, y la horquilla, en estrategias que entran y salen a
menudo. Si además usa CFD, el apalancamiento máximo de ESMA y el cierre al 50 % del margen pueden cerrar posiciones
que el backtest mantiene.

## Autoevaluación

1. EURUSD cotiza a 1,17000. ¿Cuánto vale un pip en un lote estándar de 100.000 EUR, en USD y en EUR?

   - A. 1 USD y 0,85 EUR
   - B. 10 USD y 8,55 EUR
   - C. 100 USD y 85,47 EUR
   - D. 10 EUR y 11,70 USD

   *Respuesta B: 10 USD y 8,55 EUR.* Un pip de EURUSD es 0,0001 USD por euro: 100.000 × 0,0001 = 10 USD. Para una cuenta en euros, 10 / 1,17 = 8,55 EUR. El valor del pip siempre sale en la divisa cotizada (la segunda del par).

2. ¿Por qué la horquilla de EURUSD se abre tanto a las 17:00 de Nueva York?

   - A. Porque cierra la bolsa de Nueva York
   - B. Porque es la hora del rollover: cambia la fecha valor, los bancos rehacen precios y la liquidez cae durante unos minutos
   - C. Porque es la hora de publicación de datos macro de EE. UU.
   - D. Porque abre Tokio

   *Respuesta B: Porque es la hora del rollover: cambia la fecha valor, los bancos rehacen precios y la liquidez cae durante unos minutos.* A las 17:00 de Nueva York termina el «día» del mercado de divisas: las posiciones abiertas se renuevan a la fecha valor siguiente. Los proveedores de liquidez retiran o ensanchan precios. En los datos del curso la horquilla media de esa hora es de 2,57 pips, frente a 0,15 en las mejores horas.

3. El tipo a un día del euro es del 2,165 % y el del dólar del 4,293 %. ¿Cómo cotiza el EURUSD a un año frente al contado?

   - A. Más barato, porque el euro rinde menos
   - B. Más caro: la divisa de tipo bajo (el euro) cotiza a plazo con prima, y la diferencia compensa el diferencial de tipos
   - C. Igual: el forward es la previsión del mercado
   - D. No se puede saber sin una previsión del BCE

   *Respuesta B: Más caro: la divisa de tipo bajo (el euro) cotiza a plazo con prima, y la diferencia compensa el diferencial de tipos.* Por paridad cubierta de tipos, F = S·(1 + i_USD·d/360)/(1 + i_EUR·d/360). Con el tipo del dólar más alto, F > S: puntos forward positivos. Si no, se podría pedir prestado en euros, cambiar, invertir en dólares y cubrir a plazo con ganancia segura.

4. Una cuenta minorista en la UE abre un CFD sobre EURUSD con el margen mínimo de ESMA. ¿Cuándo debe cerrarle el proveedor la posición?

   - A. Cuando el saldo llegue a cero
   - B. Cuando los fondos más las ganancias no realizadas bajen de la mitad del margen inicial aportado
   - C. Cuando el precio se mueva un 50 %
   - D. Nunca: el cliente decide

   *Respuesta B: Cuando los fondos más las ganancias no realizadas bajen de la mitad del margen inicial aportado.* Es la regla de cierre al 50 % del margen. Con un margen del 3,33 % del nominal, la mitad son 1,67 puntos del nominal: un movimiento en contra de algo más del 1,6 % cierra la posición. Además, el cliente no puede perder más de lo que tiene en la cuenta (protección frente a saldo negativo).

5. Una posición larga en EURUSD se mantiene abierta del martes al jueves. ¿Cuántos días de rollover paga o cobra?

   - A. Dos
   - B. Cuatro: dos noches más el triple del miércoles, que cubre el fin de semana
   - C. Uno
   - D. Ninguno si se cierra antes del viernes

   *Respuesta B: Cuatro: dos noches más el triple del miércoles, que cubre el fin de semana.* Martes a miércoles: un día. Miércoles a jueves: tres días, porque la fecha valor salta del viernes al lunes (spot a dos días hábiles). En total, cuatro días de diferencial de intereses.

## Ideas clave

- En EURUSD, el euro es la divisa base y el dólar la cotizada: un pip (0,0001) por un lote de 100.000 EUR vale 10 USD, y se convierte a la divisa de la cuenta al cambio del momento.
- La horquilla depende de la hora: 0,15 pips en el solape de Londres y Nueva York, 0,6 en la sesión asiática y 2,57 a las 17:00 de Nueva York, la hora del rollover. En UTC esa hora cambia con el horario de verano.
- Spot se liquida a dos días hábiles; forward, más tarde, al precio que fija la paridad de tipos. Los puntos forward no son una previsión: son el diferencial de intereses.
- Mantener una posición de un día a otro cuesta o rinde el diferencial de tipos (el rollover), triple la noche del miércoles. Largo en EURUSD en 2025, el diferencial fue en contra.
- En la UE, un CFD minorista sobre divisas principales tiene un apalancamiento máximo de 30 a 1 (margen del 3,33 %), cierre obligatorio al 50 % del margen y protección frente a saldo negativo.

## Recursos

### Research

- [Calcular la liquidez del USD de forma aproximada](https://pythonparatrading.com/liquidez-usd/) · Research-0015 · 5 min
- [Bancos Centrales y Política Monetaria en Python](https://pythonparatrading.com/politica-monetaria-en-python/) · Research-0010 · 15 min

### Documentación

- [ESMA (2018): prohibición de opciones binarias y restricción de los CFD a minoristas](https://www.esma.europa.eu/press-news/esma-news/esma-agrees-prohibit-binary-options-and-restrict-cfds-protect-retail-investors) · esma.europa.eu
- [CNMV, Resolución de 27 de junio de 2019: medidas de intervención sobre CFD (BOE-A-2019-9737)](https://www.boe.es/diario_boe/txt.php?id=BOE-A-2019-9737) · boe.es
- [BIS, Triennial Central Bank Survey 2013: definiciones de spot, forward y swap de divisas](https://www.bis.org/publ/rpfx13fx.pdf) · bis.org

### Datos

- [Datos del nivel 1: EURUSD por horas, 2024-2025 (Parquet)](https://pythonparatrading.com/curso/datos/nivel-1/eurusd_1h.parquet) · Descarga · eurusd_1h.parquet
- [Datos del nivel 1: tipos a un día del euro y del dólar (CSV)](https://pythonparatrading.com/curso/datos/nivel-1/tipos_corto_eur_usd.csv) · Descarga · tipos_corto_eur_usd.csv

Lección anterior: [1.2.3 · Futuros: especificaciones, margen, roll y contango](https://pythonparatrading.com/curso-python-trading/nivel-1/futuros-especificaciones-margen-y-roll/)

Lección siguiente: [1.2.5 · Opciones: call, put, valor intrínseco y valor temporal](https://pythonparatrading.com/curso-python-trading/nivel-1/opciones-call-put-y-valor-temporal/)
