Lección 7.4.3 · 55 min
PRIIPs, KID y ETFs estadounidenses
Un minorista europeo puede comprar acciones de Apple en su bróker pero no el ETF de EE. UU. que replica el S&P 500. La razón es un documento de tres páginas. Esta lección lee ese documento con código, comprueba sus cifras, calcula su indicador de riesgo y compara el coste de las alternativas con supuestos a la vista.
- Módulo
- 7.4 · Regulación, ética y fiscalidad
- Duración
- 55 min
Lecciones del nivel 7
7.1 · Ingeniería de software para trading
7.2 · Infraestructura y despliegue
7.3 · MLOps para modelos de trading
- 7.3.1 Registro de experimentos, modelos y datos: MLflow, DVC y una ejecución reproducida de principio a fin
- 7.3.2 Reentrenamiento programado, validación automática y champion/challenger
- 7.3.3 Monitorización del modelo en vivo y desactivación automática
- 7.3.4 Servir modelos: ONNX, inferencia en CPU o GPU y el coste de los LLM en producción
7.4 · Regulación, ética y fiscalidad
- 7.4.1 MiFID II: clientes, idoneidad y trading algorítmico
- 7.4.2 ESMA y CFD: apalancamiento, cierre y saldo negativo
- 7.4.3 PRIIPs, KID y ETFs estadounidenses
- 7.4.4 MiCA después del transitorio: comprobar un proveedor en los registros
- 7.4.5 Abuso de mercado: spoofing, layering y el bot que los imita sin querer
- 7.4.6 Fiscalidad del trading en España
- 7.4.7 Ética: datos personales, inteligencia artificial y la venta de señales
7.5 · Carrera profesional quant
Qué es un PRIIP y por qué una acción no lo es
La lección 1.2.2 explicó la regla práctica: un ETF domiciliado en EE. UU. no suele tener documento de datos fundamentales (KID), y sin él un bróker europeo no puede vendérselo a un cliente minorista. Esta lección va a la definición, al documento y a las cifras.
El Reglamento (UE) 1286/2014 se aplica a los productos de inversión minorista empaquetados (PRIIP, por sus siglas en inglés) y a los productos de inversión basados en seguros. El artículo 4.1 define el primero como una inversión en la que, «independientemente de su forma jurídica, el importe reembolsable al inversor minorista está sujeto a fluctuaciones debido a la exposición a determinados valores de referencia o a la evolución de uno o varios activos no adquiridos directamente por tal inversor». Tres casos:
| Producto | ¿PRIIP? | Por qué |
|---|---|---|
| Acción de una empresa de EE. UU. | No | El inversor compra el activo directamente |
| ETF de EE. UU. sobre el S&P 500 | Sí | El reembolso depende de acciones que compra el fondo, no el inversor |
| Opción cotizada sobre ese ETF | Sí | Su valor depende de un activo de referencia |
El artículo 5 obliga al productor (la gestora, el emisor) a elaborar el KID y publicarlo antes de ponerlo a disposición de minoristas; el artículo 13, a quien lo vende o asesora a entregarlo con tiempo antes de que el minorista quede obligado. Una gestora de EE. UU. que no comercializa su fondo en la UE no tiene obligación de elaborar un KID, y el bróker no puede elaborarlo por ella. El resultado es el bloqueo que ve el inversor en la pantalla de órdenes. Los fondos UCITS estuvieron exentos (artículo 32) hasta el 31 de diciembre de 2022, fecha a la que lo prorrogó el Reglamento (UE) 2021/2259; desde 2023 también usan el KID de PRIIPs.
Fuente Mermaid
flowchart TB
Q[Exposición índice] --> M{¿Minorista?}
M -- no --> E[ETF de EE. UU.]
M -- sí --> K{¿Producto con KID?}
K -- ETF UCITS --> U[UCITS, otra divisa]
K -- opciones --> O[Riesgo 7, KID tipo]
K -- no hay --> A[Acciones sueltas]El KID por dentro: secciones fijas
El artículo 8 del reglamento fija el título («Documento de datos fundamentales»), una declaración inicial que empieza por «Este documento le proporciona información fundamental que debe conocer sobre este producto de inversión. No se trata de material comercial» y las secciones, en este orden: producto y productor; «¿Qué es este producto?»; «¿Qué riesgos corro y qué podría obtener a cambio?», con un indicador resumido de riesgo y escenarios de rentabilidad; «¿Qué pasa si [el productor] no puede pagar?»; «¿Cuáles son los costes?»; «¿Cuánto tiempo debo mantener la inversión, y puedo retirar dinero de manera anticipada?»; «¿Cómo puedo reclamar?» y «Otros datos de interés». Como máximo tres páginas A4 (artículo 6.4).
El Reglamento Delegado (UE) 2017/653 desarrolla el método del riesgo, de los escenarios y de los costes. La Comisión lo modificó en 2021 en lo relativo a la metodología y la presentación de los escenarios, la presentación de los costes y la rentabilidad histórica (lo cuenta el considerando 4 del Reglamento 2021/2259). El formato que se ve hoy, y el de los KID sintéticos del curso, es el modificado.
Que el formato sea fijo es lo que permite leerlo con código. Los datos del nivel 6 traen los KID de cinco ETF UCITS de una gestora ficticia, los mismos que la lección 6.3.2 trocea para un RAG:
import re
import numpy as np
import pandas as pd
docs = pd.read_parquet("rag6_documentos.parquet")
kids = docs[docs["tipo"] == "kid"].set_index("id_doc")
print(kids[["entidad", "fecha"]].to_string())
print(kids.loc["R10", "texto"][:300]) entidad fecha
id_doc
R10 Sintético Renta Variable Global UCITS ETF 2025-03-01
R12 Sintético Bonos Gobierno Euro 3-7 UCITS ETF 2025-03-01
R14 Sintético Mercados Emergentes UCITS ETF 2025-03-01
R16 Sintético Dividendo Europa UCITS ETF 2025-03-01
R18 Sintético Tecnología EE. UU. UCITS ETF 2025-03-01
# Documento de datos fundamentales — Sintético Renta Variable Global UCITS ETF
*Documento sintético para un curso de formación: empresa, cifras y personas inventadas.*
## Finalidad
Este documento le proporciona información fundamental sobre este producto de inversión. No se trata de material comeLeer y validar un KID con código
Un extractor por secciones y tablas. Las tablas son Markdown, así que basta con partir por |; los números vienen con
punto de miles y coma decimal:
def numero(txt):
t = txt.replace("EUR", "").replace("%", "").replace(".", "")
return float(t.replace(",", ".").strip())
def tabla(texto, cabecera):
bloque = texto.split(cabecera, 1)[1].split("\n\n", 1)[0]
filas = [f.strip().strip("|").split("|")
for f in bloque.strip().splitlines()[2:]]
return [[c.strip() for c in f] for f in filas]
def leer_kid(texto):
k = {"isin": re.search(r"ISIN (\w{12})", texto).group(1)}
m = re.search(r"riesgo: (\d) en una escala de 1 a 7\. Periodo de "
r"mantenimiento recomendado: (\d+) años", texto)
k["sri"], k["rhp"] = int(m.group(1)), int(m.group(2))
for f in tabla(texto, "| Escenario"):
k[f"esc_{f[0].lower()}_1a"] = numero(f[1])
k[f"esc_{f[0].lower()}_rhp"] = numero(f[3])
k[f"rent_{f[0].lower()}_rhp"] = numero(f[4])
comp = dict((f[0], f[1]) for f in tabla(texto, "| Composición"))
k["gestion"] = numero(comp["Comisiones de gestión y otros "
"costes administrativos"])
k["operacion"] = numero(comp["Costes de operación"])
k["entrada_salida"] = (numero(comp["Costes de entrada"])
+ numero(comp["Costes de salida"]))
tot = dict((f[0], f[1:]) for f in tabla(texto, "| Inversión de"))
k["coste_1a"] = numero(tot["Costes totales"][0])
k["coste_rhp"] = numero(tot["Costes totales"][1])
k["incidencia"] = numero(tot["Incidencia anual de los costes"][0])
return k
kid = pd.DataFrame({i: leer_kid(t) for i, t in kids["texto"].items()}).T
kid[["isin", "sri", "rhp", "gestion", "operacion", "incidencia",
"coste_1a", "coste_rhp"]] isin sri rhp gestion operacion incidencia coste_1a coste_rhp
R10 ZZ3353919667 4 5 0.2 0.06 0.26 26.0 139.0
R12 ZZ6549778970 2 5 0.12 0.05 0.17 17.0 89.0
R14 ZZ2516219569 5 5 0.35 0.1 0.45 45.0 239.0
R16 ZZ8471203886 4 5 0.3 0.02 0.32 32.0 170.0
R18 ZZ6812181936 5 5 0.25 0.07 0.32 32.0 168.0Extraer no basta: un KID puede estar mal hecho, mal traducido o desactualizado, y un sistema que se alimenta de ellos (un comparador, un RAG como el de la lección 6.3.3) hereda sus errores. Las comprobaciones que se pueden hacer sin información externa:
- ISIN. Doce caracteres: dos letras de país, nueve alfanuméricos y un dígito de control que se calcula con el algoritmo de Luhn sobre los dígitos, después de convertir cada letra en un número (A = 10 … Z = 35).
- Escenarios. La rentabilidad media anual tiene que coincidir con el importe a 5 años; y el orden tiene que ser tensión < desfavorable < moderado < favorable.
- Costes. La composición tiene que sumar la incidencia anual, y los costes totales del primer año tienen que ser la incidencia sobre 10.000 EUR: el texto prescrito de la presentación de costes supone que el primer año el inversor recupera lo invertido (0 %) y, para los demás periodos, el escenario moderado (preguntas y respuestas del Comité Mixto de las Autoridades Europeas de Supervisión sobre el KID).
def isin_valido(isin):
digitos = "".join(str(int(c, 36)) for c in isin[:-1])
suma = 0
for i, d in enumerate(reversed(digitos)):
n = int(d) * (2 if i % 2 == 0 else 1)
suma += n // 10 + n % 10
return (10 - suma % 10) % 10 == int(isin[-1])
def validar(k, tol=0.15):
avisos = []
if not isin_valido(k["isin"]):
avisos.append("ISIN: dígito de control")
esc = ["tensión", "desfavorable", "moderado", "favorable"]
finales = [k[f"esc_{e}_rhp"] for e in esc]
if finales != sorted(finales):
avisos.append("escenarios fuera de orden")
for e in esc:
final = k[f"esc_{e}_rhp"] / 10_000
anual = 100 * (final ** (1 / k["rhp"]) - 1)
if abs(anual - k[f"rent_{e}_rhp"]) > tol:
avisos.append(f"rentabilidad {e}: {anual:.2f} %")
suma = k["gestion"] + k["operacion"] + k["entrada_salida"]
if abs(suma - k["incidencia"]) > 0.005:
avisos.append("composición no suma la incidencia")
if abs(k["coste_1a"] - 100 * k["incidencia"]) > 1:
avisos.append("coste del primer año no es la incidencia")
r = 1 + k["rent_moderado_rhp"] / 100
esperado = 100 * k["incidencia"] * sum(r ** t
for t in range(k["rhp"]))
desvio = k["coste_rhp"] / esperado - 1
if abs(desvio) > 0.03:
avisos.append(f"coste a {k['rhp']} años {100 * desvio:+.1f} % "
f"frente al moderado")
return avisos or ["sin avisos"]
for i, k in kid.iterrows():
print(i, k["isin"], "|", "; ".join(validar(k)))R10 ZZ3353919667 | sin avisos
R12 ZZ6549778970 | sin avisos
R14 ZZ2516219569 | coste a 5 años -3.3 % frente al moderado
R16 ZZ8471203886 | coste a 5 años -3.5 % frente al moderado
R18 ZZ6812181936 | coste a 5 años -4.4 % frente al moderadoLos cinco ISIN tienen el dígito de control correcto; el prefijo ZZ, en cambio, no corresponde a ningún país: es la
marca que usan los datos del curso para que nadie confunda estos fondos con fondos reales, y un validador de producción
lo comprobaría contra la lista de códigos de país. Escenarios y composición de costes cuadran. El aviso es el de los costes a 5 años: en
los cinco documentos son 5,3 veces los del primer año, cuando con el crecimiento del escenario moderado de los fondos
de acciones (4,7 % o 4,8 % anual) la suma de cinco años de incidencia sobre un saldo creciente da 5,5. En los tres
de R14, R16 y R18 el desvío pasa del 3 %; el de R10 se queda justo por debajo, y en el de bonos (R12), con un moderado
del 1,9 %, el factor 5,3 casi coincide con lo esperado. La comprobación es aproximada (el reglamento detalla cómo se
acumulan los costes dentro de cada año), pero un factor fijo para productos con rentabilidades distintas es una
pregunta para la gestora.
Hay una segunda comprobación que solo se ve al comparar documentos entre sí:
cols = [c for c in kid.columns if c.startswith("esc_")]
firma = kid[cols].astype(float).round(0).apply(tuple, axis=1)
for _, grupo in kid.groupby(firma):
if len(grupo) > 1:
print("mismos escenarios:", ", ".join(
kids.loc[grupo.index, "entidad"]))mismos escenarios: Sintético Mercados Emergentes UCITS ETF, Sintético Tecnología EE. UU. UCITS ETF
mismos escenarios: Sintético Renta Variable Global UCITS ETF, Sintético Dividendo Europa UCITS ETFUn fondo de renta variable global y otro de dividendos europeos con los mismos escenarios hasta el euro no es imposible, pero es muy improbable si cada uno se calcula con su propia historia. En estos datos sintéticos los escenarios dependen solo del indicador de riesgo; en un KID real, la misma coincidencia sería un indicio de plantilla copiada y una razón para no tomar las cifras como propias de ese fondo.
El indicador resumido de riesgo, desde la volatilidad
El anexo II del Reglamento Delegado 2017/653 mide el riesgo de mercado con la volatilidad equivalente al VaR (VEV): la volatilidad anualizada que corresponde al valor en riesgo al 97,5 % a lo largo del periodo de mantenimiento recomendado. Para los PRIIPs de la categoría 2 (exposición no apalancada, o con un múltiplo constante, a activos con historia de precios suficiente, como un ETF), el VaR se calcula con los momentos de la distribución de rendimientos de los últimos cinco años: volatilidad, asimetría y exceso de curtosis (una expansión de Cornish-Fisher). La VEV se convierte en clase con una tabla:
| Clase de riesgo de mercado | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| VEV | < 0,5 % | 0,5-5 % | 5-12 % | 12-20 % | 20-30 % | 30-80 % | > 80 % |
Si los rendimientos fueran normales, la VEV sería la volatilidad anualizada; con colas gruesas o asimetría negativa es mayor. La aproximación de la celda usa solo la volatilidad de los últimos cinco años y, por tanto, infravalora el riesgo de las series con colas: sirve para entender la tabla, no para calcular un KID. Las series son de los datos del curso:
etf = pd.read_csv("etf_indice_diario.csv", parse_dates=["fecha"])
fx = pd.read_parquet("fx3_diario.parquet")
ind = pd.read_csv("futuros3_indices_contado.csv", parse_dates=["fecha"])
fut = pd.read_parquet("futuros2_continuos.parquet")
cri = pd.read_parquet("cripto3_diario.parquet")
def s(df, filtro, col):
return df[filtro].set_index("fecha")[col].sort_index()
series = {
"BOA (futuro, bono 2 años)": s(fut, fut["mercado"] == "BOA",
"cierre_ajustado"),
"BOB (futuro, bono 5 años)": s(fut, fut["mercado"] == "BOB",
"cierre_ajustado"),
"QEVUSD (divisa)": s(fx, fx["par"] == "QEVUSD", "spot"),
"ETF del nivel 1 (VL)": etf.set_index("fecha")["etf_vl"],
"RVH (índice)": s(ind, ind["indice"] == "RVH", "contado"),
"ETF x2 del nivel 1": etf.set_index("fecha")["etf_2x_precio"],
"XBQ (cripto)": s(cri, (cri["exchange"] == "boreal")
& (cri["activo"] == "XBQ"), "cierre_spot"),
}
LIMITES = [0.5, 5, 12, 20, 30, 80]
def clase_mrm(vev_pct):
return 1 + sum(vev_pct >= x for x in LIMITES)
filas = []
for nombre, p in series.items():
p = p[p.index > p.index.max() - pd.DateOffset(years=5)]
r = np.log(p).diff().dropna()
anual = 365 if "cripto" in nombre else 252
vol = 100 * r.std() * np.sqrt(anual)
filas.append((nombre, round(vol, 2), clase_mrm(vol),
round(r.skew(), 2), round(r.kurt(), 1)))
mrm = pd.DataFrame(filas, columns=["serie", "vol_pct", "clase",
"asimetria", "exceso_curtosis"])
mrm serie vol_pct clase asimetria exceso_curtosis
0 BOA (futuro, bono 2 años) 1.90 2 -0.35 1.5
1 BOB (futuro, bono 5 años) 4.82 2 -0.31 1.3
2 QEVUSD (divisa) 8.22 3 -0.19 0.8
3 ETF del nivel 1 (VL) 20.51 5 0.28 7.0
4 RVH (índice) 21.52 5 -0.03 0.8
5 ETF x2 del nivel 1 40.98 6 0.11 7.0
6 XBQ (cripto) 57.86 6 -0.12 2.3Dos lecciones salen de la tabla. La primera: el ETF del nivel 1 queda a medio punto de la frontera entre 4 y 5. Un cambio pequeño de la volatilidad de cinco años mueve el número que ve el inversor, por eso el reglamento pide al productor hacer un seguimiento de los datos del indicador. La segunda: las series con exceso de curtosis alto, como el ETF del nivel 1 y su versión x2 (7,0), tendrían con el cálculo completo una VEV mayor que su volatilidad; para las series casi normales, como el índice RVH o la divisa, la aproximación se acerca más.
El indicador resumido combina la clase de mercado con una clase de riesgo de crédito (del emisor o de quien debe pagar). La tabla de la parte 3 del anexo II, tal cual:
IRR = { # filas: clase de crédito 1-6; columnas: clase de mercado 1-7
1: [1, 2, 3, 4, 5, 6, 7],
2: [1, 2, 3, 4, 5, 6, 7],
3: [3, 3, 3, 4, 5, 6, 7],
4: [5, 5, 5, 5, 5, 6, 7],
5: [5, 5, 5, 5, 5, 6, 7],
6: [6, 6, 6, 6, 6, 6, 7],
}
def indicador(clase_mercado, clase_credito):
return IRR[clase_credito][clase_mercado - 1]
for m, c in [(2, 1), (2, 4), (5, 3), (7, 1)]:
print(f"mercado {m}, crédito {c} -> indicador {indicador(m, c)}")mercado 2, crédito 1 -> indicador 2
mercado 2, crédito 4 -> indicador 5
mercado 5, crédito 3 -> indicador 5
mercado 7, crédito 1 -> indicador 7Un fondo UCITS, con los activos separados en el depositario, suele tener riesgo de crédito bajo y su indicador es su clase de mercado. Un producto estructurado de un emisor débil puede tener un riesgo de mercado de 2 y un indicador de 5. Y los derivados son otra historia: el punto 4 del anexo II incluye en la categoría 1 los PRIIPs en los que se puede perder más de lo invertido y los derivados de los puntos 4 a 10 de la sección C del anexo I de MiFID II, y el punto 8 les asigna la clase de mercado 7. Una opción cotizada, un futuro o un CFD llevan indicador 7, sea cual sea la volatilidad del subyacente.
Escenarios de rentabilidad: lo que dicen y lo que no
Desde la modificación de 2021, los escenarios desfavorable, moderado y favorable de un PRIIP de categoría 2 salen de la historia del producto o de su índice de referencia: según las preguntas y respuestas del Comité Mixto, esa historia tiene que cubrir al menos 10 años y 5 más que el periodo de mantenimiento recomendado, se parte en subintervalos de la longitud de ese periodo y los resultados se ordenan para elegir cada escenario. El escenario de tensión se calcula aparte. Para ver de dónde salen esas cifras, una ilustración con la serie de un índice del nivel 3 (no es el método exacto del anexo IV, que tiene más pasos):
rva = s(ind, ind["indice"] == "RVA", "contado").resample("ME").last()
finales = 10_000 * (rva.shift(-60) / rva).dropna()
print(f"{len(rva)} meses ({rva.index.min():%Y-%m} a "
f"{rva.index.max():%Y-%m}); {len(finales)} ventanas de 5 años")
print(finales.quantile([0, 0.1, 0.5, 0.9, 1]).round(0).to_string())192 meses (2010-01 a 2025-12); 132 ventanas de 5 años
0.0 11197.0
0.1 13047.0
0.5 17419.0
0.9 21629.0
1.0 37766.0Con 16 años de historia mensual caben 132 ventanas de cinco años, con resultados entre 11.197 y 37.766 EUR y la mediana en 17.419. Casi todas se solapan: no son 133 observaciones independientes, son tres periodos de cinco años vistos desde distintos puntos de partida. Los escenarios de un KID resumen el pasado de ese producto con una regla común a todos los productos para que sean comparables; no son previsiones, y el propio documento lo dice («Los escenarios son ilustrativos y se basan en la evolución pasada»).
Alternativas para un minorista y lo que cuestan
| Alternativa | Qué hace | Lo que se gana | Lo que se pierde |
|---|---|---|---|
| ETF UCITS del mismo índice | Fondo domiciliado en la UE con KID | Se puede comprar como minorista; protección UCITS | Otro ticker, a veces otra divisa y otra bolsa; la retención sobre dividendos de EE. UU. se queda dentro del fondo (lección 7.4.6) |
| Opciones cotizadas sobre el ETF de EE. UU. | Derivado con KID del tipo de contrato | Exposición apalancada o cubierta | Indicador de riesgo 7, conveniencia obligatoria (lección 7.4.1), decaimiento temporal y margen |
| Acciones del índice una a una | Compra directa: no son PRIIPs | Sin KID ni comisión de gestión | Muchas órdenes, comisiones y divisa por cada una; réplica imperfecta |
| Pasar a cliente profesional | Fuera del ámbito de PRIIPs | Acceso al ETF de EE. UU. | Requisitos del anexo II y renuncia a protecciones (lección 7.4.1) |
Sobre las opciones, las preguntas y respuestas del Comité Mixto (sección IX, de 2017) aceptan para los futuros y las opciones negociados en un mercado regulado un KID por grupo de contratos con las mismas características relevantes (tipo de derivado, subyacente, estilo de ejercicio), por ejemplo uno para las compras de calls sobre acciones, no uno por serie. Por eso un bróker puede ofrecer a un minorista opciones sobre un ETF que no podría venderle.
La comparación de costes entre el ETF UCITS y el de EE. UU. es donde más se equivocan los foros: se compara la comisión de gestión y se olvida lo demás. Una calculadora con todas las hipótesis a la vista. La comisión del UCITS es la del KID sintético del fondo de tecnología de EE. UU. (0,32 % de incidencia anual); todo lo demás son supuestos de la lección, no datos de ningún producto:
H = dict(
inversion=10_000, anos=20,
precio=0.055, dividendo=0.015, # rentabilidad bruta del índice
coste_ucits=kid.loc["R18", "incidencia"] / 100,
coste_eeuu=0.0010, # hipótesis
retencion=0.15, # hipótesis: en origen, EE. UU.
divisa=0.002, # hipótesis: cada conversión
)
def valor_final(ucits, retencion_recuperable=False, h=H):
v = h["inversion"] * (1 - (0 if ucits else h["divisa"]))
coste = h["coste_ucits"] if ucits else h["coste_eeuu"]
for _ in range(h["anos"]):
div = v * h["dividendo"]
ret = 0 if retencion_recuperable else div * h["retencion"]
conv = 0 if ucits else (div - ret) * h["divisa"]
v = v * (1 + h["precio"]) + div - ret - conv
v *= 1 - coste
return v * (1 - (0 if ucits else h["divisa"]))
bruto = H["inversion"] * (1 + H["precio"] + H["dividendo"]) ** H["anos"]
casos = {
"UCITS acumulación (retención en el fondo)": valor_final(True),
"EE. UU., retención no recuperable": valor_final(False),
"EE. UU., retención recuperada en España": valor_final(False, True),
}
for k, v in casos.items():
print(f"{k:42} {v:9,.0f} EUR coste {bruto - v:7,.0f}")UCITS acumulación (retención en el fondo) 34,798 EUR coste 3,899
EE. UU., retención no recuperable 36,204 EUR coste 2,493
EE. UU., retención recuperada en España 37,757 EUR coste 939La calculadora simplifica dos cosas a propósito. Supone que la retención sobre los dividendos de EE. UU. dentro del fondo UCITS es la misma que la que sufre el inversor directo, y modela el caso de EE. UU. con los dividendos reinvertidos sin impuesto español: el tratamiento real (convenios de doble imposición, deducción en el IRPF, momento en que tributa cada opción) está en la lección 7.4.6 y cambia el resultado. Con estas hipótesis, el ETF UCITS que puede comprar un minorista es el más caro de los tres. Pero la diferencia entre los dos casos de EE. UU., que solo cambian la hipótesis sobre la retención (1.553 EUR), es mayor que la que separa al UCITS del de EE. UU. sin recuperarla (1.406 EUR), que recoge la diferencia de comisiones (0,22 puntos al año) y los costes de divisa. Hasta que no se escribe la hipótesis fiscal, la comparación no significa nada. La figura de la cabecera dibuja los tres casos.
Ejercicios
- Escribe una función que compruebe que un KID en texto tiene las secciones del artículo 8 en el orden correcto y aplícala a los cinco KID. Después quítale una sección a uno y comprueba que la detecta.
Solución
SECCIONES = [
"## Finalidad",
"## Producto",
"## ¿Qué es este producto?",
"## ¿Qué riesgos corro y qué podría obtener a cambio?",
"## ¿Qué pasa si",
"## ¿Cuáles son los costes?",
"## ¿Cuánto tiempo debo mantener la inversión",
"## ¿Cómo puedo reclamar?",
"## Otros datos de interés",
]
def secciones_ok(texto):
pos = [texto.find(s) for s in SECCIONES]
faltan = [s for s, p in zip(SECCIONES, pos) if p < 0]
if faltan:
return "faltan: " + "; ".join(faltan)
return "ok" if pos == sorted(pos) else "orden incorrecto"
print({i: secciones_ok(t) for i, t in kids["texto"].items()})
roto = kids.loc["R12", "texto"].replace("## ¿Cómo puedo reclamar?", "")
secciones_ok(roto){'R10': 'ok', 'R12': 'ok', 'R14': 'ok', 'R16': 'ok', 'R18': 'ok'}
'faltan: ## ¿Cómo puedo reclamar?'Los cinco cumplen la estructura. La comprobación es útil antes de indexar documentos en un RAG (lección 6.3.2): un KID al que le falta una sección probablemente se ha extraído mal del PDF, y sus respuestas serán incompletas.
- En la calculadora, ¿qué comisión anual tendría que tener el ETF UCITS para igualar el valor final del ETF de EE. UU. con retención no recuperable? ¿Y con retención recuperada?
Solución
def equilibrio(objetivo):
lo, hi = 0.0, 0.02
for _ in range(60): # bisección
mid = (lo + hi) / 2
v = valor_final(True, h={**H, "coste_ucits": mid})
lo, hi = (mid, hi) if v > objetivo else (lo, mid)
return 100 * mid
for k in list(casos)[1:]:
print(f"{k:42} {equilibrio(casos[k]):.3f} %")EE. UU., retención no recuperable 0.122 %
EE. UU., retención recuperada en España 0.000 %Frente al ETF de EE. UU. con retención no recuperable, el UCITS empataría con una incidencia anual del 0,122 % en vez del 0,32 % de su KID. Frente al caso con retención recuperada no empata ni con comisión cero (la bisección se queda en 0,000 %): en esta hipótesis, la retención dentro del fondo es un coste que el inversor directo recupera y el UCITS no. La respuesta depende del tratamiento fiscal, no solo del producto.
- Un bróker te ofrece un ETF de EE. UU. si firmas «un formulario de cliente profesional». Explica qué tendría que comprobar el bróker antes de aceptarlo y qué documento dejarías de recibir con cada orden.
Solución
El bróker tendría que comprobar que cumples dos de los tres criterios del anexo II de MiFID II y del artículo 113 del Real Decreto 813/2023 (diez operaciones de volumen significativo por trimestre de media, cartera de más de 500.000 EUR, un año en un cargo del sector financiero) y seguir el procedimiento por escrito con declaración separada (lección 7.4.1). Un formulario sin esa comprobación no es una clasificación válida. Como profesional, el Reglamento PRIIPs no se aplica a tus compras: dejarías de recibir el KID, y con él el indicador de riesgo, los escenarios y los costes normalizados de cada producto; además, la entidad puede presumir tus conocimientos en la evaluación de conveniencia.
Respuesta plegada en cada pregunta
Autoevaluación
¿Por qué un bróker europeo vende a un minorista acciones de una empresa de EE. UU. pero no un ETF de EE. UU. sobre el mismo índice?
- APorque las acciones de EE. UU. tienen KID y los ETF no
- BPorque una acción no es un producto empaquetado: lo que recibe el inversor no depende de activos que no compra directamente; un ETF sí lo es y necesita un KID que su gestora no elabora
- CPorque los ETF de EE. UU. están prohibidos por ESMA
- DPorque los ETF de EE. UU. no cotizan en euros
Ver respuesta
Respuesta B. Porque una acción no es un producto empaquetado: lo que recibe el inversor no depende de activos que no compra directamente; un ETF sí lo es y necesita un KID que su gestora no elabora
El artículo 4.1 del Reglamento 1286/2014 define el PRIIP por la exposición a valores de referencia o a activos no adquiridos directamente por el inversor. Un ETF lo es; una acción, no. Sin KID, el artículo 13 impide venderlo a un minorista.
Un KID dice: costes totales si sale después de 1 año, 32 EUR sobre 10.000 EUR invertidos. ¿Qué hipótesis de rentabilidad hay detrás de esa cifra?
- ALa del escenario favorable
- BLa del escenario moderado
- CUna rentabilidad del 0 % el primer año; el escenario moderado para los demás periodos
- DLa rentabilidad histórica del último año
Ver respuesta
Respuesta C. Una rentabilidad del 0 % el primer año; el escenario moderado para los demás periodos
Es el texto prescrito de la presentación de costes (Preguntas y respuestas del Comité Mixto sobre el KID): el primer año se supone que el inversor recupera lo invertido (0 %); para el resto de periodos, el escenario moderado. Por eso 32 EUR son exactamente el 0,32 % de 10.000.
La volatilidad anualizada de un fondo en los últimos cinco años es del 20,5 %. ¿Qué clase de riesgo de mercado le corresponde, si su distribución es aproximadamente normal y su riesgo de crédito es el de la clase 1?
- A5: la tabla del anexo II pone el tramo de 20 % a 30 % en la clase 5, y con riesgo de crédito 1 el indicador resumido es igual a la clase de mercado
- B4, porque está cerca del 20 %
- C6
- DDepende del periodo de mantenimiento recomendado
Ver respuesta
Respuesta A. 5: la tabla del anexo II pone el tramo de 20 % a 30 % en la clase 5, y con riesgo de crédito 1 el indicador resumido es igual a la clase de mercado
La tabla de clases va de < 0,5 % (1) a > 80 % (7), con la frontera entre 4 y 5 en el 20 %. Con la fila de riesgo de crédito 1, el indicador es la clase de mercado. Una décima por encima de la frontera cambia el número que ve el inversor, por eso el reglamento pide hacer un seguimiento de los datos.
¿Qué indicador resumido de riesgo lleva el KID de una opción cotizada comprada por un minorista?
- AEl que salga de la volatilidad del subyacente
- BSiempre 1
- C7: los derivados de la sección C del anexo I de MiFID II son PRIIPs de categoría 1 y su clase de riesgo de mercado es 7
- DNo llevan indicador
Ver respuesta
Respuesta C. 7: los derivados de la sección C del anexo I de MiFID II son PRIIPs de categoría 1 y su clase de riesgo de mercado es 7
El punto 4 del anexo II del Reglamento Delegado 2017/653 incluye en la categoría 1 los PRIIPs de los puntos 4 a 10 de la sección C del anexo I de MiFID II (derivados), y el punto 8 les asigna la clase 7. Con riesgo de crédito bajo, el indicador es 7.
En la calculadora de la lección, ¿qué decide sobre todo si el ETF UCITS sale más caro o más barato que el de EE. UU.?
- ASolo la comisión de gestión
- BEl indicador resumido de riesgo
- CEl escenario moderado del KID
- DLas hipótesis sobre la retención de los dividendos (dónde se practica y si el inversor la recupera) y los costes de divisa, más que la diferencia de comisiones
Ver respuesta
Respuesta D. Las hipótesis sobre la retención de los dividendos (dónde se practica y si el inversor la recupera) y los costes de divisa, más que la diferencia de comisiones
Con las hipótesis de la lección, cambiar si la retención en origen es recuperable mueve el coste a 20 años más que la diferencia de comisiones de gestión. Las reglas fiscales concretas están en la lección 7.4.6.
Ideas clave
- Un PRIIP es una inversión cuyo reembolso depende de activos que el inversor no compra directamente: fondos, ETF, derivados, estructurados. Una acción o un bono simple no lo son.
- Quien vende un PRIIP a un minorista debe entregarle antes el KID (art. 13); el productor lo elabora (art. 5). Los ETF de EE. UU. no suelen tenerlo, y por eso no se venden a minoristas de la UE.
- El KID tiene secciones y textos fijos; sus cifras se pueden extraer y validar: ISIN, rentabilidades anualizadas de los escenarios, suma de los costes y costes totales con 0 % el primer año.
- El indicador resumido de riesgo combina una clase de riesgo de mercado (por la volatilidad equivalente al VaR al 97,5 %, de < 0,5 % a > 80 %) y una de crédito; los derivados son siempre clase 7.
- Las alternativas tienen costes distintos: el ETF UCITS (KID y retenciones dentro del fondo), las opciones (KID por tipo de contrato y riesgo 7) y el trato de profesional (sin KID ni protecciones); la comparación depende de hipótesis fiscales que hay que escribir.
Recursos
Documentación
- Reglamento (UE) 1286/2014 (PRIIPs), en el BOE
- Reglamento Delegado (UE) 2017/653 (normas técnicas del KID), versión original en el BOE
- Reglamento (UE) 2021/2259: prórroga hasta el 31 de diciembre de 2022 de la exención de los OICVM, en el BOE
- Comité Mixto de las AES: preguntas y respuestas consolidadas sobre el KID de PRIIPs (JC 2023 22)