---
title: "4.4.1 Elegir bróker desde España y la UE"
description: "Registros de la CNMV y de ESMA, pasaporte MiFID II, segregación e indemnización, coste total, API y modelos 720 y 721, con código y sin recomendaciones."
url: "https://pythonparatrading.com/curso-python-trading/nivel-4/elegir-broker-desde-espana-y-la-ue/"
lang: "es"
image: "https://pythonparatrading.com/og/curso-python-trading/nivel-4/elegir-broker-desde-espana-y-la-ue.png"
---

# 4.4.1 · Elegir bróker desde España o la UE: regulación, activos, costes y API

> Antes de comparar comisiones hay que saber con qué entidad se firma, quién la supervisa y qué pasa con los valores si quiebra. Esta lección convierte cada criterio en una comprobación: lee con código extractos con el formato de los registros de la CNMV y de ESMA, calcula qué cubren la segregación y los sistemas de indemnización, estima el coste total de dos perfiles de trading con supuestos explícitos y aplica las reglas de los modelos 720 y 721. No recomienda ningún bróker ni es asesoramiento.

- Curso: [Nivel 4: Carteras, riesgo, ejecución y trading en real](https://pythonparatrading.com/curso-python-trading/nivel-4/)
- Módulo: 4.4 · Brokers y APIs
- Duración: 60 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.5 · Costes, liquidación, apalancamiento y margen](https://pythonparatrading.com/curso-python-trading/nivel-1/costes-liquidacion-apalancamiento-y-margen/), [2.4.7 · Modelado de costes: comisiones, horquilla, impacto, financiación y préstamo de títulos](https://pythonparatrading.com/curso-python-trading/nivel-2/modelado-de-costes/), [3.7.5 · MiCA: el marco de la UE para criptoactivos y sus proveedores (CASP)](https://pythonparatrading.com/curso-python-trading/nivel-3/mica-y-casp-en-la-ue/)

## Al terminar esta lección

- Identificar la entidad jurídica que presta el servicio y su régimen: empresa de servicios de inversión o entidad de crédito, española, de otro Estado del EEE (libre prestación o sucursal) o de un tercer país.
- Consultar y procesar con código los registros de la CNMV y de ESMA: servicios autorizados (anexo I de MiFID II), estado de la autorización, pasaporte y advertencias sobre entidades no autorizadas o clonadas.
- Distinguir lo que protege la segregación de activos de lo que cubre un sistema de indemnización (100.000 euros en el FOGAIN, un mínimo de 20.000 en la UE) y de lo que no cubre nadie: las pérdidas de mercado.
- Estimar el coste anual total de un perfil de trading (comisiones, divisa, custodia, datos) con supuestos explícitos y ver cómo cambia lo que importa según el perfil.
- Aplicar las reglas de umbral y de incremento de los modelos informativos 720 y 721 tal como las publican el BOE y la AEAT.

## Antes del precio, la entidad

Elegir bróker suele empezar por una tabla de comisiones. Esta lección empieza por otra pregunta: **con qué entidad
jurídica se firma el contrato**. De ella dependen quién la supervisa, qué servicios puede prestar, dónde están los
valores, qué sistema de indemnización cubre al cliente si quiebra y qué obligaciones informativas tiene un residente en
España. La lección 1.1.1 presentó al bróker como un eslabón de la cadena de una orden; aquí se le trata como lo que
también es, una contraparte.

En la UE, quien recibe, transmite o ejecuta órdenes de clientes es una **empresa de servicios de inversión** (ESI; en
España, sociedades y agencias de valores) o una **entidad de crédito** (un banco) autorizada para esos servicios. La
CNMV lo resume así: para contratar un servicio de inversión hay que acudir a entidades autorizadas, y para saber cuáles
lo están, qué servicios puede ofrecer cada una y sus tarifas máximas, hay que consultar sus registros oficiales; para
los agentes de una entidad de crédito, el registro del Banco de España[^1].

La entidad puede ser española o venir de fuera con dos regímenes distintos:

```mermaid
flowchart TB
  A[Autorizada en Irlanda] --> C[Comunica a su supervisor]
  C --> L[Libre prestación]
  C --> S[Sucursal en España]
  L --> R[Lista de la CNMV]
  S --> R
  T[Tercer país] --> I[Iniciativa del cliente]
```

- **Pasaporte europeo.** Una ESI autorizada en otro Estado miembro puede prestar en España los servicios cubiertos por
  su autorización, sin requisitos adicionales sobre lo que regula MiFID II, comunicándolo antes a la autoridad de su
  Estado de origen (libre prestación, artículo 34 de la Directiva 2014/65/UE) o abriendo una sucursal (artículo 35)[^2].
  La supervisión prudencial sigue siendo la del Estado de origen, y también el sistema de indemnización.
- **Tercer país.** Una entidad de fuera de la UE no tiene pasaporte. Cada Estado puede exigirle una sucursal
  autorizada por su supervisor (artículo 39), y el requisito de autorización no se aplica cuando el cliente pone en
  marcha el servicio por iniciativa exclusivamente propia (artículo 42). Esa excepción no convierte a la entidad en
  supervisada en la UE: el cliente queda fuera de las protecciones europeas.

La CNMV publica la lista de ESI del EEE que operan en España en libre prestación con los datos que le remiten las
autoridades de origen («responsables de garantizar que la información remitida sea exacta»). El 22 de octubre de 2026
tenía 809 entidades de 29 Estados; la figura de la cabecera las cuenta por país:

| Lista de la CNMV (consulta del 22/10/2026) | Entidades |
|---|---|
| Sociedades y agencias de valores españolas | 114 |
| Empresas de asesoramiento financiero | 92 |
| ESI del EEE con sucursal en España | 46 |
| ESI del EEE en libre prestación | 809 |
| ESI de fuera del EEE con sucursal | 1 |
| ESI de fuera del EEE en libre prestación | 11 |

Que una entidad aparezca en una lista no dice nada de su calidad: dice que está autorizada y por quién. Lo que sigue
convierte esa comprobación, y las demás, en código.

## Leer los registros con código

Tres fuentes primarias bastan para la parte regulatoria: las listas de la CNMV, el registro de ESMA y la sección de
advertencias de la CNMV (entidades no autorizadas, también las que imitan el nombre o la web de una autorizada). La
lista de la CNMV es una página HTML con un bloque de cuatro líneas por entidad. El código real para descargarla y
contarla:

```python skip title="cnmv_libre_prestacion.py"
import collections
import html
import re
from urllib.request import Request, urlopen

URL = ("https://www.cnmv.es/portal/consultas/listadoentidad.aspx"
       "?id=1&tipoent=4")             # ESI del EEE en libre prestación
req = Request(URL, headers={"User-Agent": "Mozilla/5.0"})
with urlopen(req, timeout=30) as r:
    pagina = r.read().decode("utf-8", errors="replace")
texto = html.unescape(re.sub(r"<[^>]+>", "\n", pagina))
paises = re.findall(r"País:\s*([^\n]+)", texto)
print(len(paises), collections.Counter(paises).most_common(3))
```

Con la página del 22/10/2026 imprime 809 entidades, con Chipre (220), Alemania (100) y Países Bajos (94) en cabeza.
Para ejecutarlo sin red, la celda siguiente usa un extracto **ficticio** con el mismo formato: tres brókeres
inventados (Alcor, Brio y Cenit, los de la lección 2.4.7) y una entidad más.

```python
import re
import pandas as pd

LISTA = """
ALCOR SECURITIES IRELAND LIMITED
 Número y fecha de registro oficial: 9101 - 14/03/2021
 Dirección: 1 Quay Street - D01 DUBLIN
 País: IRLANDA
BRIO BROKERS B.V.
 Número y fecha de registro oficial: 9102 - 02/06/2017
 Dirección: Kade 2 - 1000 AMSTERDAM
 País: PAISES BAJOS
CENIT MARKETS (CY) LTD
 Número y fecha de registro oficial: 9103 - 10/04/2012
 Dirección: Odos 3 - 3035 LIMASSOL
 País: CHIPRE
DELTA FUTURES GMBH
 Número y fecha de registro oficial: 9104 - 01/09/2026
 Dirección: Platz 4 - 60311 FRANKFURT AM MAIN
 País: ALEMANIA
"""
patron = re.compile(
    r"^(?P<nombre>\S[^\n]*)\n"
    r"\s*Número y fecha de registro oficial: (?P<num>\d+)"
    r" - (?P<fecha>\d\d/\d\d/\d{4})\n"
    r"\s*Dirección: (?P<direccion>[^\n]*)\n"
    r"\s*País: (?P<pais>[^\n]+)", re.M)
cnmv = pd.DataFrame([m.groupdict() for m in patron.finditer(LISTA)])
cnmv["fecha"] = pd.to_datetime(cnmv["fecha"], format="%d/%m/%Y")
cnmv[["nombre", "num", "fecha", "pais"]]
```
```output
                             nombre   num      fecha          pais
0  ALCOR SECURITIES IRELAND LIMITED  9101 2021-03-14       IRLANDA
1                 BRIO BROKERS B.V.  9102 2017-06-02  PAISES BAJOS
2            CENIT MARKETS (CY) LTD  9103 2012-04-10        CHIPRE
3                DELTA FUTURES GMBH  9104 2026-09-01      ALEMANIA
```

La lista de la CNMV no lleva LEI ni servicios. Para eso está el registro de ESMA de empresas de servicios de inversión
(«MiFID investment firms»), que recoge las autorizadas por las autoridades nacionales con sus servicios y
actividades[^3]. Su interfaz web consulta un índice de búsqueda que devuelve JSON; la consulta de abajo funcionaba el
22/10/2026, pero no es una API documentada y puede cambiar sin aviso:

```python skip title="esma_registro_mifid.py"
import json
from urllib.parse import urlencode
from urllib.request import Request, urlopen

BASE = ("https://registers.esma.europa.eu/solr/"
        "esma_registers_upreg/select?")
def consulta(q, **extra):
    url = BASE + urlencode({"q": q, "wt": "json", "rows": 50, **extra})
    req = Request(url, headers={"User-Agent": "Mozilla/5.0"})
    with urlopen(req, timeout=30) as r:
        return json.load(r)["response"]["docs"]

firmas = consulta('ae_entityName:"Nombre de la entidad"')
for f in firmas:                       # entidad: estado, Estado, fechas
    print(f["ae_entityName"], f["ae_lei"], f["ae_status"],
          f["ae_homeMemberState"],
          f["ae_authorisationNotificationDateStr"])
    hijos = consulta('{!child of="type_s:parent"}id:' + f["id"])
    print([h["ac_serviceName"] for h in hijos
           if h["entity_type"] == "aeActivity"])
```

Cada entidad es un documento «padre» (`ae_entityName`, `ae_lei`, `ae_competentAuthority`, `ae_homeMemberState`,
`ae_status`, fechas de autorización y de retirada) con documentos «hijos» por servicio (`ac_serviceName`,
`ac_status`). Los nombres de los servicios siguen el anexo I de MiFID II: la sección A son los servicios de inversión y
la B, los auxiliares[^2]. El extracto ficticio con esos campos:

```python
ANEXO_I = {
    "reception and transmission of orders": "A1",
    "execution of orders": "A2",
    "dealing on own account": "A3",
    "portfolio management": "A4",
    "investment advice": "A5",
    "safekeeping and administration": "B1",
    "granting credits or loans": "B2",
    "foreign exchange services": "B4",
}
def ent(nombre, lei, pais, estado, alta, baja, servicios):
    return {"ae_entityName": nombre, "ae_lei": lei,
            "ae_homeMemberState": pais, "ae_status": estado,
            "ae_authorisationNotificationDateStr": alta,
            "ae_authorisationWithdrawalEndDateStr": baja,
            "hijos": [{"ac_serviceName": s, "ac_status": "Active"}
                      for s in servicios]}

esma_json = [
    ent("Alcor Securities Ireland Limited", "5299009ALCOR0IE0001",
        "IRELAND", "Active", "22/12/2020", "",
        ["Reception and transmission of orders",
         "Execution of orders", "Dealing on own account",
         "Safekeeping and administration",
         "Granting credits or loans", "Foreign exchange services"]),
    ent("Brio Brokers B.V.", "5299009BRIO00NL0002", "NETHERLANDS",
        "Active", "02/03/2017", "",
        ["Reception and transmission of orders",
         "Execution of orders"]),
    ent("Cenit Markets (CY) Ltd", "5299009CENIT0CY0003", "CYPRUS",
        "Inactive", "05/03/2012", "30/09/2026",
        ["Reception and transmission of orders",
         "Execution of orders", "Dealing on own account",
         "Safekeeping and administration"]),
]
filas = []
for e in esma_json:
    servicios = {ANEXO_I.get(h["ac_serviceName"].lower(), "?")
                 for h in e["hijos"] if h["ac_status"] == "Active"}
    filas.append({
        "nombre": e["ae_entityName"], "pais": e["ae_homeMemberState"],
        "estado": e["ae_status"],
        "baja": pd.to_datetime(
            e["ae_authorisationWithdrawalEndDateStr"],
            format="%d/%m/%Y"),
        "servicios": "".join(sorted(servicios))})
esma = pd.DataFrame(filas)
esma
```
```output
                             nombre         pais    estado       baja     servicios
0  Alcor Securities Ireland Limited      IRELAND    Active        NaT  A1A2A3B1B2B4
1                 Brio Brokers B.V.  NETHERLANDS    Active        NaT          A1A2
2            Cenit Markets (CY) Ltd       CYPRUS  Inactive 2026-09-30      A1A2A3B1
```

Alcor tiene órdenes (A1, A2), cuenta propia (A3), custodia (B1), crédito para operar (B2) y cambio de divisas (B4).
Brio solo recibe y ejecuta órdenes: no tiene autorizada la custodia, así que los valores de sus clientes estarán en otra
entidad, y es esa la que hay que identificar y comprobar. Cenit figura como inactiva, con la autorización retirada el
30/09/2026, aunque el extracto de la lista de la CNMV la sigue mostrando: dos registros pueden no estar sincronizados el
mismo día, y el de la autoridad de origen manda.

## Cruzar las fuentes y buscar clones

Los nombres no coinciden entre registros: mayúsculas, formas jurídicas abreviadas («LIMITED» y «Ltd»), puntos y
paréntesis. Hay que normalizarlos antes de cruzar. La CNMV advierte además de entidades que suplantan a otras
autorizadas con un nombre o una web casi iguales; una comparación aproximada de nombres contra la lista de advertencias
las detecta. El LEI, que valida sus dígitos de control como en la lección 3.7.5, es la clave fiable cuando está; la
lista de la CNMV no lo trae.

```python
import difflib

def norma(nombre):
    """Mayúsculas, sin puntuación ni espacios, formas abreviadas."""
    n = re.sub(r"[^A-Z0-9 ]", " ", nombre.upper())
    n = re.sub(r"\bLIMITED\b", "LTD", n)
    n = re.sub(r"\bB V\b", "BV", n)
    return re.sub(r"\s+", "", n)

ADVERTENCIAS = ["ALCOR SECURITIES LTD (alcor-securities.example)",
                "ORION CAPITAL FX"]
cnmv["clave"] = cnmv["nombre"].map(norma)
esma["clave"] = esma["nombre"].map(norma)
avisos = {norma(a.split(" (")[0]) for a in ADVERTENCIAS}
autorizadas = set(cnmv["clave"]) | set(esma["clave"])

def comprobar(nombre, necesito="A1A2B1", dia="2026-10-22"):
    k = norma(nombre)
    r = {"en la lista de la CNMV": k in set(cnmv["clave"])}
    fila = esma[esma["clave"] == k]
    r["en el registro de ESMA"] = not fila.empty
    if not fila.empty:
        f = fila.iloc[0]
        r["autorización vigente"] = (f["estado"] == "Active" and (
            pd.isna(f["baja"]) or f["baja"] > pd.Timestamp(dia)))
        pedidos = [necesito[i:i + 2]
                   for i in range(0, len(necesito), 2)]
        r["servicios " + necesito] = all(s in f["servicios"]
                                         for s in pedidos)
    r["sin advertencia de la CNMV"] = k not in avisos
    if k not in autorizadas:          # ¿imita a una autorizada?
        r["no imita a una autorizada"] = all(
            difflib.SequenceMatcher(None, k, a).ratio() < 0.8
            for a in autorizadas)
    return r

for nombre in ["Alcor Securities Ireland Limited", "Brio Brokers BV",
               "Cenit Markets (CY) Ltd", "Alcor Securities Ltd"]:
    fallos = [c for c, ok in comprobar(nombre).items() if not ok]
    print(f"{nombre:<33s} {'OK' if not fallos else 'NO'} {fallos}")
```
```output
Alcor Securities Ireland Limited  OK []
Brio Brokers BV                   NO ['servicios A1A2B1']
Cenit Markets (CY) Ltd            NO ['autorización vigente']
Alcor Securities Ltd              NO ['en la lista de la CNMV', 'en el registro de ESMA', 'sin advertencia de la CNMV', 'no imita a una autorizada']
```

Alcor pasa todas las comprobaciones para un servicio de órdenes con custodia. Brio está registrada y activa, pero le
falta B.1. Cenit tiene la autorización retirada. Y «Alcor Securities Ltd», un nombre casi igual al de Alcor, no está en
ningún registro y sí en la lista de advertencias: es el patrón de un clon, que copia la marca de una entidad autorizada
con otra sociedad y otra web. La comprobación automática no sustituye a leer el contrato, pero evita el error más caro:
operar con una sociedad distinta de la que se cree.

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

La entidad que importa es la que figura en el contrato y en los extractos, no la de la publicidad. Muchos grupos
tienen sociedades en varios países (por ejemplo, una en EE. UU. y otra en la UE) bajo la misma marca y con
protecciones distintas. Hay que buscar esa sociedad concreta, por su nombre exacto y, si lo tiene, por su LEI.

</aside>

## Qué protege y qué no

Dos mecanismos distintos protegen al cliente de un bróker, y conviene no confundirlos con un tercero que no existe:

- **Segregación.** MiFID II obliga a la ESI que tiene instrumentos financieros de clientes a tomar medidas para
  salvaguardar sus derechos de propiedad, «sobre todo en caso de insolvencia», y a no usarlos por cuenta propia salvo
  con el consentimiento expreso del cliente; y, con los fondos, a salvaguardarlos y, salvo las entidades de crédito, a
  no usarlos por cuenta propia (artículo 16, apartados 8 y 9)[^2]. Si la segregación funciona, en una quiebra los
  valores son del cliente y se devuelven. El consentimiento expreso importa: algunos brókeres prestan los valores de sus
  clientes, y ese préstamo crea una exposición a la contraparte.
- **Sistema de indemnización.** Si la entidad no puede restituir el dinero o los valores, el sistema paga lo que falte
  hasta un límite. La Directiva 97/9/CE exige una cobertura de al menos 20.000 euros (ecus en su texto) por inversor, y
  el sistema del Estado de origen cubre también a los clientes de sus sucursales en otros Estados (artículos 4 y
  7)[^4]. En España, el Fondo General de Garantía de Inversiones (FOGAIN) cubre la «posición acreedora global» del
  inversor frente a la ESI con un límite de 100.000 euros (Real Decreto 948/2001, artículo 6), cuando la ESI ha sido
  declarada en concurso o la CNMV declara que no puede cumplir sus obligaciones (artículo 5); para las entidades de
  crédito el sistema se instrumenta a través de los fondos de garantía de depósitos, y los depósitos están cubiertos
  hasta 100.000 euros (Directiva 2014/49/UE, artículo 6)[^5].
- **Lo que no cubre nadie.** El preámbulo del real decreto lo dice expresamente: la cobertura «no alcanzará a las
  pérdidas de valor de la inversión o a cualquier riesgo de crédito». Una caída del mercado, una mala estrategia o un
  bono que impaga no son asunto del sistema.

```mermaid
flowchart TB
  Q[El bróker quiebra] --> S{¿Valores segregados?}
  S -- sí --> D[Se devuelven]
  S -- falta parte --> F[Reclamación]
  F --> I[Indemnización hasta el límite]
  I --> P[Pérdida por encima]
```

La celda calcula qué recupera un inversor con 150.000 euros en valores y 20.000 en efectivo en cuatro escenarios, con
el límite español y con el mínimo europeo (lo que aplica depende del Estado de origen de la entidad):

```python
def recupera(valores, efectivo, falta, limite):
    """falta: fracción de lo custodiado que no aparece."""
    reclamable = falta * (valores + efectivo)
    cubierto = min(reclamable, limite)
    return reclamable, cubierto, reclamable - cubierto

valores, efectivo = 150_000, 20_000
casos = {"segregación correcta": 0.0,
         "falta el 30 %": 0.3,
         "fraude: falta todo": 1.0}
filas = []
for caso, falta in casos.items():
    for sistema, limite in [("FOGAIN", 100_000), ("mínimo UE", 20_000)]:
        rec, cub, perd = recupera(valores, efectivo, falta, limite)
        filas.append({"caso": caso, "sistema": sistema,
                      "reclamable": rec, "cubierto": cub,
                      "pérdida": perd})
# sin quiebra: el mercado cae un 25 %
filas.append({"caso": "caída del mercado 25 %", "sistema": "ninguno",
              "reclamable": 0, "cubierto": 0,
              "pérdida": 0.25 * valores})
pd.DataFrame(filas).set_index(["caso", "sistema"]).astype(int)
```
```output
                                  reclamable  cubierto  pérdida
caso                   sistema
segregación correcta   FOGAIN              0         0        0
                       mínimo UE           0         0        0
falta el 30 %          FOGAIN          51000     51000        0
                       mínimo UE       51000     20000    31000
fraude: falta todo     FOGAIN         170000    100000    70000
                       mínimo UE      170000     20000   150000
caída del mercado 25 % ninguno             0         0    37500
```

*Fig. — Inversor con 150.000 euros en valores y 20.000 en efectivo: lo que cubre el sistema de indemnización (tramo oscuro) y lo que pierde (tramo claro), en miles de euros, según el faltante y el límite; la caída del mercado no la cubre ningún sistema.* Cinco barras horizontales apiladas. Faltante del 30 % con el FOGAIN: 51 mil cubiertos, pérdida 0. Con el mínimo de la UE: 20 cubiertos, 31 de pérdida. Fraude total con el FOGAIN: 100 cubiertos, 70 de pérdida. Con el mínimo UE: 20 cubiertos, 150 de pérdida. Caída del mercado del 25 % sin quiebra, destacada: 37,5 de pérdida que no cubre nadie.

Con la segregación correcta, la quiebra no cuesta nada al cliente salvo tiempo: los valores se traspasan a otra
entidad. Con un faltante del 30 % (51.000 euros), el FOGAIN lo cubre entero y el mínimo europeo deja 31.000 euros de
pérdida. En el fraude total, la pérdida final es de 70.000 euros con el límite español y de 150.000 con el mínimo
europeo. Y la caída del mercado, 37.500 euros, no la cubre ningún sistema. Dos consecuencias prácticas: el Estado de
origen de la entidad importa (fija el sistema y su límite), y repartir patrimonio grande entre entidades distintas
reduce lo que queda por encima del límite.

## Activos, costes y API: criterios y cómo comprobarlos

Con la entidad comprobada, el resto de criterios son técnicos. Cada uno tiene una forma de comprobarlo que no depende
de la publicidad del bróker:

| Criterio | Qué mirar | Cómo comprobarlo |
|---|---|---|
| Activos | Mercados y tipos de instrumento; ETF UCITS frente a los de EE. UU. (lección 7.4.3); derivados y CFD (lección 7.4.2) | Lista de mercados y contratos del bróker; para un ETF concreto, buscarlo en su plataforma antes de abrir la cuenta |
| Comisiones | Esquema (por acción, fijo, porcentaje, escalonado), mínimos y máximos | Tarifa publicada; la CNMV registra las tarifas máximas de las entidades españolas |
| Divisa | Cuenta multidivisa o conversión automática en cada operación; diferencial aplicado | Tarifa y extracto de una operación de prueba |
| Custodia y otros | Custodia, inactividad, datos de mercado, retiradas, transferencias de valores | Tarifa completa, no la página comercial |
| Efectivo | Remuneración del efectivo, tipo de los préstamos con margen | Tarifa; extracto de fin de mes |
| API | Tipo (socket local, REST, websockets, FIX), cuenta de prueba, tipos de orden, identificador de cliente, límites de ritmo, datos por API | Documentación de la API y una semana en la cuenta de prueba (lecciones 4.4.2 a 4.4.4) |
| Operativa | Reinicios y mantenimiento, horario de soporte, procedimiento ante caídas | Documentación técnica y página de estado del bróker |

Los precios de cada bróker cambian y no se reproducen aquí. La lección 2.4.7 modeló las comisiones de tres brókeres
ficticios (`costes2_brokers.csv`) y sus puntos de cruce según el tamaño de la orden. Esta celda va más allá: aplica esas
tarifas a las órdenes reales del sistema en vivo del módulo 4.5 (la cuenta real, `vivo4_ordenes.csv`) y les suma los
costes que no son comisiones, con **supuestos ficticios y explícitos**, para dos perfiles: ese sistema diario y una
cartera de diez ETF que se rebalancea una vez al mes.

```python
ops = pd.read_csv("vivo4_extracto_operaciones.csv")
ops["efectivo"] = ops["cantidad"] * ops["precio"]
por_orden = ops.groupby("id_orden_broker").agg(
    acciones=("cantidad", "sum"), efectivo=("efectivo", "sum"))
por_orden["precio"] = por_orden["efectivo"] / por_orden["acciones"]
import exchange_calendars as xcals

dias = ops["fecha_operacion"]
sesiones = len(xcals.get_calendar("XNYS").sessions_in_range(
    dias.min(), dias.max()))           # sesiones del periodo
anual = 252 / sesiones
acciones_mes = por_orden["acciones"].sum() / sesiones * 21
print(f"{sesiones} sesiones ({dias.nunique()} con operaciones), "
      f"{len(por_orden)} órdenes; acciones al mes: {acciones_mes:,.0f}")
print(f"comisiones del extracto, anualizadas: "
      f"{ops['comision'].sum() * anual:,.0f} USD")

capital = 1_000_000                      # USD, cuenta real del módulo
diario = pd.DataFrame({
    "acciones": por_orden["acciones"].to_numpy(),
    "precio": por_orden["precio"].to_numpy(),
    "veces": anual})                      # cada orden, anualizada
mensual = pd.DataFrame({                  # supuesto: 10 ETF, 12 meses
    "acciones": [17] * 10, "precio": [100.0] * 10, "veces": 12})
perfiles = {"diario": (diario, capital), "mensual": (mensual, 200_000)}
for p, (d, cap) in perfiles.items():
    ef = (d["acciones"] * d["precio"] * d["veces"]).sum()
    print(f"{p:8s} órdenes/año {d['veces'].sum():6.0f}  "
          f"efectivo/año {ef:12,.0f}  rotación {ef / cap:5.1f}")
```
```output
56 sesiones (35 con operaciones), 250 órdenes; acciones al mes: 42,919
comisiones del extracto, anualizadas: 2,684 USD
diario   órdenes/año   1125  efectivo/año   52,964,780  rotación  53.0
mensual  órdenes/año    120  efectivo/año      204,000  rotación   1.0
```

El sistema diario ejecuta 250 órdenes en las 56 sesiones del periodo (opera en 35 de ellas): anualizadas, unas 1.125
órdenes y 53 millones de dólares de efectivo con una cuenta de un millón, una rotación de 53 veces el capital. Las
comisiones del extracto, anualizadas, son 2.684 dólares. La cartera mensual, con 200.000 dólares,
hace 120 órdenes pequeñas y rota una vez el capital al año. Los costes que no son comisiones, por bróker (todo
ficticio):

```python
import numpy as np

tarifas = pd.read_csv("costes2_brokers.csv")
def comision(broker, acciones, precio):
    """Primer tramo de cada plan de 2.4.7 (vectorizado)."""
    t = tarifas[(tarifas["broker"] == broker)
                & (tarifas["tramo_desde"] == 0)].iloc[-1]
    ef = acciones * precio
    c = {"por_accion": t["tarifa"] * acciones,
         "escalonado": t["tarifa"] * acciones,
         "fijo_por_orden": t["tarifa"] + 0 * acciones,
         "porcentaje": t["tarifa"] / 100 * ef}[t["tipo"]]
    if pd.notna(t["minimo_orden"]):
        c = np.maximum(c, t["minimo_orden"])
    if pd.notna(t["maximo_pct_efectivo"]):
        c = np.minimum(c, t["maximo_pct_efectivo"] / 100 * ef)
    return c

SUPUESTOS = {   # FICTICIOS: comprobar en la tarifa de cada bróker real
    "Alcor": {"fx_pb": 2, "fx_auto": False, "custodia_pct": 0.0,
              "datos_mes": 10.0},
    "Brio": {"fx_pb": 25, "fx_auto": True, "custodia_pct": 0.0,
             "datos_mes": 0.0},
    "Cenit": {"fx_pb": 10, "fx_auto": False, "custodia_pct": 0.10,
              "datos_mes": 0.0},
}
filas = []
for p, (d, cap) in perfiles.items():
    ef = (d["acciones"] * d["precio"] * d["veces"]).sum()
    for b, s in SUPUESTOS.items():
        com = (comision(b, d["acciones"], d["precio"])
               * d["veces"]).sum()
        convertido = cap + (ef if s["fx_auto"] else 0)
        filas.append({"perfil": p, "broker": b, "comisiones": com,
                      "divisa": convertido * s["fx_pb"] / 1e4,
                      "custodia": cap * s["custodia_pct"] / 100,
                      "datos": 12 * s["datos_mes"]})
coste = pd.DataFrame(filas).set_index(["perfil", "broker"])
coste["total"] = coste.sum(axis=1)
cap_perfil = coste.index.get_level_values(0).map(
    {p: c for p, (_, c) in perfiles.items()})
coste["pct_capital"] = 100 * coste["total"] / cap_perfil.to_numpy()
coste.round(2)
```
```output
                comisiones     divisa  custodia  datos      total  pct_capital
perfil  broker
diario  Alcor      1865.43     200.00       0.0  120.0    2185.43         0.22
        Brio       5568.75  134911.95       0.0    0.0  140480.70        14.05
        Cenit     42379.20    1000.00    1000.0    0.0   44379.20         4.44
mensual Alcor        42.00      40.00       0.0  120.0     202.00         0.10
        Brio        594.00    1010.00       0.0    0.0    1604.00         0.80
        Cenit       240.00     200.00     200.0    0.0     640.00         0.32
```

*Fig. — Coste anual total con supuestos ficticios (comisiones de la lección 2.4.7, divisa, custodia y datos) en porcentaje del capital: cartera mensual de 200.000 USD y sistema diario de 1 millón con rotación de 53 veces.* Dos paneles de barras con escalas distintas. Cartera mensual: Alcor 0,10 %, Brio 0,80 %, Cenit 0,32 %. Sistema diario: Alcor 0,22 %, Brio 14,0 % (destacado, casi todo por la conversión automática de divisa) y Cenit 4,4 % (casi todo por la comisión porcentual).

Con los mismos tres brókeres, lo que decide cambia con el perfil:

- **Cartera mensual.** Las comisiones son pequeñas en euros pero las mínimas por orden pesan (17 acciones de 100
  dólares pagan el mínimo en los tres planes), y aparecen los costes fijos: la tarifa de datos de Alcor, la custodia
  anual de Cenit, la conversión inicial del capital. Todos los totales quedan por debajo del 1 % del capital, y las
  diferencias entre brókeres son de cientos de dólares.
- **Sistema diario.** Con una rotación de 53, todo lo que es proporcional al efectivo se multiplica por 53. El 0,08 %
  de Cenit son 42.379 dólares al año, un 4,2 % del capital; la conversión automática de Brio a 25 pb, 134.912 dólares,
  un 13,5 %, mucho más que cualquier comisión. Con esos supuestos, la estrategia no sobreviviría en Brio ni en Cenit
  aunque su ventaja bruta fuera buena.
- **Tarifa frente a extracto.** La tarifa de Alcor aplicada orden a orden da 1.865 dólares, menos que los 2.684 que
  cobra el extracto de la cuenta real: el bróker de los datos aplica el mínimo por ejecución (una orden con tres
  ejecuciones puede pagar tres mínimos) y suma en las ventas dos tasas por operación (las que el README de los datos
  llama SEC y TAF). Un modelo de costes se
  calibra con el extracto, no con la página de tarifas.

La lección no es qué bróker es más barato (son ficticios), sino el método: perfil medido (órdenes, tamaños, rotación,
divisa), tarifa completa y coste total en porcentaje del capital, comparado con el rendimiento esperado de la
estrategia neto de los demás costes (lecciones 2.4.7 y 4.3.1). Un supuesto que cambia el orden, como la conversión de
divisa, merece una operación de prueba y la lectura del extracto antes de confiar en él.

Para la API, la comprobación es parecida: requisitos del sistema frente a lo que documenta cada bróker. Con atributos
ficticios:

```python
API = pd.DataFrame({
    "tipo": ["socket local", "REST + websocket", "REST"],
    "cuenta_prueba": [True, True, False],
    "orden_al_cierre": [True, False, True],
    "id_cliente": [True, True, True],
    "datos_por_api": [True, True, False],
}, index=["Alcor", "Brio", "Cenit"])
REQUISITOS = ["cuenta_prueba", "orden_al_cierre", "id_cliente",
              "datos_por_api"]
API["no_cumple"] = API[REQUISITOS].apply(
    lambda r: [c for c in REQUISITOS if not r[c]], axis=1)
API[["tipo", "no_cumple"]]
```
```output
                   tipo                       no_cumple
Alcor      socket local                              []
Brio   REST + websocket               [orden_al_cierre]
Cenit              REST  [cuenta_prueba, datos_por_api]
```

El sistema del módulo 4.5 ejecuta el 15 % de sus órdenes al cierre (MOC), necesita un identificador de cliente para no
duplicar órdenes al reconectar (lección 4.5.5) y quiere una cuenta de prueba para semanas de paper trading. Son
requisitos, no preferencias: un bróker que no los cumple no entra en la comparación de costes. La documentación pública
de la API (lecciones 4.4.2 a 4.4.4) y unos días en la cuenta de prueba los comprueban.

## Obligaciones informativas en España: modelos 720 y 721

Un residente en España con valores o criptoactivos en entidades del extranjero tiene obligaciones **informativas**
distintas de la tributación de las ganancias (que trata la lección 7.4.6). Lo que sigue son los hechos de las fuentes
oficiales, no asesoramiento; cada caso concreto conviene verificarlo con la AEAT o con un asesor.

- **Modelo 720** (bienes y derechos situados en el extranjero). Tiene tres bloques: cuentas, valores y seguros, e
  inmuebles. Para los «valores, derechos, seguros y rentas depositados, gestionados u obtenidas en el extranjero», el
  Reglamento General de gestión e inspección (RD 1065/2007, artículo 42 ter) exime cuando el valor conjunto no supera
  50.000 euros; si se
  supera, hay que informar de todos. En años sucesivos, solo hay que volver a presentarlo cuando el valor conjunto del
  bloque aumenta más de 20.000 euros respecto del que determinó la última declaración, y también en ciertos casos de
  pérdida de la titularidad. Plazo: del 1 de enero al 31 de marzo del año siguiente[^6]. Según la AEAT, las acciones
  cotizadas pueden valorarse por su cotización a 31 de diciembre, los importes en divisa se convierten al tipo de
  cambio de esa fecha y las variaciones del tipo de cambio cuentan para el incremento de 20.000 euros[^7].
- **Modelo 721** (monedas virtuales situadas en el extranjero, custodiadas por entidades que salvaguardan claves en
  nombre de terceros). Mismo esquema: sin obligación si el saldo conjunto a 31 de diciembre no supera 50.000 euros,
  nueva declaración con un incremento superior a 20.000 y plazo del 1 de enero al 31 de marzo (RD 1065/2007, artículo
  42 quater; Orden HFP/886/2023). En el modelo 720 no se informa de monedas virtuales[^6].

La regla de umbral e incremento, aplicada a un bloque de valores en dólares en un bróker extranjero, con valores y
tipos de cambio **supuestos**:

```python
cartera = pd.DataFrame({          # SUPUESTOS ilustrativos
    "anio": [2022, 2023, 2024, 2025],
    "valor_usd": [48_000, 61_000, 70_000, 82_000],
    "eurusd_31dic": [1.07, 1.10, 1.04, 1.17],
})
cartera["valor_eur"] = cartera["valor_usd"] / cartera["eurusd_31dic"]
ultima = None                     # valor de la última declaración
toca = []
for v in cartera["valor_eur"]:
    if ultima is None:
        presenta = v > 50_000
    else:
        presenta = v - ultima > 20_000
    toca.append(presenta)
    if presenta:
        ultima = v
cartera["presenta"] = toca
cartera.round({"valor_eur": 0})
```
```output
   anio  valor_usd  eurusd_31dic  valor_eur  presenta
0  2022      48000          1.07    44860.0     False
1  2023      61000          1.10    55455.0      True
2  2024      70000          1.04    67308.0     False
3  2025      82000          1.17    70085.0     False
```

En 2022 el bloque no llega a 50.000 euros y no hay obligación. En 2023 la supera y hay que presentar. En 2024 y 2025
el valor en dólares sube, pero el incremento en euros frente a la última declaración depende también del tipo de
cambio: con un euro más caro a finales de 2025, 82.000 dólares son menos euros, y el incremento acumulado no pasa de
20.000. El cálculo es sencillo; lo que exige cuidado es el valor que se usa (cotización a 31 de diciembre o los otros
criterios que admite la AEAT) y el tipo de cambio de esa fecha.

## Lista de comprobación y errores típicos

Una lista mínima antes de abrir una cuenta, en el orden en que conviene hacerla:

1. Nombre exacto de la sociedad que firma el contrato, su Estado de origen y su LEI.
2. Autorización vigente en el registro de su autoridad y en el de ESMA, con los servicios A.1/A.2 y B.1; inscripción en
   la lista correspondiente de la CNMV; ausencia en las advertencias.
3. Sistema de indemnización del Estado de origen, su límite y si los valores se prestan.
4. Tarifa completa aplicada al perfil propio: coste total en porcentaje del capital.
5. API y cuenta de prueba frente a los requisitos del sistema.
6. Obligaciones informativas (720, 721) y fiscales (lección 7.4.6) que genera la cuenta.

Errores típicos:

- **Comprobar la marca y no la sociedad.** El registro se consulta por la entidad que figura en el contrato.
- **Confundir indemnización con garantía de la inversión.** Ningún sistema cubre las pérdidas de mercado.
- **Comparar solo comisiones por orden.** La divisa, la custodia, los mínimos y los datos pueden pesar más, y su peso
  depende de la rotación.
- **Dar por buena una tarifa sin una operación de prueba.** El extracto dice lo que se cobra de verdad (la lección
  4.5.3 lo compara con el backtest).
- **Olvidar las obligaciones informativas** por tener la cuenta fuera: el umbral es por bloque y conjunto, no por
  entidad.

## Ejercicios

1. Añade al extracto de ESMA una entidad «Dorado Trade LLC», con Estado de origen fuera de la UE, y comprueba qué dice
   la función `comprobar`. ¿Qué haría falta, según MiFID II, para que pudiera prestar servicios a un cliente en
   España?

**Solución.**

```python
for fallo in [c for c, ok in comprobar("Dorado Trade LLC").items()
              if not ok]:
    print("NO:", fallo)
```
```output
NO: en la lista de la CNMV
NO: en el registro de ESMA
```

No está en la lista de la CNMV ni en el registro de ESMA de empresas autorizadas en la UE (ESMA publica aparte la
lista de sucursales de empresas de terceros países autorizadas, artículo 41.2). Según el artículo 39 de MiFID II, un
Estado puede exigir sucursal y autorización a una empresa de un tercer país; la excepción del artículo 42 solo cubre los servicios que el cliente
pone en marcha por iniciativa exclusivamente propia, y aun así el cliente queda fuera de las protecciones de la UE
(segregación supervisada en la UE, sistema de indemnización europeo).

2. Repite el coste total del sistema diario suponiendo que Brio ofrece una cuenta multidivisa (convierte solo el
   capital, una vez). ¿Cuánto baja su coste en porcentaje del capital? ¿Qué coste domina entonces?

**Solución.**

```python
SUPUESTOS["Brio"]["fx_auto"] = False
d, cap = perfiles["diario"]
com = (comision("Brio", d["acciones"], d["precio"]) * d["veces"]).sum()
fx = cap * SUPUESTOS["Brio"]["fx_pb"] / 1e4
print(f"comisiones {com:,.0f}  divisa {fx:,.0f}  "
      f"total {100 * (com + fx) / cap:.2f} % del capital")
SUPUESTOS["Brio"]["fx_auto"] = True
```
```output
comisiones 5,569  divisa 2,500  total 0.81 % del capital
```

Sin la conversión en cada operación, el coste de Brio cae del 14,0 % al 0,81 % del capital, y lo que domina es la
comisión fija por orden (4,95 dólares) multiplicada por unas 1.125 órdenes al año. El supuesto de la divisa era el que
decidía; por eso hay que comprobarlo con una operación de prueba.

3. Con las reglas del modelo 721, un residente tiene criptoactivos en un exchange extranjero por 45.000 euros a
   31/12/2024 y 52.000 a 31/12/2025, y nunca ha presentado el modelo. ¿Tiene que presentarlo en 2025 y en 2026?

**Solución.**

Por 2024 no: el saldo conjunto a 31 de diciembre (45.000 euros) no supera 50.000. Por 2025 sí, en el plazo del 1 de
enero al 31 de marzo de 2026, porque 52.000 supera el umbral y es la primera vez. El incremento de 20.000 euros solo
se aplica a partir de una declaración presentada. Los saldos se valoran en euros a 31 de diciembre de cada año
(artículo 42 quater del RD 1065/2007). Es una obligación informativa: la tributación de las ganancias es otra cosa
(lección 7.4.6).

[^1]: CNMV, «¿Cuáles son las entidades autorizadas?», [cnmv.es](https://www.cnmv.es/portal/inversor/Entidades-Autorizadas),
    y [listado de ESI del EEE en libre prestación](https://www.cnmv.es/portal/consultas/listadoentidad.aspx?id=1&tipoent=4)
    (809 entidades) y demás listas de ESI, consultados el 22/10/2026; registro de entidades del
    [Banco de España](https://app.bde.es/ren_www/InicioSesion).
[^2]: Directiva 2014/65/UE (MiFID II), artículos 16.8 y 16.9 (salvaguarda de instrumentos y fondos de clientes), 34
    (libre prestación), 35 (sucursales), 39 y 42 (empresas de terceros países) y anexo I (servicios A.1 a A.9 y B.1 a
    B.7), versión española en [EUR-Lex](https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32014L0065),
    consultada el 22/10/2026.
[^3]: ESMA, [Databases and Registers](https://www.esma.europa.eu/publications-and-data/databases-and-registers),
    entrada «MiFID investment firms», y [ESMA Registers](https://registers.esma.europa.eu/publication/searchRegister?core=esma_registers_upreg),
    consultados el 22/10/2026.
[^4]: Directiva 97/9/CE, relativa a los sistemas de indemnización de los inversores, artículos 4.1 y 7.1, versión
    española en [EUR-Lex](https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:31997L0009), consultada el
    22/10/2026.
[^5]: Real Decreto 948/2001, sobre sistemas de indemnización de los inversores, preámbulo y artículos 2, 5 y 6, texto
    consolidado (última actualización publicada el 28/12/2023) en el [BOE](https://www.boe.es/buscar/act.php?id=BOE-A-2001-15221);
    Directiva 2014/49/UE, artículo 6.1, en [EUR-Lex](https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32014L0049);
    consultados el 22/10/2026.
[^6]: Real Decreto 1065/2007, artículos 42 ter y 42 quater, texto consolidado en el
    [BOE](https://www.boe.es/buscar/act.php?id=BOE-A-2007-15984); Orden HFP/886/2023 (modelo 721) en el
    [BOE](https://www.boe.es/buscar/act.php?id=BOE-A-2023-17429); fichas de los modelos
    [720](https://sede.agenciatributaria.gob.es/Sede/procedimientoini/GI34.shtml) y
    [721](https://sede.agenciatributaria.gob.es/Sede/procedimientoini/GI55.shtml) de la AEAT; consultados el 22/10/2026.
[^7]: AEAT, preguntas frecuentes del modelo 720 (actualizadas a febrero de 2025): «Valoración de los bienes y
    derechos» y «Frecuencia en la presentación de la declaración», en la
    [sede electrónica](https://sede.agenciatributaria.gob.es/Sede/procedimientoini/GI34.shtml), consultadas el
    22/10/2026.

## Autoevaluación

1. Una empresa de servicios de inversión autorizada en Irlanda quiere dar servicio a clientes en España sin abrir oficina. ¿Qué necesita según MiFID II?

   - A. Una autorización nueva de la CNMV
   - B. Nada: cualquier empresa de la UE puede operar en cualquier país sin aviso
   - C. Comunicar a su autoridad de origen que va a prestar servicios en España (libre prestación, art. 34); la autorización irlandesa vale en toda la UE para los servicios que cubre
   - D. Abrir una sucursal obligatoriamente

   *Respuesta C: Comunicar a su autoridad de origen que va a prestar servicios en España (libre prestación, art. 34); la autorización irlandesa vale en toda la UE para los servicios que cubre.* El artículo 34 permite prestar libremente en otros Estados los servicios cubiertos por la autorización, previa comunicación a la autoridad del Estado de origen, que la transmite a la de acogida. Por eso la CNMV publica una lista de ESI del EEE en libre prestación con la información que le remiten esas autoridades.

2. Un bróker quiebra. Los valores de un cliente estaban segregados y aparecen todos; además, su cartera había caído un 25 % por el mercado. ¿Qué cubre el FOGAIN?

   - A. El 25 % de la caída, hasta 100.000 euros
   - B. Nada: los valores segregados se devuelven al cliente y la pérdida de mercado no la cubre ningún sistema de indemnización
   - C. 100.000 euros en todo caso
   - D. La comisión de custodia del año

   *Respuesta B: Nada: los valores segregados se devuelven al cliente y la pérdida de mercado no la cubre ningún sistema de indemnización.* Los sistemas de indemnización pagan cuando la entidad no puede restituir el dinero o los valores del cliente, con el límite de 100.000 euros en el FOGAIN (RD 948/2001, art. 6). El propio real decreto aclara que la cobertura no alcanza a las pérdidas de valor de la inversión.

3. En el registro de ESMA, una entidad figura como `Investment firm` activa con los servicios «Reception and transmission of orders» y «Execution of orders», pero sin «Safekeeping and administration». ¿Qué falta para usarla como bróker con custodia?

   - A. El servicio auxiliar B.1 del anexo I de MiFID II (custodia y administración de instrumentos financieros por cuenta de clientes): hay que averiguar quién custodia los valores
   - B. Nada, la ejecución incluye la custodia
   - C. La gestión de carteras (A.4)
   - D. La negociación por cuenta propia (A.3)

   *Respuesta A: El servicio auxiliar B.1 del anexo I de MiFID II (custodia y administración de instrumentos financieros por cuenta de clientes): hay que averiguar quién custodia los valores.* Recepción y transmisión (A.1) y ejecución de órdenes (A.2) son servicios de inversión; guardar los valores del cliente es el servicio auxiliar B.1. Si la entidad no lo tiene, los valores estarán en otra entidad, y es esa la que hay que comprobar.

4. Un residente en España tiene en un bróker extranjero valores por 60.000 euros a 31/12/2024 y presentó el modelo 720 por ellos. A 31/12/2025 valen 75.000 euros. ¿Tiene que volver a presentarlo por ese bloque?

   - A. Sí, cada año
   - B. Sí, porque supera 50.000
   - C. No, nunca más
   - D. No: solo es obligatorio cuando el valor conjunto del bloque aumenta más de 20.000 euros respecto del que determinó la última declaración, y aquí aumenta 15.000

   *Respuesta D: No: solo es obligatorio cuando el valor conjunto del bloque aumenta más de 20.000 euros respecto del que determinó la última declaración, y aquí aumenta 15.000.* El artículo 42 ter del Reglamento General (RD 1065/2007) fija el umbral de 50.000 euros por bloque y obliga a presentar en años sucesivos solo con un incremento superior a 20.000 euros. La AEAT añade que las variaciones del tipo de cambio cuentan para ese incremento. Hay otros supuestos (dejar de ser titular) que la AEAT detalla en sus preguntas frecuentes.

5. Una estrategia diaria con una rotación de unas 53 veces el capital al año opera ETF en dólares desde una cuenta en euros con conversión automática de divisa en cada operación a 25 pb. ¿Qué coste domina?

   - A. La comisión por orden
   - B. La tarifa de datos
   - C. La conversión de divisa: 25 pb sobre unos 53 millones de efectivo al año, alrededor del 13 % del capital
   - D. La custodia

   *Respuesta C: La conversión de divisa: 25 pb sobre unos 53 millones de efectivo al año, alrededor del 13 % del capital.* Con mucha rotación, cualquier coste proporcional al efectivo negociado se multiplica por la rotación. En la celda de costes, la conversión automática cuesta más que todo lo demás junto. Una cuenta multidivisa que convierte una vez el capital cambia por completo el resultado.

## Ideas clave

- La primera pregunta no es el precio sino la entidad: qué sociedad firma el contrato, en qué Estado está autorizada, para qué servicios y con qué estado. Una marca puede agrupar sociedades de varios países con protecciones distintas.
- Con el pasaporte de MiFID II, una ESI autorizada en otro Estado del EEE puede operar en España en libre prestación o con sucursal: la CNMV lista 809 en libre prestación (consulta del 22/10/2026), 220 de ellas autorizadas en Chipre.
- Los registros se pueden leer con código: el de ESMA da el estado, la fecha de retirada y los servicios del anexo I (A.1 y A.2 para órdenes, B.1 para custodia); la lista de advertencias de la CNMV, las entidades no autorizadas y los clones de nombre parecido.
- La segregación protege los valores del cliente si la entidad quiebra; el sistema de indemnización cubre lo que falte hasta un límite (100.000 euros en el FOGAIN, un mínimo de 20.000 en la UE según el Estado de origen); las pérdidas de mercado no las cubre nadie.
- El coste relevante es el total y depende del perfil: en una cartera mensual pesan los costes fijos y los mínimos; en un sistema diario con rotación alta, todo lo proporcional al efectivo (porcentajes y conversión de divisa) se multiplica por la rotación.
- Modelos 720 y 721: umbral de 50.000 euros por bloque a 31 de diciembre, nueva declaración solo con un incremento superior a 20.000, plazo del 1 de enero al 31 de marzo. Son obligaciones informativas; la fiscalidad se trata en la lección 7.4.6.

## Recursos

### Documentación

- [CNMV: listado de empresas de servicios de inversión del EEE en libre prestación](https://www.cnmv.es/portal/consultas/listadoentidad.aspx?id=1&tipoent=4) · cnmv.es
- [CNMV: ¿cuáles son las entidades autorizadas? y advertencias sobre entidades no autorizadas](https://www.cnmv.es/portal/inversor/Entidades-Autorizadas) · cnmv.es
- [ESMA: Databases and Registers (MiFID investment firms)](https://www.esma.europa.eu/publications-and-data/databases-and-registers) · esma.europa.eu
- [EUR-Lex: Directiva 2014/65/UE (MiFID II), arts. 16, 34, 35, 42 y anexo I](https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32014L0065) · eur-lex.europa.eu
- [BOE: Real Decreto 948/2001, sobre sistemas de indemnización de los inversores (texto consolidado)](https://www.boe.es/buscar/act.php?id=BOE-A-2001-15221) · boe.es
- [AEAT: modelo 720, declaración sobre bienes y derechos situados en el extranjero](https://sede.agenciatributaria.gob.es/Sede/procedimientoini/GI34.shtml) · sede.agenciatributaria.gob.es

### Datos

- [Datos del nivel 4: órdenes del sistema en vivo, paper y real (CSV)](https://pythonparatrading.com/curso/datos/nivel-4/vivo4_ordenes.csv) · Descarga · vivo4_ordenes.csv

Lección anterior: [4.3.2 · Order flow imbalance, señales de microestructura y latencia](https://pythonparatrading.com/curso-python-trading/nivel-4/order-flow-imbalance-y-latencia/)

Lección siguiente: [4.4.2 · Interactive Brokers: TWS e IB Gateway, ib_async, contratos, datos y órdenes](https://pythonparatrading.com/curso-python-trading/nivel-4/interactive-brokers-con-ib-async/)
