Saltar al contenido
Finance & Banking
Evolution Program
Inicio / apps / regulatory_perimeter_engine

Regulatory Perimeter Engine

Motor de perímetro regulatorio de la Parte 22. Cuatro módulos que implementan la determinación de actividades por hechos observables, la calificación de instrumentos, la verificación de cumplimiento y el ensamblaje del expediente, con la biblioteca estándar y sin red.

Aviso

Todo lo que hay aquí es didáctico y trabaja con casos sintéticos. No constituye asesoría legal, no sustituye el criterio de un abogado y no proporciona técnicas para eludir ninguna norma. Su propósito es preparar una discusión con especialistas, no reemplazarla.

Qué demuestra ejecutando

Cuatro afirmaciones habituales que el motor contrasta con hechos:

Afirmación habitual Lo que el motor demuestra Clase
«Somos tecnología, no finanzas» Siete regímenes activados y ninguno declarado 1
«Es un token de utilidad» Cuatro criterios de valor cumplidos por la promoción 3
«Los fondos están en cuenta segregada» Falta la renuncia del banco a compensar 6
«Trabajamos con 41 proveedores» Que se apoyan en tres infraestructuras 14

Estructura

apps/regulatory_perimeter_engine/
├── README.md
├── __init__.py
├── perimeter.py      seis preguntas sobre hechos, con fuente obligatoria
├── qualification.py  cuatro criterios y análisis del material de promoción
├── compliance.py     salvaguarda, vigilancia y concentración de terceros
├── dossier.py        doce piezas y su lectura cruzada por parejas
└── cli.py

Uso

Determinar qué regímenes activa una entidad por sus hechos:

python apps/regulatory_perimeter_engine/cli.py perimeter

Calificar un instrumento y ver qué frase de la promoción lo cambia:

python apps/regulatory_perimeter_engine/cli.py qualification

Verificar salvaguarda, calibrar vigilancia y medir concentración:

python apps/regulatory_perimeter_engine/cli.py compliance

Ensamblar el expediente y cruzarlo por parejas:

python apps/regulatory_perimeter_engine/cli.py dossier

Pruebas

python -m pytest tests/test_regulatory_perimeter_engine.py -q

Seis de ellas documentan defectos o errores de razonamiento y deben pasar:

Sin ellas, el material afirmaría cosas que el código no sostiene.

Decisiones de diseño que conviene mirar

Un hecho sin fuente se rechaza. Hecho.__post_init__ lanza ValueError si la fuente está vacía. Es la diferencia entre un hecho observable y una declaración disfrazada: aceptar la segunda convierte el análisis en una transcripción de lo que dice la entidad.

La promoción se analiza, no se declara. frases_que_crean_expectativa() recorre el material con patrones en vez de preguntar al emisor si crea expectativa. Es lo que hace de la calificación un análisis y no una preferencia.

La asesoría exige dos hechos juntos. Destacar instrumentos por sí solo es discutible; destacar cobrando por ello, no. Los activadores son combinaciones de hechos y no hechos sueltos precisamente por casos como este.

La salvaguarda cuantifica cada fallo por separado. exposicion() devuelve lo que se pierde por compensación y lo que se pierde por conciliación, porque son dos correcciones distintas con dos costes distintos.

La concentración se mide dos veces. concentracion_por_proveedor() da la diversificación aparente y concentracion_por_infraestructura() la real. Están las dos para poder contrastarlas: es el hallazgo de la clase 14.

La remediación exige medida provisional. Remediacion.__post_init__ se niega a construirse sin ella. Entre que se detecta un hallazgo y se corrige hay un intervalo, y el cliente está expuesto durante ese intervalo.

revision_miro_donde_debia es un control de calidad de la revisión. Si todos los hallazgos son de nivel ordinario, lo más probable no es que la entidad esté perfecta: es que nadie cruzó las piezas.

Límites declarados

Referencias