---
title: "7.4.4 MiCA tras el transitorio: CASP y registros"
description: "El fin del transitorio de MiCA en España y cómo comprobar un CASP en los registros de ESMA y la CNMV: LEI, contrato, dominio, cambios y señales de alarma."
url: "https://pythonparatrading.com/curso-python-trading/nivel-7/mica-casp-autorizados-y-registros/"
lang: "es"
image: "https://pythonparatrading.com/og/curso-python-trading/nivel-7/mica-casp-autorizados-y-registros.png"
---

# 7.4.4 · MiCA después del transitorio: comprobar un proveedor en los registros

> Desde el 1 de julio de 2026 solo pueden prestar servicios de criptoactivos en España los proveedores autorizados con MiCA. La lección 3.7.5 explica el reglamento; esta es la lista de comprobaciones de quien opera: qué dijeron la CNMV y ESMA al terminar el periodo transitorio, qué contiene de verdad el registro de ESMA (con sus erratas), cómo cruzar el contrato, el dominio y el LEI de un proveedor con él, cómo vigilar sus cambios semana a semana y qué señales de alarma no salen en ningún registro. No es asesoramiento jurídico.

- Curso: [Nivel 7: Producción, MLOps, regulación, carrera y capstone](https://pythonparatrading.com/curso-python-trading/nivel-7/)
- Módulo: 7.4 · Regulación, ética y fiscalidad
- Duración: 50 min
- Requisitos: [3.7.4 · ccxt para operar en varios exchanges](https://pythonparatrading.com/curso-python-trading/nivel-3/ccxt-multi-exchange/), [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/), [4.4.1 · Elegir bróker desde España o la UE: regulación, activos, costes y API](https://pythonparatrading.com/curso-python-trading/nivel-4/elegir-broker-desde-espana-y-la-ue/)

## Al terminar esta lección

- Explicar con las fuentes primarias qué terminó el 30 de junio de 2026, qué deben hacer los proveedores no autorizados y qué recomiendan la CNMV y ESMA a sus clientes.
- Diagnosticar los LEI de un registro real (espacios, longitud, dígitos de control) y contrastarlos con el estado que publica GLEIF.
- Comprobar un proveedor por la entidad del contrato, su LEI, el dominio que se usa, los servicios, el pasaporte y la lista de no conformes, y no por la marca.
- Guardar instantáneas fechadas del registro con su hash y detectar entre dos versiones altas, retiradas y cambios de servicios o de pasaporte de los proveedores propios.
- Reconocer las señales de alarma de la CNMV y de las directrices de ESMA sobre solicitud inversa que ningún registro detecta.

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

Esta lección explica cómo comprobar un proveedor con fuentes públicas. No es asesoramiento jurídico ni financiero ni
una opinión sobre ninguna entidad: las entidades del código son ficticias y las cifras del registro real son las de la
versión descargada el 23 de octubre de 2026. Antes de operar, consulta los registros vigentes y, si tienes dudas, a la
CNMV.

</aside>

## Qué terminó el 30 de junio de 2026

La lección 3.7.5 explica MiCA (Reglamento (UE) 2023/1114): qué regula, sus servicios, el capital de los proveedores y
el régimen transitorio del artículo 143.3, que permitía a quien ya operaba con la ley nacional seguir «hasta el 1 de
julio de 2026» o hasta que se le concediera o denegara la autorización. España eligió el plazo máximo. El temario dice
que el periodo terminó el 1 de julio; la CNMV lo precisa en su comunicado de 15 de junio de 2026[^1]:

> El próximo 30 de junio de 2026 finaliza el periodo transitorio de aplicación del Reglamento (UE) 2023/1114 […] para
> aquellos proveedores de servicios sobre criptoactivos que se han beneficiado de dicho periodo. Eso supone que, a
> partir de esa fecha, solo podrán operar en España los proveedores que hayan obtenido la necesaria autorización.

El 30 de junio fue el último día del transitorio y el 1 de julio, el primero de aplicación plena. El comunicado añade
tres cosas prácticas. Los proveedores que no fueran a obtener la autorización debían tener «un plan de migración
efectivo de sus clientes» que les permita mover los criptoactivos custodiados a otras direcciones y los fondos a cuentas
de efectivo, o aceptar el traspaso a otro proveedor autorizado. Ese plan fija «un plazo razonable de retirada» y, al
terminar, lo no retirado puede transferirse a entidades autorizadas. Y a los inversores, la CNMV les recomienda
verificar en los registros de ESMA y de la CNMV si su proveedor está autorizado y, si no, «requerirle el plan de
migración y opciones ofrecidas».

ESMA publicó el 23 de junio una declaración para toda la Unión[^2]. Los proveedores no autorizados deben «immediately
stop onboarding new EU clients», dejar el marketing y la captación, limitar sus servicios a lo necesario para vender,
transferir o cerrar posiciones, mantener la custodia solo el tiempo «strictly necessary» para la salida y comunicar a
los clientes un plazo tras el cual las posiciones residuales se cerrarían automáticamente. A los clientes les recuerda
que no tienen las protecciones de MiCA y les invita a trasladar sus criptoactivos a un CASP autorizado o a un monedero
propio. Las empresas de fuera de la UE no pueden prestar servicios a clientes de la UE ni captarlos, salvo a iniciativa
exclusiva del cliente.

```mermaid
flowchart TB
  P[Mi proveedor] --> R{¿En el registro?}
  R -- sí --> S{¿Servicio y ES?}
  S -- sí --> OK[Operar y vigilar]
  S -- no --> M[Plan de migración]
  R -- no --> M
  M --> T[CASP autorizado]
  M --> W[Monedero propio]
```

## Dos registros que no dicen lo mismo

La CNMV mantiene una página de consulta de proveedores de servicios de criptoactivos: es una lista alfabética de nombres,
sin fechas, servicios ni régimen, que remite expresamente al registro oficial de ESMA[^3]. El registro de ESMA, por su
parte, sigue siendo **provisional**: cinco ficheros CSV que ESMA dice publicar «on weekly intervals» hasta integrarlos en
sus sistemas[^4]. El de proveedores (`CASPS.csv`) tiene una fila por entidad y autorización, con la autoridad, el Estado
de origen, la denominación y el LEI, el nombre comercial, la web, la fecha de autorización o notificación y la de
retirada, los servicios y los Estados del pasaporte; `NCASP.csv` recoge entidades que prestan servicios sin cumplir la
norma. La lección 3.7.5 explica cómo leerlos y limpiarlos.

La versión descargada el 23 de octubre de 2026 (fecha de actualización más reciente de sus filas: 20 de octubre) tiene
387 entradas de 384 LEI distintos. Dieciséis tienen a España como Estado de origen: 6 entidades de crédito que
notificaron con el artículo 60 y 10 autorizadas como CASP con el artículo 63. La figura de la cabecera las acumula por fecha: el 1 de julio había 12, cuatro de ellas autorizadas en las
dos últimas semanas de junio, y después se han sumado otras cuatro. Lo que más importa a un cliente español, sin
embargo, es otra columna: 211 entradas tienen España en su pasaporte, la mayoría autorizadas en otros Estados. Y
`NCASP.csv` reúne 178 entidades no conformes, 169 de ellas comunicadas por Italia.

El registro tiene también erratas. Sus LEI son el mejor campo para cruzar fuentes, pero no todos se pueden usar tal
cual:

*Fig. — LEI de las 387 entradas del registro de proveedores de servicios de criptoactivos de ESMA según la comprobación ISO 7064 MOD 97-10 (versión descargada el 23 de octubre de 2026).* Barras horizontales: 371 LEI válidos tal cual, 7 válidos tras quitar espacios, tabuladores o un punto final y 9 que no pasan el control de ninguna forma (destacada).

## Diagnosticar un LEI antes de cruzar

Un LEI (ISO 17442) tiene 20 caracteres alfanuméricos y dos dígitos de control finales que cumplen la norma ISO 7064
MOD 97-10, como explica la lección 3.7.5. En el registro real, 371 de 387 entradas lo cumplen tal cual, 7 lo cumplen
tras quitar espacios, tabuladores o un punto final, y 9 no lo cumplen de ninguna forma: siete tienen 20 caracteres pero
fallan el control, uno tiene 19 y otro 21. Un cruce que no normaliza pierde las 7 primeras sin motivo; uno que «corrige»
a ciegas puede inventar un LEI. La función siguiente diagnostica en vez de corregir, con LEI ficticios que reproducen
esos defectos:

```python
import hashlib
import io
import re
from difflib import SequenceMatcher
from urllib.parse import urlparse

import pandas as pd

def control_ok(lei):
    return int("".join(str(int(c, 36)) for c in lei)) % 97 == 1

def con_control(base18):
    n = int("".join(str(int(c, 36)) for c in base18 + "00"))
    return base18 + f"{98 - n % 97:02d}"

def diagnostico(bruto):
    """Devuelve (estado, LEI normalizado). No corrige nada."""
    if not isinstance(bruto, str) or not bruto.strip():
        return "vacío", None
    lei = bruto.strip().rstrip(".").upper()
    if len(lei) != 20:
        return f"longitud {len(lei)}", lei
    if not re.fullmatch(r"[0-9A-Z]{18}[0-9]{2}", lei):
        return "caracteres", lei
    if not control_ok(lei):
        return "dígitos de control", lei
    return ("válido" if lei == bruto else "válido tras limpiar"), lei

BRISA = con_control("529900BRISADIGITO0")
casos = [BRISA, f" {BRISA}", f"\t{BRISA}", f"{BRISA}.", BRISA[:-1],
         BRISA + "7", BRISA.replace("O", "0"), None]
for c in casos:
    print(f"{c!r:<26} {diagnostico(c)[0]}")
```
```output
'529900BRISADIGITO075'     válido
' 529900BRISADIGITO075'    válido tras limpiar
'\t529900BRISADIGITO075'   válido tras limpiar
'529900BRISADIGITO075.'    válido tras limpiar
'529900BRISADIGITO07'      longitud 19
'529900BRISADIGITO0757'    longitud 21
'529900BRISADIGIT0075'     dígitos de control
None                       vacío
```

El LEI con la O cambiada por un cero tiene la longitud correcta y solo caracteres permitidos, pero falla el control:
es el tipo de errata que no se ve a simple vista. ¿Se puede reparar? Probando las sustituciones habituales (O y 0, I y
1) se obtienen candidatos que pasan el control, pero con un control de dos dígitos, cualquier cambio tiene alrededor de
una posibilidad entre 97 de pasarlo por casualidad:

```python
CONFUSIONES = {"O": "0", "0": "O", "I": "1", "1": "I"}

def candidatos(lei):
    salida = set()
    for i, c in enumerate(lei[:18]):
        if c in CONFUSIONES:
            prueba = lei[:i] + CONFUSIONES[c] + lei[i + 1:]
            if control_ok(prueba):
                salida.add(prueba)
    return sorted(salida)

errata = BRISA.replace("O", "0")
print(errata, "->", candidatos(errata))
print("¿está el verdadero?", BRISA in candidatos(errata))
```
```output
529900BRISADIGIT0075 -> ['529900BRISADIG1T0075', '529900BRISADIGITO075']
¿está el verdadero? True
```

Hay dos candidatos: el verdadero, con la O recuperada, y otro que cambia la I de «DIGIT» por un 1 y pasa el control
por casualidad. Sin otra fuente no hay forma de saber cuál es el bueno. Un candidato que pase el control solo es una
pista que hay que confirmar en GLEIF, la fundación que publica la base de datos de los LEI
con una API pública. La consulta no se ejecuta aquí porque necesita red:

```python skip title="estado_gleif.py"
import json
import urllib.request

def estado_gleif(leis):
    url = ("https://api.gleif.org/api/v1/lei-records?page[size]=100"
           "&filter[lei]=" + ",".join(leis))
    with urllib.request.urlopen(url, timeout=30) as r:
        datos = json.load(r)["data"]
    return {d["attributes"]["lei"]: (
                d["attributes"]["entity"]["legalName"]["name"],
                d["attributes"]["registration"]["status"])
            for d in datos}
```

Con los 375 LEI válidos distintos del registro, consultados el 23 de octubre de 2026, GLEIF devuelve 371 con la
inscripción vigente (`ISSUED`), 3 caducados (`LAPSED`, sin renovar) y 1 retirado (`RETIRED`, con la entidad
inactiva). Un LEI caducado no significa que la autorización haya terminado, pero es una inconsistencia que conviene
explicar; uno retirado en GLEIF y vigente en el registro de ESMA pide una consulta a la autoridad.

## Comprobar el proveedor con el que operas

El error más frecuente no es operar con una entidad que no figura en ningún registro, sino operar con **otra** entidad
de una marca que sí figura. La CNMV lo advierte en su página de MiCA: hay que confirmar qué entidad jurídica presta el
servicio, porque las protecciones de MiCA solo se aplican a la entidad autorizada en la UE, no a otras sociedades del
grupo ni a entidades de fuera de la UE[^5]. Por eso la comprobación parte de los datos del **contrato** y de la
**dirección web que se usa**, no del nombre comercial. Un extracto ficticio con el formato del registro y otro de la
lista de no conformes:

```python
CEFIRO = con_control("5299009CEFIRO0CRYP")
DUNA = con_control("9695009DUNA0EXCHAN")
CASPS = f"""ae_homeMemberState,ae_lei_name,ae_lei,ae_commercial_name,\
ae_website,ae_website_platform,ac_authorisationEndDate,\
ac_serviceCode,ac_serviceCode_cou
MT,Brisa Digital Europe Ltd,{BRISA},Brisa,https://www.brisa.example,\
https://app.brisa.example,,a. custody | b. operation of a trading \
platform | c. exchange for funds,AT|DE|ES|FR|IT
DE,Cefiro Krypto GmbH,{CEFIRO},Cefiro,https://cefiro.example,,,\
e. execution of orders | g. reception and transmission,DE|AT
FR,Duna Exchange SAS,{DUNA},Duna,https://duna.example,,15/09/2026,\
a. custody | c. exchange for funds,FR|ES|PT
"""
NCASP = """ae_commercial_name,ae_website
Brisa Cripto Pro,https://brisa-cripto.example
Icaro Trade,https://icaro.example
"""
reg = pd.read_csv(io.StringIO(CASPS), dtype=str)
ncasp = pd.read_csv(io.StringIO(NCASP), dtype=str)
reg[["ae_commercial_name", "ae_website", "ac_authorisationEndDate"]]
```
```output
  ae_commercial_name                 ae_website ac_authorisationEndDate
0              Brisa  https://www.brisa.example                     NaN
1             Cefiro     https://cefiro.example                     NaN
2               Duna       https://duna.example              15/09/2026
```

La función de comprobación junta las preguntas en un orden: el LEI del contrato está en el registro y su denominación
coincide con la entidad que firma, el dominio que se usa es uno de los registrados, la autorización no tiene fecha de
retirada, los servicios cubren lo que se va a hacer, España está en el pasaporte (o es el Estado de origen) y el dominio
no está en la lista de no conformes:

```python
def dominio(url):
    host = urlparse(url if "//" in url else "//" + url).hostname or ""
    return ".".join(host.removeprefix("www.").split(".")[-2:])

def parecido(a, b):
    return SequenceMatcher(None, a.lower(), b.lower()).ratio()

def comprobar(contrato, necesito, dia="2026-10-23", pais="ES"):
    fila = reg[reg["ae_lei"].map(lambda x: diagnostico(x)[1])
               == diagnostico(contrato["lei"])[1]]
    r = {"LEI en el registro": not fila.empty}
    if not fila.empty:
        f = fila.iloc[0]
        r["entidad del contrato"] = (
            parecido(f["ae_lei_name"], contrato["entidad"]) > 0.9)
        webs = {dominio(w) for w in (f["ae_website"],
                f["ae_website_platform"]) if isinstance(w, str)}
        r["dominio registrado"] = dominio(contrato["web"]) in webs
        fin = pd.to_datetime(f["ac_authorisationEndDate"],
                             format="%d/%m/%Y")
        r["sin retirada"] = pd.isna(fin) or fin > pd.Timestamp(dia)
        letras = set(re.findall(r"\b([a-j])\.", f["ac_serviceCode"]))
        r["servicios " + necesito] = set(necesito) <= letras
        r[f"pasaporte {pais}"] = (
            pais == f["ae_homeMemberState"]
            or pais in f["ac_serviceCode_cou"].split("|"))
    r["fuera de no conformes"] = dominio(contrato["web"]) not in {
        dominio(w) for w in ncasp["ae_website"]}
    return r

contratos = {
    "Brisa, contrato correcto": dict(
        entidad="Brisa Digital Europe Ltd", lei=f" {BRISA}",
        web="https://app.brisa.example"),
    "Brisa, sociedad del grupo": dict(
        entidad="Brisa Global Ltd", lei=f" {BRISA}",
        web="https://brisa-cripto.example"),
    "Cefiro": dict(entidad="Cefiro Krypto GmbH", lei=CEFIRO,
                   web="cefiro.example"),
    "Duna": dict(entidad="Duna Exchange SAS", lei=DUNA,
                 web="https://duna.example"),
}
for nombre, c in contratos.items():
    fallos = [k for k, ok in comprobar(c, "abc").items() if not ok]
    print(f"{nombre:<26} {'OK' if not fallos else 'NO'} {fallos}")
```
```output
Brisa, contrato correcto   OK []
Brisa, sociedad del grupo  NO ['entidad del contrato', 'dominio registrado', 'fuera de no conformes']
Cefiro                     NO ['servicios abc', 'pasaporte ES']
Duna                       NO ['sin retirada', 'servicios abc']
```

El contrato correcto pasa todo, aunque el LEI venga con un espacio delante: la normalización evita un falso negativo.
El segundo usa la misma marca y el mismo LEI copiado, pero lo firma otra sociedad, en un dominio que no está en el
registro y que es el de una entidad de la lista de no conformes: es el patrón de un clon o de una entidad del
grupo fuera de MiCA. Cefiro está autorizada, pero para ejecución y transmisión de órdenes y solo con pasaporte a
Alemania y Austria. Duna tiene custodia, canje y pasaporte a España, pero no gestiona una plataforma de negociación
(`b`) y, sobre todo, su autorización se retiró el 15 de septiembre.

Los servicios que hay que pedir dependen del uso. Para operar por API en un exchange que custodia los fondos, la
plataforma de negociación (`b`) y la custodia (`a`); para comprar y vender contra euros, el canje por fondos (`c`);
para un bróker que lleva las órdenes a otro sitio, la ejecución o la recepción y transmisión (`e`, `g`). Los perpetuos
y demás derivados no son servicios de MiCA (lección 3.7.5).

## Vigilar los cambios del registro

Una comprobación en la fecha de apertura no dice nada de la semana siguiente. Como ESMA publica versiones semanales,
lo práctico es guardar cada versión con su fecha y su hash, y comparar las de los proveedores que se usan:

```mermaid
flowchart LR
  D[Descarga semanal] --> H[Hash y archivo]
  H --> C[Diferencias]
  C --> A[Avisos propios]
```

Dos versiones ficticias del extracto, separadas una semana:

```python
def instantanea(texto, fecha):
    df = pd.read_csv(io.StringIO(texto), dtype=str)
    df["lei"] = df["ae_lei"].map(lambda x: diagnostico(x)[1])
    sha = hashlib.sha256(texto.encode()).hexdigest()[:12]
    return {"fecha": fecha, "sha256": sha, "df": df.set_index("lei")}

semana_42 = CASPS.replace(",15/09/2026,", ",,")    # sin la retirada
semana_43 = (CASPS.replace("AT|DE|ES|FR|IT", "AT|DE|FR|IT")
             .replace("e. execution of orders |",
                      "c. exchange for funds | e. execution of "
                      "orders |"))
a = instantanea(semana_42, "2026-10-12")
b = instantanea(semana_43, "2026-10-19")

def cambios(a, b, campos=("ac_authorisationEndDate", "ac_serviceCode",
                          "ac_serviceCode_cou")):
    filas = []
    for lei in sorted(set(a["df"].index) | set(b["df"].index)):
        if lei not in b["df"].index:
            filas.append((lei, "baja del registro", "", ""))
            continue
        if lei not in a["df"].index:
            filas.append((lei, "alta en el registro", "", ""))
            continue
        for c in campos:
            x, y = a["df"].at[lei, c], b["df"].at[lei, c]
            if str(x) != str(y):
                filas.append((lei, c, x, y))
    return pd.DataFrame(filas, columns=["lei", "campo", "antes",
                                        "ahora"])

print(a["fecha"], a["sha256"], "|", b["fecha"], b["sha256"])
for f in cambios(a, b).itertuples():
    print(f"{f.lei} {f.campo}\n  antes: {f.antes}\n  ahora: {f.ahora}")
```
```output
2026-10-12 a2d1f50d3791 | 2026-10-19 5056eb308cb5
5299009CEFIRO0CRYP44 ac_serviceCode
  antes: e. execution of orders | g. reception and transmission
  ahora: c. exchange for funds | e. execution of orders | g. reception and transmission
529900BRISADIGITO075 ac_serviceCode_cou
  antes: AT|DE|ES|FR|IT
  ahora: AT|DE|FR|IT
9695009DUNA0EXCHAN38 ac_authorisationEndDate
  antes: nan
  ahora: 15/09/2026
```

En una semana, Brisa ha perdido España del pasaporte, Cefiro ha añadido el canje por fondos y Duna tiene fecha de
retirada. Los hashes permiten demostrar más tarde qué versión se consultó y cuándo. Para un sistema que opera en
varios proveedores, el paso siguiente es filtrar los cambios por los LEI propios y avisar cuando afecten a lo que se
usa:

```python
MIOS = {BRISA: ("abc", "ES"), DUNA: ("ac", "ES")}

def avisos(a, b, mios=MIOS):
    salida = []
    for lei, (servicios, pais) in mios.items():
        f = b["df"].loc[lei]
        if isinstance(f["ac_authorisationEndDate"], str):
            salida.append((lei, "autorización retirada el "
                           + f["ac_authorisationEndDate"]))
        if pais not in f["ac_serviceCode_cou"].split("|") \
                and pais != f["ae_homeMemberState"]:
            salida.append((lei, f"sin pasaporte a {pais}"))
    return salida

for lei, texto in avisos(a, b):
    print(reg.set_index("ae_lei").at[lei, "ae_commercial_name"],
          "->", texto)
```
```output
Brisa -> sin pasaporte a ES
Duna -> autorización retirada el 15/09/2026
```

Los dos proveedores propios dan aviso: uno ya no puede prestar servicios en España con esa autorización y el otro la ha
perdido. Lo que procede entonces no lo decide el código: leer la comunicación del proveedor, pedirle el plan de
migración (como recomienda la CNMV) y mover los activos a tiempo. Una tarea programada semanal con esta comparación
encaja en la lección 4.5.4.

## Señales de alarma que no salen en el registro

Un registro dice quién está autorizado; no dice quién se hace pasar por una entidad autorizada ni cómo se comporta un
proveedor. La guía de la CNMV sobre chiringuitos financieros y las directrices de ESMA sobre la solicitud inversa dan
las pistas[^6][^7]:

| Señal | Fuente | Por qué preocupa |
|---|---|---|
| Llamadas o correos inesperados, urgencia, bonificaciones de entrada, presión para decidir | CNMV, guía de chiringuitos (consejo 3) | Las entidades autorizadas no presionan y deben evaluar al cliente |
| Uso del logo de la CNMV | CNMV, guía de chiringuitos | «La CNMV nunca le invitaría a realizar una inversión» |
| Pago a una cuenta en el extranjero a nombre de otra sociedad | CNMV, guía de chiringuitos | La entidad que cobra no es la que figura en el registro |
| Una empresa de fuera de la UE que dice actuar por «iniciativa exclusiva» del cliente pero tiene web en español, anuncios dirigidos, patrocinios o influencers remunerados en la UE | ESMA, directrices sobre solicitud inversa (anexo) | Son ejemplos de captación de clientes que impiden acogerse a la excepción del artículo 61 |
| Tras ser contactado, notificaciones que animan a operar con otros criptoactivos | ESMA, directriz 3 | La excepción no permite ofrecer después otros criptoactivos o servicios |
| Un proveedor no autorizado que, después del 1 de julio, sigue captando clientes o lanza promociones | ESMA, declaración de 23/06/2026 | Debe estar en salida ordenada, no creciendo |
| Comisiones o «impuestos» para poder retirar | CNMV, guía de chiringuitos (qué hacer si ya se entregó el dinero) | Es el patrón de quien no va a devolver el dinero |
| Petición de claves privadas, frases semilla o acceso remoto al ordenador | CNMV, página de MiCA | Ninguna entidad legítima necesita las claves del cliente |

La CNMV recuerda además que no figurar en su lista de advertencias no significa estar autorizado: puede que la
actividad irregular aún no se haya detectado[^6]. La única comprobación positiva es la del registro, con la entidad del
contrato.

## Ejercicios

1. En la semana 44, Cefiro amplía su pasaporte a España y Brisa lo recupera. Crea esa versión a partir de
   `semana_43`, compárala con ella y calcula los avisos para un sistema que use Brisa (`abc`) y Cefiro (`ce`) en España.

**Solución.**

```python
semana_44 = (semana_43.replace("AT|DE|FR|IT", "AT|DE|ES|FR|IT")
             .replace(",DE|AT\n", ",DE|AT|ES\n"))
c = instantanea(semana_44, "2026-10-26")
print(cambios(b, c).to_string(index=False))
print(avisos(b, c, {BRISA: ("abc", "ES"), CEFIRO: ("ce", "ES")}))
```
```output
                 lei              campo       antes          ahora
5299009CEFIRO0CRYP44 ac_serviceCode_cou       DE|AT       DE|AT|ES
529900BRISADIGITO075 ac_serviceCode_cou AT|DE|FR|IT AT|DE|ES|FR|IT
[]
```

Los dos cambios de pasaporte aparecen en la comparación y la lista de avisos queda vacía: Brisa vuelve a tener España y
Cefiro la incorpora, con los servicios `c` y `e` que añadió la semana anterior. La comprobación de servicios no está en
`avisos`; añadirla es comparar `servicios` con las letras de `ac_serviceCode`, como hace `comprobar`.

2. Genera 1.000 LEI ficticios válidos, introduce en cada uno una errata aleatoria (un carácter cualquiera cambiado por
   otro) y cuenta en cuántos casos la función `candidatos` propone algún LEI y en cuántos propone el verdadero.

**Solución.**

```python
import numpy as np

rng = np.random.default_rng(44)
ALFA = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
con_propuesta = con_verdadero = 0
for _ in range(1000):
    base = "".join(rng.choice(list(ALFA), 18))
    verdadero = con_control(base)
    i = int(rng.integers(18))
    nuevo = rng.choice([x for x in ALFA if x != verdadero[i]])
    errata = verdadero[:i] + nuevo + verdadero[i + 1:]
    props = candidatos(errata)
    con_propuesta += bool(props)
    con_verdadero += verdadero in props
print(con_propuesta, con_verdadero)
```
```output
22 4
```

Con erratas cualesquiera, la reparación por confusiones visuales propone algo en 22 de los 1.000 casos y solo en 4 es el
LEI verdadero: lo encuentra únicamente cuando la errata fue una de esas confusiones, y las otras 18 propuestas son LEI
que pasan el control por casualidad.
Una reparación automática fabricaría identificadores; el uso correcto es marcar el LEI como dudoso y confirmar la
entidad en GLEIF o con la autoridad.

3. Un exchange con sede fuera de la UE te escribe por Telegram en español, te ofrece un bono del 20 % por el primer
   depósito y dice que puede atenderte porque tú le contactaste primero. Enumera qué comprobarías y por qué.

**Solución.**

Primero, el registro de ESMA y la consulta de la CNMV: si la entidad que firmaría el contrato no figura como CASP
autorizado con España en el pasaporte, desde el 1 de julio de 2026 no puede prestar servicios en España, y la CNMV
recomienda no operar con entidades no autorizadas. Después, la lista de advertencias de la CNMV y la de no conformes
de ESMA, sabiendo que no figurar en ellas no prueba nada. La excepción de solicitud inversa (art. 61 de MiCA) exige la
iniciativa exclusiva del cliente; un mensaje no solicitado en español, con un bono de entrada, es captación según los
ejemplos de las directrices de ESMA, y además reúne tres señales de alarma de la guía de chiringuitos de la CNMV:
contacto inesperado, bonificación de entrada y, probablemente, urgencia. Lo prudente es no depositar y, si se quiere,
comunicarlo a la CNMV.

[^1]: CNMV, «Comunicado sobre el fin del periodo transitorio del Reglamento MiCA», 15/06/2026,
    [cnmv.es](https://www.cnmv.es/webservices/verdocumento/ver?t=%7Be9effe73-ba00-4058-9ace-e88d39468cd4%7D), y
    Reglamento (UE) 2023/1114, artículo 143.3,
    [EUR-Lex](https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32023R1114).
[^2]: ESMA, «ESMA calls on unauthorised crypto-asset service providers to wind down orderly, while also safeguarding
    clients' interests, as MiCA transitional period ends», ESMA75-113276571-1710, 23/06/2026,
    [esma.europa.eu](https://www.esma.europa.eu/sites/default/files/2026-06/ESMA75-113276571-1710_Public_Statement_MiCA_transitional_period_ends.pdf).
[^3]: CNMV, «Proveedores de servicios de criptoactivos», consulta de registros oficiales,
    [cnmv.es](https://www.cnmv.es/portal/Consultas/Proveedores-Servicios-Criptoactivos.aspx), consultada el 23/10/2026.
[^4]: ESMA, página de MiCA, sección del registro provisional,
    [esma.europa.eu](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica),
    y [CASPS.csv](https://www.esma.europa.eu/sites/default/files/2024-12/CASPS.csv) y
    [NCASP.csv](https://www.esma.europa.eu/sites/default/files/2024-12/NCASP.csv), descargados el 23/10/2026; estado de
    los LEI en la [API de GLEIF](https://api.gleif.org/api/v1/lei-records/5493007WZ7IFULIL8G21), consultada el mismo día.
[^5]: CNMV, «MiCA: Nueva regulación de criptoactivos»,
    [cnmv.es](https://www.cnmv.es/portal/MiCA/Regulacion-Criptoactivos), consultada el 23/10/2026.
[^6]: CNMV, «Chiringuitos financieros» (guía), apartados V a VII y consejos finales,
    [cnmv.es](https://internet.cnmv.es/DocPortal/Publicaciones/Guias/CCFF.pdf).
[^7]: ESMA, «Final Report on the guidelines on reverse solicitation under the Markets in Crypto Assets Regulation
    (MiCA)», ESMA35-1872330276-1899, 17/12/2024, guías 1 a 3 y anexo,
    [esma.europa.eu](https://www.esma.europa.eu/sites/default/files/2024-12/ESMA35-1872330276-1899_-_Final_report_on_GLs_on_reverse_solicitation_under_MiCA.pdf).

## Autoevaluación

1. ¿Cuándo terminó exactamente el periodo transitorio de MiCA en España?

   - A. El 30 de diciembre de 2024
   - B. El 31 de diciembre de 2027
   - C. La CNMV dice que finalizó el 30 de junio de 2026; desde el 1 de julio solo pueden operar los proveedores autorizados (el art. 143.3 de MiCA lo fija «hasta el 1 de julio de 2026»)
   - D. Sigue abierto mientras haya solicitudes en trámite

   *Respuesta C: La CNMV dice que finalizó el 30 de junio de 2026; desde el 1 de julio solo pueden operar los proveedores autorizados (el art. 143.3 de MiCA lo fija «hasta el 1 de julio de 2026»).* El comunicado de la CNMV de 15 de junio de 2026 dice que «el próximo 30 de junio de 2026 finaliza el periodo transitorio» y que a partir de esa fecha solo podrán operar los proveedores autorizados. Una solicitud en trámite no prorroga el periodo.

2. Tu exchange no está autorizado el 15 de julio de 2026 y te ofrece una promoción para depositar más fondos. ¿Qué dice ESMA?

   - A. Que los proveedores no autorizados deben dejar de captar clientes y de hacer marketing, limitarse a las operaciones necesarias para la salida ordenada y mantener la custodia solo el tiempo estrictamente necesario
   - B. Que pueden seguir operando hasta final de año
   - C. Que solo afecta a los clientes nuevos
   - D. Nada: ESMA no se pronuncia sobre proveedores concretos

   *Respuesta A: Que los proveedores no autorizados deben dejar de captar clientes y de hacer marketing, limitarse a las operaciones necesarias para la salida ordenada y mantener la custodia solo el tiempo estrictamente necesario.* La declaración de ESMA de 23 de junio de 2026 pide a los CASP no autorizados dejar de incorporar clientes, cesar el marketing y la captación, y limitar los servicios a vender, transferir o cerrar posiciones. Una promoción para depositar más es exactamente lo contrario de una salida ordenada.

3. En la versión del registro de ESMA descargada el 23/10/2026, 16 de 387 entradas tienen un LEI que no pasa la comprobación tal cual. ¿Qué conclusión es correcta?

   - A. Que esas 16 entidades no están autorizadas
   - B. Que el algoritmo MOD 97-10 está mal
   - C. Que hay que borrarlas del análisis
   - D. Que 7 se arreglan quitando espacios, tabuladores o un punto final y 9 tienen errores de longitud o de dígito de control: el registro tiene erratas, así que la comparación debe normalizar y, si no cuadra, confirmar con GLEIF antes de concluir nada

   *Respuesta D: Que 7 se arreglan quitando espacios, tabuladores o un punto final y 9 tienen errores de longitud o de dígito de control: el registro tiene erratas, así que la comparación debe normalizar y, si no cuadra, confirmar con GLEIF antes de concluir nada.* Un LEI con una errata en el registro no dice nada sobre la autorización. Para cruzar fuentes hay que normalizar, diagnosticar el error y confirmar en GLEIF. Una corrección automática es peligrosa: cambiar O por 0 puede producir por casualidad otro LEI válido.

4. Un proveedor aparece en el registro de ESMA con su web `brisa.example`. Tú operas en `brisa-cripto.example`, que usa la misma marca, y el contrato lo firma «Brisa Global Ltd», con sede fuera de la UE. ¿Qué haces?

   - A. Nada: la marca está autorizada
   - B. Tratarlo como no autorizado mientras no se demuestre lo contrario: la protección de MiCA cubre a la entidad jurídica autorizada, no a otras sociedades del grupo ni a dominios que no figuran en el registro
   - C. Pedir un descuento
   - D. Comprobar solo el LEI de la marca

   *Respuesta B: Tratarlo como no autorizado mientras no se demuestre lo contrario: la protección de MiCA cubre a la entidad jurídica autorizada, no a otras sociedades del grupo ni a dominios que no figuran en el registro.* La CNMV advierte que las protecciones de MiCA solo se aplican a la entidad jurídica autorizada en la UE. El dominio que no figura en el registro y una sociedad de fuera de la UE en el contrato son las dos pistas de una entidad del grupo o de un clon.

5. ¿Por qué guardar instantáneas fechadas del registro con su hash en vez de consultarlo solo cuando se abre la cuenta?

   - A. Porque el registro cambia cada semana (altas, retiradas, servicios, pasaporte) y una autorización vigente al abrir la cuenta puede retirarse después; el hash prueba qué versión se consultó
   - B. Porque ESMA borra el registro cada mes
   - C. Porque así se ahorra ancho de banda
   - D. Porque la ley obliga al cliente a archivarlo

   *Respuesta A: Porque el registro cambia cada semana (altas, retiradas, servicios, pasaporte) y una autorización vigente al abrir la cuenta puede retirarse después; el hash prueba qué versión se consultó.* ESMA publica el registro provisional a intervalos semanales. Entre dos versiones pueden aparecer fechas de retirada o desaparecer España del pasaporte de un proveedor. Comparar las versiones de los proveedores propios convierte la comprobación inicial en vigilancia.

## Ideas clave

- La CNMV comunicó el 15/06/2026 que el periodo transitorio de MiCA finalizaba el 30/06/2026; desde el 1 de julio solo operan en España los proveedores autorizados. Los no autorizados deben tener un plan de migración; los clientes, comprobar los registros de ESMA y de la CNMV y, si su proveedor no figura, pedir ese plan.
- ESMA (23/06/2026) pide a los no autorizados dejar de captar clientes y de hacer marketing y limitarse a la salida ordenada; a los clientes, trasladar sus criptoactivos a un CASP autorizado o a un monedero propio.
- El registro de ESMA sigue siendo un conjunto de CSV semanales. La versión descargada el 23/10/2026 tiene 387 entradas: 16 españolas (12 ya autorizadas el 1 de julio), 211 con España en el pasaporte y 16 LEI que no pasan la comprobación tal cual (7 por espacios o puntos y 9 por errores reales).
- En GLEIF, 371 de los 375 LEI válidos del registro están vigentes, 3 caducados (LAPSED) y 1 retirado: el LEI es la clave de cruce, pero también hay que comprobar su estado.
- La comprobación útil parte del contrato: entidad jurídica, LEI, dominio que se usa, servicios necesarios, pasaporte a España, fecha de retirada y lista de no conformes; la marca no es una entidad.
- Guardar instantáneas con su hash y compararlas cada semana convierte una comprobación en vigilancia. Las señales de alarma de la CNMV (contacto no solicitado, urgencia, bonificaciones) y la solicitud inversa alegada por quien hace marketing en español no salen en ningún registro.

## Recursos

### Documentación

- [CNMV: comunicado sobre el fin del periodo transitorio del Reglamento MiCA (15/06/2026)](https://www.cnmv.es/webservices/verdocumento/ver?t=%7Be9effe73-ba00-4058-9ace-e88d39468cd4%7D) · cnmv.es
- [ESMA: declaración pública sobre el fin del periodo transitorio de MiCA (23/06/2026)](https://www.esma.europa.eu/sites/default/files/2026-06/ESMA75-113276571-1710_Public_Statement_MiCA_transitional_period_ends.pdf) · esma.europa.eu
- [CNMV: proveedores de servicios de criptoactivos (consulta de registros oficiales)](https://www.cnmv.es/portal/Consultas/Proveedores-Servicios-Criptoactivos.aspx) · cnmv.es
- [ESMA: directrices sobre solicitud inversa con MiCA (informe final, 17/12/2024)](https://www.esma.europa.eu/sites/default/files/2024-12/ESMA35-1872330276-1899_-_Final_report_on_GLs_on_reverse_solicitation_under_MiCA.pdf) · esma.europa.eu
- [GLEIF: API de registros LEI](https://api.gleif.org/api/v1/lei-records/5493007WZ7IFULIL8G21) · api.gleif.org
- [CNMV: guía «Chiringuitos financieros»](https://internet.cnmv.es/DocPortal/Publicaciones/Guias/CCFF.pdf) · internet.cnmv.es

### Datos

- [ESMA: registro provisional de MiCA (CASPS.csv)](https://www.esma.europa.eu/sites/default/files/2024-12/CASPS.csv) · esma.europa.eu

Lección anterior: [7.4.3 · PRIIPs, KID y ETFs estadounidenses](https://pythonparatrading.com/curso-python-trading/nivel-7/priips-kid-y-etfs-estadounidenses/)

Lección siguiente: [7.4.5 · Abuso de mercado: spoofing, layering y el bot que los imita sin querer](https://pythonparatrading.com/curso-python-trading/nivel-7/abuso-de-mercado-spoofing-y-bots/)
