Respuesta directa: qué significa el cálculo de “Frama”
FRAMA (a menudo escrito como “Frama”) significa Media Móvil Adaptativa Fractal (FRactal Adaptive Moving Average). Se calcula para producir una media móvil cuya fuerza de suavizado se adapta a lo “compleja” o “tendencial” que parece la acción del precio reciente. La adaptación proviene de estimar una dimensión fractal a partir de los rangos de precios en múltiples ventanas de retroceso y, luego, convertir esa estimación en un factor de suavizado efectivo.
Un punto clave es que el valor de Frama no se produce a partir de una única fórmula que use solo un parámetro. Depende de:
- las longitudes de retroceso elegidas,
- la definición de los datos de precio (por ejemplo, usar rangos de máximos/mínimos derivados de OHLC),
- y la asignación de la dimensión fractal al factor de suavizado.
La mecánica: entradas y pasos centrales del cálculo
1) Definir los datos y el “rango” utilizado
La mayoría de las implementaciones de Frama utilizan el rango del precio en una ventana, típicamente derivado de los valores máximos y mínimos. Un concepto de rango estándar es:
- Rango en una ventana: una medida como (máximo más alto − mínimo más bajo) dentro de esa ventana.
Si estás verificando un cálculo por tu cuenta, la primera tarea es fijar la definición exacta de “rango” que usa tu fuente, porque cambiar la definición de rango cambia la serie de Frama resultante.
2) Dividir el retroceso principal en subventanas
Un diseño típico de Frama usa una longitud de ventana principal (llamémosla N). Para estimar el comportamiento fractal, el algoritmo considera:
- un rango sobre las últimas N barras, y
- rangos sobre dos subventanas consecutivas de longitud N/2 (cuando N es par).
Eso significa que para una barra en el tiempo t conceptualmente calculas:
- Rango1: rango sobre la primera subventana,
- Rango2: rango sobre la segunda subventana,
- RangoTotal: rango sobre la ventana completa.
3) Calcular una estimación de dimensión fractal
La dimensión fractal (en el sentido de Frama) se estima a partir de cómo se compara RangoTotal con Rango1 y Rango2. Un enfoque común es convertir la proporción en un valor de dimensión que aumenta cuando el movimiento del precio parece más irregular y disminuye cuando parece más una tendencia suave.
Debido a que existen múltiples versiones en la práctica, la verificación requiere revisar tu referencia elegida para la asignación exacta de las proporciones de rango a la dimensión fractal.
4) Convertir la dimensión fractal en un factor de suavizado adaptativo
Una vez que se dispone de una estimación de dimensión fractal, Frama la convierte en un factor de suavizado. La idea es:
- cuando la complejidad estimada sugiere “más ruido”, el suavizado se vuelve más fuerte (respuesta más lenta),
- cuando sugiere “estructura más tendencial”, el suavizado se vuelve más débil (respuesta más rápida).
Nuevamente, la conversión exacta depende de la implementación. Muchas variantes usan parámetros como límites de suavizado mínimos/máximos para mantener el factor de suavizado en un rango práctico.
5) Aplicar una actualización de suavizado exponencial
Finalmente, Frama se actualiza recursivamente al estilo de una media móvil:
- el nuevo valor de Frama en el tiempo t es una combinación del precio actual (o un proxy elegido, como un precio medio) y el valor anterior de Frama,
- donde el peso de la combinación es el factor de suavizado adaptativo calculado en los pasos 2–4.
Por lo tanto, incluso cuando las matemáticas de la dimensión fractal son correctas, aún necesitas verificar:
- qué “precio actual” se usa en la actualización (cierre vs. precio medio), y
- cómo se inicializa el primer valor de Frama.
Evidencia o ejemplo: cómo verificar un cálculo de Frama sin supuestos de trading
Debido a que la fórmula exacta puede variar entre fuentes, la forma más confiable de verificar “cómo se calcula” es reproducirlo a partir de supuestos fijos en un conjunto de datos pequeño.
Un procedimiento de autocomprobación
- Elige un segmento histórico corto y una definición de barra fija (por ejemplo, OHLC con máximo/mínimo y cierre).
- Elige N y la regla de división de subventanas (por ejemplo, N/2 en cada lado, lo que requiere un N par).
- Calcula Rango1, Rango2 y RangoTotal usando la misma definición de rango que tu fuente objetivo.
- Aplica la asignación de dimensión fractal exactamente como se indica en esa fuente.
- Calcula el factor de suavizado adaptativo y luego la actualización recursiva de Frama.
- Compara los valores finales de tu serie con la salida objetivo para las mismas entradas.
Supuesto material a declarar explícitamente
Declara tus supuestos en tus notas:
- si usaste (máximo más alto − mínimo más bajo) como rango,
- si usaste el cierre o el precio medio en la actualización final,
- cómo manejas las primeras N barras (sin salida, calentamiento o inicialización),
- y si usas solo N par o redondeo para las subventanas.
Si cambias cualquiera de estos, debes esperar que los valores de Frama cambien, incluso si mantienes la misma “idea general” de adaptación fractal.
Limitaciones y modos de fallo
1) Las diferencias de implementación son comunes
“Frama” es un concepto algorítmico, pero diferentes plataformas y artículos pueden usar detalles distintos para:
- la asignación de dimensión fractal,
- los límites de suavizado,
- el proxy de precio en la actualización,
- y la inicialización.
Por lo tanto, no puedes comparar de manera segura los valores de Frama entre proveedores a menos que los detalles de cálculo coincidan.
2) Las entradas basadas en rango pueden ser sensibles al ruido
Usar rangos de máximos/mínimos significa que el indicador puede reaccionar fuertemente a extremos intrabarra. En condiciones agitadas, los movimientos aleatorios pueden cambiar las proporciones de rango y, por lo tanto, el factor de suavizado adaptativo, incluso cuando la “tendencia” subyacente no es clara.
3) Las elecciones de parámetros pueden dominar el comportamiento
La longitud de retroceso y cualquier límite de suavizado afectan fuertemente la rapidez con la que Frama se adapta. Una ventana corta tiende a ser más receptiva, pero también puede ser más inestable. Una ventana más larga tiende a ser más suave, pero puede retrasarse. Esto es una compensación matemática y estadística, no una garantía de corrección.
4) Los indicadores recursivos dependen de las condiciones iniciales
Debido a que Frama es típicamente recursivo, las decisiones de inicialización temprana y el manejo del calentamiento pueden afectar los valores posteriores. En historias largas, la influencia puede disminuir, pero en muestras más cortas puede ser importante.
Verificación y siguiente pregunta a plantear
Para explicar Frama con precisión a otra persona, produce tres cosas:
- Los detalles exactos de la fórmula que estás usando, incluyendo cómo se definen el rango, la dimensión fractal, el factor de suavizado y la actualización recursiva.
- Una lista de entradas requeridas (al menos máximo/mínimo y un precio para el paso de actualización) y los parámetros necesarios (por ejemplo, N y cualquier límite de suavizado).
- Una declaración de limitación basada en las elecciones de implementación que asumiste (por ejemplo, sensibilidad al ruido de máximos/mínimos o dependencia de la inicialización).
Una pregunta útil a continuación es: ¿cómo cambian los ajustes que eliges el equilibrio entre capacidad de respuesta y suavizado? Si compartes los nombres de parámetros específicos y las definiciones de precio/rango de la fuente que estás usando, el cálculo de Frama se puede verificar paso a paso con tu conjunto de datos.