Preregistro — viabilidad económica del mercado cripto
Fecha: 2026-09-19 · Escrito antes de correr ninguna medición con datos
reales, y sin haber visto ningún dato de Alpaca desde este proyecto.
Este documento no es evidencia generada: es un compromiso. Se escribe a
mano, se commitea antes de medir y no se toca después. Si una hipótesis
resulta incómoda, se deja escrita igual.
Qué se mide
Para cada par y cada marco temporal (1Hour, 4Hour, 1Day) y cada horizonte
H en barras (1, 2, 4, 8, 16):
Movimiento: mediana de |P(t+H) − P(t)| / P(t), solo sobre ventanas
enteramente contiguas.
Coste de ida y vuelta: comisión de entrada + comisión de salida + spread
medido. Sin spread, el coste queda marcado como cota inferior.
Razón = movimiento ÷ coste.
Exceso √H = movimiento(H) ÷ (movimiento(1) × √H).
Eficiencia = mediana de |desplazamiento neto| / recorrido total.
Razón de varianzas = Var(R_H) ÷ (H × Var(R_1)).
Periodo: 2024-01-01 → fecha de la corrida. Se elige para solapar con el
backtest de cripto del bot de acciones, que cubre el mismo tramo.
Hipótesis, con su métrica de decisión
H1 — Existe algún sitio donde operar no sea imposible
Existe al menos un par y un marco temporal con razón ≥ 2 con el spread
medido incluido.
Métrica: máximo de la razón sobre todas las combinaciones, contando solo
las que tengan spread medido y ≥ 30 ventanas no solapadas.
Si falla: no hay dónde operar con este bróker a estos costes. Se para el
proyecto o se cambia de bróker. No se busca una estrategia mejor.
Umbral 2 y no 1: en 1 el movimiento típico entero se va íntegro en
costes. En 2 todavía se regala la mitad. Por debajo de 2 no hay margen para
equivocarse, y equivocarse es la mayor parte del tiempo.
H2 — Subir de marco temporal no aporta estructura, solo tiempo
El exceso √H cae dentro de [0.90, 1.10] para todos los pares y marcos.
Métrica: fracción de combinaciones con H > 1 cuyo exceso cae en la banda.
Umbral: confirmada si ≥ 0.80, refutada si < 0.50, y parcial entre
medias. Fijado el 2026-09-19, con la medición ya lanzada y sin ningún
resultado a la vista: el enunciado original declaraba la métrica pero no el
umbral, y eso dejaba la conclusión a mi criterio después de ver los datos.
Si se confirma: la mejora de la razón al alargar el marco es aritmética
(√H), no información. Cualquier diseño que «arregle» el coste alargando la
posición está comprando tiempo, no ventaja, y el informe debe decirlo.
Si se refuta: hay pares o marcos donde el movimiento crece más rápido o
más lento que √H. Esos son los únicos candidatos con estructura.
Predicción explícita: espero que se confirme en la mayoría. El
backtest anterior del bot de acciones daba 0.84× a 1 h y «holgado» a 4 h, y
√4 = 2 explica el salto entero sin necesidad de nada más.
H3 — Las monedas más volátiles tienen mejor razón movimiento/coste
Ordenados por movimiento mediano, el orden por razón sin spread coincide.
Métrica: correlación de orden (Spearman) entre movimiento mediano y razón
sin spread, por marco temporal, promediada entre marcos.
Umbral: confirmada si ≥ 0.90. Cualquier valor menor es un fallo de la
medición, no un hallazgo (ver la nota).
Nota: esto es casi una tautología cuando el coste es igual para todos
(misma comisión, sin spread). Se preregistra precisamente por eso: sirve
de control. Si no sale, hay un fallo en la medición, no un hallazgo.
H4 — El spread se come esa ventaja
Al incluir el spread medido, el orden por razón se invierte respecto al
orden sin spread: las altcoins volátiles pasan a ser peores que BTC.
Métrica: correlación de orden (Spearman) entre la razón sin spread y la
razón con spread, por marco temporal, promediada entre marcos.
Umbral: confirmada si ≤ 0.00 (el orden se invierte o se deshace),
refutada si ≥ 0.50 (el orden aguanta y el spread no cambia quién gana), y
parcial entre medias.
Por qué importa: es el punto donde dos efectos se oponen y cuál gana es
empírico. Si H4 se confirma, la intuición de «más volátil es mejor» es un
artefacto de ignorar el spread, y toda cifra sin spread es inservible.
Sin predicción: no tengo motivo para apostar en un sentido u otro. Se deja
así escrito para no poder decir después que lo sabía.
H5 — El marco horario no sobrevive al coste
Ningún par alcanza razón ≥ 2 en 1Hour con spread incluido.
Métrica: máximo de la razón en 1Hour, con spread y ≥ 30 ventanas.
Consecuencia si se confirma: el ciclo del bot puede vivir en GitHub
Actions (un ciclo cada 4 h son ~180 ejecuciones al mes, dentro de los 2 000
minutos gratuitos). Si se refuta y el marco horario sobrevive, Actions no
da para 24/7 y el ciclo tiene que ir a un Worker de Cloudflare.
Qué NO decide esta medición
No decide ninguna estrategia. Ni una regla, ni un parámetro, ni un
universo. Solo dónde es posible y dónde es imposible.
No dice nada del signo. Mide cuánto se mueve el precio, no si la
dirección es predecible.
No modela deslizamiento ni impacto. Valen cero, así que todos los
resultados son cotas superiores optimistas por ese lado.
Ventanas de validación gastadas
Ninguna todavía. Esta medición no elige nada: describe el mercado, no
selecciona variantes. El contador de ventanas gastadas empieza en 0 y sube
la primera vez que se escoja algo mirando un periodo.
Apéndice, escrito DESPUÉS de medir (2026-09-19)
Todo lo de arriba se mantiene tal cual se escribió. Esto se añade aparte y con
fecha, para que se pueda distinguir qué se comprometió antes y qué se supo
después.
Medición: evidencia/viabilidad-2024-01-01_2026-09-19.md, generada en el commit
1fe97a2a681dd33bb421499a0d0f8262f11121ab.
Resultados
#
Valor
Veredicto
H1
14.104
confirmada
H2
0.681
parcial
H3
1.000
confirmada
H4
0.886
refutada
H5
2.523
refutada (con la métrica mal escrita, ver abajo)
Error 1 — H5 medía otra cosa de la que yo quería medir
La métrica decía «máximo de la razón en 1Hour entre combinaciones que
deciden», y el máximo recorre todos los horizontes. El 2.523 sale de
LINK/USD con H=16: una posición de dieciséis horas medida sobre barras
horarias. Eso no es lo que significa «el marco horario sobrevive al coste».
A H=1, que es una operación de una hora de verdad, las seis monedas quedan
entre 0.35 y 0.58: ninguna llega a 1, y por tanto ninguna cubre el coste.
El veredicto se deja como lo calculó el código. No se redefine H5 ahora que
los datos están a la vista, porque reescribir la métrica después de ver el
resultado es exactamente lo que un preregistro existe para impedir.
Error 2 — la predicción de H2 falló
Estaba escrito: «espero que se confirme en la mayoría». Salió parcial
(0.681, con el umbral de confirmación en 0.80). La predicción era mía y no se
cumplió.
Además el desglose por marco no es uniforme, y eso no estaba previsto:
Marco
Fracción dentro de [0.90, 1.10]
1Hour
0.833
1Day
0.792
4Hour
0.417
Los marcos horario y diario se comportan como un paseo aleatorio. El de cuatro
horas no. Es una observación posterior, no una hipótesis contrastada: aquí
solo queda anotada.
Ventanas de validación gastadas: 1
La primera. Se gastó al mirar este periodo (2024-01-01 → 2026-09-19) para
detectar que H5 estaba mal especificada y que el marco de 4 h se desvía. Ese
tramo ya no es prueba independiente para esas dos cosas.
Preregistro para la próxima medición
Se fijan aquí, antes de correrla, y sobre un periodo distinto del gastado.
H5b — el marco operable, sin confundir barra con permanencia
Fijado H=1 (una sola barra en posición), ningún par alcanza razón ≥ 2 en
1Hour ni en 4Hour.
Métrica: máximo de la razón restringido a H=1, por marco, entre
combinaciones con spread medido y ≥ 30 ventanas no solapadas.
Umbral: confirmada si ese máximo < 2.00 en los dos marcos.
Consecuencia: si se confirma, el único ritmo que cubre el coste es el
diario y el ciclo cabe holgado en GitHub Actions. La elección del Worker, si
se hace, será por control y no por economía, y así debe decirse.
H6 — la desviación del marco de 4 horas
La fracción de combinaciones con H>1 dentro de [0.90, 1.10] en 4Hour es
menor que en 1Hour y que en 1Day, también en un periodo distinto.
Métrica: las tres fracciones, sobre 2021-01-01 → 2023-12-31.
Umbral: confirmada si la de 4Hour es al menos 0.20 menor que la menor
de las otras dos.
Sin predicción: no sé si es estructura o artefacto del muestreo. Si no se
repite en otro periodo, era ruido y se dice.
Lo que sigue sin comprobarse
Cuántos pares ofrece Alpaca. Exige credenciales y no las hay. No
comprobable, que no es lo mismo que pocos ni muchos.
Nada de esto dice si la dirección es predecible. Ni una sola de las
métricas mira el signo.
Regla de decisión del cierre de la fase 1
Escrita el 2026-09-19, antes de correr la medición sobre 2021-2023 y sin
ningún resultado de ese periodo a la vista.
El usuario ha decidido contrastar H6 y después cerrar. Escribir esto antes
existe por un motivo concreto: decidir el desenlace antes de medir convierte la
medición en teatro, y si H6 saliera confirmada, cerrar igualmente sería tirar el
único resultado positivo del proyecto. Así que cada desenlace tiene su
consecuencia fijada ahora.
Si H6 queda REFUTADA
La desviación del marco de 4 h no se repite en un periodo independiente: era
ruido de una sola ventana.
→ Se cierra la fase 1. Se genera un informe de cierre y el proyecto se
detiene. No hay evidencia de estructura en ningún marco temporal medido, y el
coste mínimo alcanzable (0.524 %) deja fuera todo lo que no sea diario.
Si H6 queda CONFIRMADA
La desviación se repite en 2021-2023, un periodo que no se gastó eligiendo
nada.
→ NO se cierra automáticamente. Se documenta como el único hallazgo
positivo y la decisión vuelve al usuario con ese dato delante.
Y con esta advertencia escrita de antemano, para que no se lea de más:
confirmar H6 no significa «hay estrategia». Significa «hay una anomalía que
se repite en dos periodos». Eso es mucho menos, pero es lo único que no se ha
caído, y una anomalía reproducida en dos ventanas independientes es el único
tipo de pista que este proyecto ha considerado digna de seguir.
Si queda NO EVALUABLE
Faltan datos en 2021-2023 (menos de 30 ventanas no solapadas, o huecos). No es
ni confirmación ni refutación.
→ Se dice así, no se cuenta como refutación, y la decisión de cerrar se
toma —si se toma— sin apoyarse en esta medición.
Qué significa «cerrar»
No es abandonar en silencio. Es:
Un informe de cierre generado por código, que reúna lo medido y lo no medido.
El repositorio legible para una sesión futura: qué se preguntó, qué se
respondió, qué quedó abierto y por qué se paró.
Ninguna línea más de estrategia, backtester ni ejecución.
Ventanas de validación gastadas: 2
La primera, 2024-01-01 → 2026-09-19, al detectar que H5 estaba mal especificada
y que el marco de 4 h se desviaba. La segunda, 2021-01-01 → 2023-12-31, al
contrastar H6. Después de esta medición no queda ningún periodo sin gastar
en este universo, y cualquier decisión posterior tendría que buscar datos
nuevos o aceptar que ya no hay prueba independiente.
Generado desde el commit 8bc83abe2572ab2ef84a13c7405f5c05e2411d20