Formación en métodos de investigación · Quantic Eagle opera solo con capital propio. Sin fondos de clientes, asesoramiento financiero ni señales de trading.
Dosier para la toma de decisiones
Ejemplo inventado — tres casos con errores deliberados
Has terminado una simulación y necesitas decidir si seguir investigando o corregir un problema. El dosier reúne resultados, archivos y comprobaciones pendientes para explicar la elección y que otra persona pueda revisarla.
Aquí, equity se refiere al valor observado de la cuenta, que incluye las ganancias o pérdidas no realizadas de las posiciones abiertas. El saldo (balance) no incluye esas ganancias o pérdidas no realizadas. Las herramientas Python leen estos valores de los archivos de entrada: no reconstruyen observaciones que falten ni verifican el método de valoración de la fuente.
Este dosier utiliza exclusivamente datos sintéticos con fines demostrativos; no evalúa una estrategia de trading.
Este ejemplo inventado contiene cuatro informes: uno mide una caída de la cuenta y tres detectan errores introducidos para poner a prueba los controles.
El saldo de la cuenta nunca baja, por lo que su drawdown es del 0%. Incluyendo ganancias y pérdidas de posiciones abiertas, el valor de la cuenta cae un 13,86% desde un máximo anterior. Es la caída visible en las 12 observaciones disponibles; podría haber sido mayor entre ellas.
Puedes reproducir en tu ordenador el informe «Trabajo asignado y resultados recibidos»: al final tienes programa, entradas incorrectas y corregidas, comandos y resultado esperado. Los otros tres informes se pueden leer, pero esta página no proporciona todos los datos y el código para regenerarlos. Ningún informe certifica una estrategia ni el origen de sus datos. Un hash permite comparar la identidad de un archivo; no demuestra que su contenido sea correcto.
Imprimir desde el navegador / Guardar como PDF
La siguiente decisión
Corrige las anomalías detectadas, conserva los casos de prueba con fallos introducidos deliberadamente y repite las comprobaciones afectadas. Antes de utilizar capital real, también hay que revisar los costes, el riesgo y los momentos de selección del modelo y de ejecución, además de identificar a la persona responsable de la decisión. La ausencia de anomalías en estas comprobaciones no autoriza a utilizar el sistema en operativa real.
Informes incluidos en el dosier
- Valor observado de la cuenta
- Comparación de registros de decisiones
- Trabajo asignado y resultados recibidos
- Observaciones necesarias para el cálculo
Cada informe responde a la pregunta de su título. Lee sus datos, incidencias y límites en la sección correspondiente. No se ha aportado un informe para las comprobaciones que figuran como ausentes.
Comprobaciones sin informe disponible: Cuándo estaban disponibles los datos, Datos para aprender y para evaluar, Comparación de las dos clasificaciones
NO EVALUADO: ejecución de órdenes por parte del bróker · inclusión de todos los costes · historial de selección · rentabilidad futura
Valor observado de la cuenta
Drawdown en las observaciones disponibles (%)
Observaciones
12
Drawdown máximo observado
13,86 %
El programa lee los valores de la cuenta presentes en el CSV y mide la caída desde cada máximo anterior. El número de observaciones indica cuántos valores ha leído. No reconstruye los mínimos entre una observación y la siguiente; unos datos diarios pueden ocultar una pérdida durante la jornada.
Hashes declarados de los archivos de entrada
bcd623762610ef5fdb589b8ed44abe8db08c0778439ee4578dc7c82d4fcfeceaSHA-256 del informe de comprobación
d32726be5684916c19fbaa1f25b95166c65db961f6cc2b10c969a0a2109e8743Informe de comprobación y detalles técnicos
{
"version": "2.0.0-pilot",
"command": "equity",
"input_sha256": "bcd623762610ef5fdb589b8ed44abe8db08c0778439ee4578dc7c82d4fcfecea",
"parameters": {
"command": "equity",
"assume_no_flows": false,
"initial_groups": 3,
"test_groups": 2,
"gap_seconds": 0,
"top_k": 3
},
"result": {
"scope": "observed_samples_only",
"observations": 12,
"first": "2026-01-01T00:00:00Z",
"last": "2026-01-12T00:00:00Z",
"largest_gap_seconds": 86400.0,
"cash_flow_basis": "supplied_zero_flow_column",
"equity": {
"max_drawdown_pct": 13.861386138613863,
"peak_row": 3,
"trough_row": 6,
"underwater_pct": [
0.0,
4.0,
0.0,
2.9702970297029703,
8.91089108910891,
13.861386138613863,
0.0,
4.901960784313726,
7.8431372549019605,
0.0,
2.912621359223301,
0.0
]
},
"balance": {
"max_drawdown_pct": 0.0,
"peak_row": 1,
"trough_row": 1,
"underwater_pct": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"not_assessed": [
"between_sample_drawdown",
"overfitting",
"temporal_leakage",
"cost_completeness",
"broker_accuracy",
"future_profitability"
]
}
}Comparación de registros de decisiones
Estás reescribiendo la función que selecciona compras y quieres comprobarla antes de sustituir la que utilizas. Los registros describen la misma decisión sobre las acciones inventadas A y B: el modelo asigna 0,7 a A y 0,6 a B, y ambas se pueden comprar. El primer programa elige A; el segundo, B. selected identifica una acción elegida (1) o excluida (0); size es la cantidad solicitada, aquí una acción del título seleccionado. Cambian por ello dos filas, una para A y otra para B. Los registros conservan puntuaciones y elecciones, pero no el código que las relaciona: el informe detecta una diferencia sin demostrar su causa. En el caso inventado del Museo, puedes seguir y reproducir un mecanismo concreto: reordenar las acciones sin reordenar sus puntuaciones. No se ha calculado qué compra habría sido más rentable.
Anomalías detectadas
2
Primera diferencia
Selección (selected)
El programa compara los mismos identificadores en dos registros y lee los campos en un orden fijo: momento de decisión, puntuación, dirección, admisibilidad, selección y cantidad. «Primera diferencia» indica la primera discrepancia encontrada en esa comparación, no una causa demostrada ni necesariamente el primer hecho cronológico. No comprueba pasos ausentes de ambos registros ni ejecuciones del bróker.
Qué significan las incidencias
- Identificador: A. Campos diferentes: selected, size.
- Identificador: B. Campos diferentes: selected, size.
Hashes declarados de los archivos de entrada
45eccbc4320b3a0c140d88391cec536720c98e9ae8cadd4855690c6db8f42aabb0ba1fcbcedfdfe40c98dfd04c2c33791bd923232cbbc4aea9f9b2c973e4cd56SHA-256 del informe de comprobación
0aedbb66973443a80650f797b501e57f0be78103f829a3c20b27976255bd2092Informe de comprobación y detalles técnicos
{
"version": "3.0.0-pilot",
"command": "trace",
"input_sha256": [
"45eccbc4320b3a0c140d88391cec536720c98e9ae8cadd4855690c6db8f42aab",
"b0ba1fcbcedfdfe40c98dfd04c2c33791bd923232cbbc4aea9f9b2c973e4cd56"
],
"result": {
"scope": "declared_trace_only_not_execution_or_cost_parity",
"issues": [
{
"id": "A",
"stage": "selected",
"changed_fields": [
"selected",
"size"
],
"left": {
"selected": "1",
"size": 1.0
},
"right": {
"selected": "0",
"size": 0.0
}
},
{
"id": "B",
"stage": "selected",
"changed_fields": [
"selected",
"size"
],
"left": {
"selected": "0",
"size": 0.0
},
"right": {
"selected": "1",
"size": 1.0
}
}
],
"left_rows": 2,
"right_rows": 2,
"exact_match": false,
"first_difference": {
"id": "A",
"stage": "selected",
"changed_fields": [
"selected",
"size"
],
"left": {
"selected": "1",
"size": 1.0
},
"right": {
"selected": "0",
"size": 0.0
}
},
"not_assessed": [
"missing_stages_in_both_traces",
"broker_fills",
"source_code_closure",
"cost_model"
]
},
"verdict": "ANOMALIES"
}Trabajo asignado y resultados recibidos
Antes de repetir un backtest quieres saber qué fuentes corregir. Pides a dos asistentes de IA que busquen fechas incoherentes y valores ausentes en cuatro CSV, A, B, C y D: asignas A y B al primero, C y D al segundo. En este caso inventado, cada respuesta contiene en cambio una ficha sobre los cuatro archivos. Recibes ocho fichas sobre los mismos cuatro CSV, no ocho fuentes nuevas: debes comparar los informes repetidos y conciliar sus incidencias antes de decidir qué datos corregir. La comprobación de abajo señala cuatro fichas ajenas a su encargo y cuatro repeticiones, ocho incidencias en total; ambos criterios pueden afectar al mismo archivo. Una entrega correcta contiene una ficha por archivo asignado, sin las fichas del otro encargo. Este programa comprueba identificadores declarados; no demuestra qué archivos se leyeron realmente, la calidad del análisis ni la independencia de los juicios. En el Museo la necesidad es distinta: una segunda opinión sobre los mismos originales, sin mostrar al segundo revisor el dictamen anterior.
Anomalías detectadas
8
Resultados distintos requeridos
4
Un lote es un grupo de elementos asignados a la misma petición. El control compara los identificadores asignados con los que aparecen en los resultados recibidos. Un resultado puede generar varias incidencias, por ejemplo porque corresponde a un elemento no asignado a esa petición y también está duplicado. El recuento no equivale, por tanto, al número de problemas independientes ni mide la calidad de los análisis.
Qué significan las incidencias
- Identificador: C. Petición: one. La respuesta incluye un resultado que no estaba asignado a esta petición.
- Identificador: D. Petición: one. La respuesta incluye un resultado que no estaba asignado a esta petición.
- Identificador: A. Petición: two. La respuesta incluye un resultado que no estaba asignado a esta petición.
- Identificador: A. Petición: two. Este resultado se ha devuelto más de una vez.
- Identificador: B. Petición: two. La respuesta incluye un resultado que no estaba asignado a esta petición.
- Identificador: B. Petición: two. Este resultado se ha devuelto más de una vez.
- Identificador: C. Petición: two. Este resultado se ha devuelto más de una vez.
- Identificador: D. Petición: two. Este resultado se ha devuelto más de una vez.
Hashes declarados de los archivos de entrada
789fe77a3db498e27a400055108c93bd08d488cbbce96e95b26148c1477e60e2SHA-256 del informe de comprobación
775b59048763d693a21efd1b8083ad4913edda11118942492bc02f5f9a91e943Informe de comprobación y detalles técnicos
{
"version": "3.0.0-pilot",
"command": "batches",
"input_sha256": [
"789fe77a3db498e27a400055108c93bd08d488cbbce96e95b26148c1477e60e2"
],
"result": {
"scope": "declared_identity_partition_only",
"targets": 4,
"issues": [
{
"code": "RESPONSE_OUTSIDE_REQUEST",
"batch": "one",
"id": "C"
},
{
"code": "RESPONSE_OUTSIDE_REQUEST",
"batch": "one",
"id": "D"
},
{
"code": "RESPONSE_OUTSIDE_REQUEST",
"batch": "two",
"id": "A"
},
{
"code": "DUPLICATE_RESPONSE",
"batch": "two",
"id": "A"
},
{
"code": "RESPONSE_OUTSIDE_REQUEST",
"batch": "two",
"id": "B"
},
{
"code": "DUPLICATE_RESPONSE",
"batch": "two",
"id": "B"
},
{
"code": "DUPLICATE_RESPONSE",
"batch": "two",
"id": "C"
},
{
"code": "DUPLICATE_RESPONSE",
"batch": "two",
"id": "D"
}
],
"not_assessed": [
"answer_quality",
"model_context",
"economic_benefit",
"retry_idempotency"
]
},
"verdict": "ANOMALIES"
}Observaciones necesarias para el cálculo
Estás preparando un indicador para la regla que decide una compra. Antes de calcularlo necesitas todos los precios de su ventana. El calendario inventado de este informe exige el 1, 2 y 3 de enero de 2026; el archivo solo contiene el día 1, con valor 11, y el día 3, con valor 13. Para decidir el día 3 falta el valor del 2 de enero. El informe señala MISSING_OBSERVATION: permite detener la preparación antes de proporcionar datos incompletos a la regla o al modelo. Recupera el valor de su fuente; si no puedes, mantén esa decisión bloqueada por falta de datos. El informe no calcula el indicador ni simula una compra. En el caso de la media móvil, ves qué orden puede cambiar cuando una sesión anterior oculta el hueco. Las fechas de este informe pertenecen a un calendario didáctico, no a las sesiones de una bolsa.
Anomalías detectadas
1
Decisiones examinadas
1
Antes de calcular un indicador, el programa busca todas las observaciones exigidas por el calendario declarado. Señala por separado una fecha ausente, una celda vacía y un dato recibido después de decidir. Comprueba presencia y tiempos, no la fórmula ni la procedencia de los valores.
Qué significan las incidencias
- Momento de la decisión: 2026-01-03T00:00:00Z. La ventana no contiene todas las observaciones exigidas por el calendario declarado. Fechas requeridas que faltan: 2026-01-02T00:00:00Z.
Hashes declarados de los archivos de entrada
5b501d08ef6c4264e3b82465fd3cf01e0f4efd50f6637bb1d6e86869e73d76beSHA-256 del informe de comprobación
946c0fd3d864037dd5a42e448c572379405b428c00dd2cd1de4fc0d283dce3ffInforme de comprobación y detalles técnicos
{
"version": "3.0.0-pilot",
"command": "windows",
"input_sha256": [
"5b501d08ef6c4264e3b82465fd3cf01e0f4efd50f6637bb1d6e86869e73d76be"
],
"result": {
"scope": "single_series_declared_calendar_and_availability",
"required_observations": 3,
"windows": [
{
"decision_at": "2026-01-03T00:00:00Z",
"expected": [
"2026-01-01T00:00:00Z",
"2026-01-02T00:00:00Z",
"2026-01-03T00:00:00Z"
],
"missing": [
"2026-01-02T00:00:00Z"
],
"late": [],
"nulls": [],
"codes": [
"MISSING_OBSERVATION"
]
}
],
"issues": [
{
"decision_at": "2026-01-03T00:00:00Z",
"expected": [
"2026-01-01T00:00:00Z",
"2026-01-02T00:00:00Z",
"2026-01-03T00:00:00Z"
],
"missing": [
"2026-01-02T00:00:00Z"
],
"late": [],
"nulls": [],
"codes": [
"MISSING_OBSERVATION"
]
}
],
"not_assessed": [
"exchange_calendar_accuracy",
"provider_revisions",
"feature_formula",
"model_fit_exposure"
]
},
"verdict": "ANOMALIES"
}Reproduce las ocho incidencias
Este ejemplo inventado contiene cuatro identificadores, A, B, C y D, que representan cuatro archivos CSV para analizar. El primer encargo asigna A y B; el segundo, C y D. Sin embargo, ambas respuestas declaran haber analizado los cuatro CSV. El programa compara los identificadores asignados con los devueltos: no lee los CSV que representan ni evalúa los análisis.
QE-BATCH-01/1.0 · El programa público contiene las mismas funciones del control batches, versión 3.0.0-pilot, que generó el informe «Trabajo asignado y resultados recibidos» de esta página. Puedes ejecutarlo con Python 3, sin instalar bibliotecas adicionales.
- Descarga el programa y los tres archivos JSON que aparecen debajo en una misma carpeta. El programa debe llamarse QE-BATCH-01.py: si el navegador conserva la extensión .txt, cambia el nombre antes de ejecutarlo.
- Abre una terminal en esa carpeta y ejecuta el primer comando. Se creará report-broken.json. Para proteger un resultado guardado, el programa se niega a sobrescribir un archivo existente.
- Compara report-broken.json con batches-expected.json. Deben coincidir la versión, el hash del archivo de entrada, el resultado y el veredicto: cuatro incidencias por identificadores ajenos al encargo y cuatro por respuestas duplicadas, ocho en total.
- Ejecuta el segundo comando con el archivo corregido que se proporciona. report-corrected.json debe contener una lista issues vacía y el veredicto NO_FINDINGS_IN_SCOPE: cada respuesta contiene los identificadores de su encargo, una sola vez.
- Programa Python
QE-BATCH-01.py - Datos con los defectos
batches-broken.json - Informe esperado
batches-expected.json - Datos corregidos
batches-corrected.json
python QE-BATCH-01.py batches-broken.json --out report-broken.json
python QE-BATCH-01.py batches-corrected.json --out report-corrected.jsonANOMALIES indica que el programa ha detectado defectos en los datos proporcionados: es el resultado esperado en este ejercicio. NO_FINDINGS_IN_SCOPE solo significa que no ha encontrado defectos en la asignación declarada ni en los identificadores devueltos. Ninguno de los dos veredictos demuestra la calidad de los análisis, el beneficio económico del trabajo ni la ausencia de duplicaciones al reintentar un encargo.
La guía está en preparación. Los recursos de este sitio son gratuitos. Puedes pedir un único correo cuando esté lista; no se admiten compras ni reservas.
Avísame cuando esté listaElaborado por Quantic Eagle LTD · Formación general en métodos de investigación. Quiénes somos.