ComenzarEmpieza gratis

Programa tu propio indicador - II

Aunque el RSI es correcto, está algo desfasado en cuanto a indicadores. En este ejercicio, vas a programar desde cero una versión simplificada de otro indicador. El indicador se llama David Varadi Oscillator (DVO), creado por David Varadi, director de investigación cuantitativa.

La finalidad de este oscilador es similar a la del RSI: intenta detectar oportunidades para comprar en caídas temporales y vender en repuntes temporales. Además de los datos de mercado obligatorios, una función de oscilador recibe dos periodos de retrospectiva (lookback).

Primero, la función calcula un cociente entre el precio de cierre y la media de los precios máximo y mínimo. Después, aplica una SMA a esa cantidad para suavizar el ruido, normalmente en un marco temporal muy corto, como dos días. Por último, usa la función runPercentRank() para calcular un percentil móvil de ese cociente medio y lo multiplica por 100 para convertirlo en un valor entre 0 y 100.

Piensa en cómo el alumnado obtiene puntuaciones percentiles tras hacer una prueba estandarizada (por ejemplo, si alguien saca 800 en la sección de matemáticas, podría estar en el percentil 95 a nivel nacional). runPercentRank() hace lo mismo, pero a lo largo del tiempo. Este indicador proporciona el rango de la última observación en el contexto de un periodo pasado que el usuario especifica. Por ejemplo, si algo tiene un valor de runPercentRank de 0,90 usando un periodo de retrospectiva de 126, significa que está en el percentil 90 cuando se compara consigo mismo y con las 125 observaciones anteriores.

Tu tarea es implementar este indicador y guardarlo como DVO. Parte del código necesario ya está proporcionado, y los paquetes quantstrat, TTR y quantmod están cargados en tu espacio de trabajo.

Este ejercicio forma parte del curso

Trading financiero en R

Ver curso

Instrucciones del ejercicio

  • Crea y nombra una función, DVO, para el indicador descrito arriba. Los tres argumentos de tu función serán HLC, navg (por defecto 2) y percentlookback (por defecto 126).
  • El cociente del cierre (Cl()) de HLC dividido entre la media de los precios máximo (Hi()) y mínimo (Lo()) ya está calculado para ti.
  • Usa SMA() para implementar una media móvil de este cociente, parametrizada por el argumento navg. Guarda esto como avgratio.
  • Usa runPercentRank() para implementar un sistema de clasificación por percentiles para avgratio.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Declare the DVO function
DVO <- function(___, navg = ___, percentlookback = ___) {
  
  # Compute the ratio between closing prices to the average of high and low
  ratio <- Cl(HLC)/((Hi(HLC) + Lo(HLC))/2)
  
  # Smooth out the ratio outputs using a moving average
  avgratio <- SMA(ratio, n = ___)
  
  # Convert ratio into a 0-100 value using runPercentRank()
  out <- runPercentRank(___, n = percentlookback, exact.multiplier = 1) * 100
  colnames(out) <- "DVO"
  return(out)
}
Editar y ejecutar código