2 votos

Cómo construir correctamente un gráfico de velas de propagación entre dos activos (evitar la inconsistencia de OHLC)

Me pregunto cómo las plataformas de gráficos trazan los diferenciales entre dos activos. Por ejemplo, si queremos dos crear gráfico de propagación entre APPL / AMZN podemos restar o dividir cada activo:

si dividimos dos activos:

appl(OHLC) / amzn(OHLC) appl(OHLC) - amzn(OHLC)

cómo evitar que el precio de cierre del spread sea inferior al mínimo o superior al máximo para construir una serie sintética de spreads OHLC.

Me gustaría crear series sintéticas de spreads de curtom pero no estoy seguro de cómo obtener series de spreads OHLC para crear indicadores a partir de esa serie como si fuera una serie OHLC de un solo activo.

enter image description here

1voto

dotnetcoder Puntos 1262

La apertura y el cierre tendrán una temporización coherente y serán válidos.

Los máximos y mínimos de cada instrumento no serán consistentes en el tiempo. En particular, será especialmente erróneo dividir el apl(H) por amzn(L) para obtener el ratio más alto o el apl(L) por amzn(H).

La probabilidad de que ambos precios estuvieran en los máximos en momentos similares y en los mínimos en momentos similares será mayor, pero en general la precisión estará lejos del 100%.

Sin datos más detallados no se puede hacer más que hacer suposiciones y vivir con un modelo débil.

0voto

Craigy Puntos 111

Con respecto a TradingView específicamente, esta característica se llama gráficos de dispersión . Independientemente del periodo de agregación seleccionado en el gráfico, toman 1 minuto barras del instrumento y producir una serie de difundir bares. Las barras de spread de mayor duración (1 día en su captura de pantalla) se calculan entonces a partir de las barras de spread de 1 minuto.

La expresión se evalúa en el servidor, lo que significa que sería necesario acceder a las barras de instrumentos de 1 minuto para reproducir este cálculo en el cliente.

No está claro qué parte de la barra OHLC utilizan cuando generan barras de spreads de 1 minuto. Lo más probable es que sea Open o Close, ya que los máximos y mínimos dentro de cada período estarían desalineados en el tiempo.

Tanto si se trata de Open como de Close, el spread calculado es aproximado debido al suavizado. El gráfico siguiente muestra las operaciones en bruto de dos activos: A y B (A=SPY reescalado y B=QQQ). Se trata de operaciones reales de lotes redondos registradas el 2021-03-11 10:45:00 US/Eastern.

La línea azul muestra el diferencial bruto A/B que se basa en el precio de la última operación. Cada vez que entra una operación, el ratio se recalcula basándose en el precio de la última operación. Las líneas verde y naranja muestran A[O]/B[O] y A[C]/B[C] por períodos de 1 minuto. A las 10:50 ambas barras de spreads están bastante alejadas del spread bruto, lo que ilustra cómo los spreads de barras de 1 minuto ocultan la volatilidad que se produce dentro de la barra.

enter image description here

Si tiene acceso a las barras VWAP, A[VWAP]/B[VWAP] (serie violeta) proporcionaría una mejor estimación de la dispersión en bruto.

enter image description here

Reducir el periodo de la barra a menos de 1 minuto es otro ajuste que minimiza el suavizado. Ejemplo de uso de barras de 10 segundos:

enter image description here

Así que tenga en cuenta esta información cuando vea los diferenciales de OHLC en la Ventana de Datos. Los valores son aproximados.

enter image description here

Si es necesario calcular las barras de dispersión exactas, se puede crear una ventana deslizante en SQL:

SELECT datetime,
  LAST(CASE symbol WHEN 'SPY' THEN price ELSE null END) last_A,
  LAST(CASE symbol WHEN 'QQQ' THEN price ELSE null END) last_B,
  ROUND(last_A/last_B, 6) AS AB
FROM atsd_trade
WHERE symbol IN ('SPY', 'QQQ')
AND datetime BETWEEN '2021-03-11 09:30:00' AND '2021-03-11 16:00:00'
WITH ROW_NUMBER(1 ORDER BY time, trade_num) >= 0
ORDER BY datetime, trade_num

| datetime                         | last_A | last_B |       AB |
|----------------------------------|-------:|-------:|---------:|
| ...                              |        |        |          |
| 2021-03-11T10:45:00.603000-05:00 | 393.46 | 316.94 | 1.241434 |
| 2021-03-11T10:45:00.603000-05:00 | 393.46 | 316.94 | 1.241434 |
| 2021-03-11T10:45:00.605000-05:00 | 393.47 | 316.94 | 1.241465 |
| 2021-03-11T10:45:00.605000-05:00 | 393.47 | 316.94 | 1.241465 |
| 2021-03-11T10:45:00.605000-05:00 | 393.46 | 316.94 | 1.241434 |
| 2021-03-11T10:45:00.605000-05:00 | 393.47 | 316.94 | 1.241465 |
| 2021-03-11T10:45:00.606000-05:00 | 393.47 | 316.94 | 1.241465 |

Con esta técnica de ventana analítica, es posible calcular las barras de dispersión exactas para cualquier periodo, 1 minuto, 1 hora, 1 día, etc.

SELECT datetime, 
  ROUND(MIN(ratio_AB), 6) AS AB_low, 
  ROUND(MAX(ratio_AB), 6) AS AB_high 
FROM (
SELECT datetime,
  LAST(CASE symbol WHEN 'SPY' THEN price ELSE null END) last_A,
  LAST(CASE symbol WHEN 'QQQ' THEN price ELSE null END) last_B,
  last_A/last_B AS ratio_AB
FROM atsd_trade
WHERE symbol IN ('SPY', 'QQQ')
AND datetime BETWEEN '2021-03-11 09:30:00' AND '2021-03-11 16:00:00'
WITH ROW_NUMBER(1 ORDER BY time, trade_num) >= 0
ORDER BY datetime, trade_num
) GROUP BY PERIOD(1 MINUTE) -- or 1-hour, or 1-day

| datetime            |   AB_low |  AB_high |
|---------------------|---------:|---------:|
| 2021-03-11 10:45:00 | 1.241214 | 1.242576 |
| 2021-03-11 10:46:00 | 1.241756 | 1.242613 |
| 2021-03-11 10:47:00 | 1.242365 | 1.242878 |
| 2021-03-11 10:48:00 | 1.241907 | 1.242808 |
| 2021-03-11 10:49:00 | 1.241197 | 1.242087 |

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X