Programmez votre propre indicateur - II
Le RSI est correct, mais il est un peu dépassé comme indicateur. Dans cet exercice, vous allez coder une version simplifiée d'un autre indicateur à partir de zéro. Cet indicateur s'appelle le David Varadi Oscillator (DVO), créé par David Varadi, un directeur de la recherche quantitative.
L'objectif de cet oscillateur ressemble à celui du RSI : repérer des occasions d'acheter lors d'un creux temporaire et de vendre dans une hausse temporaire. En plus des données de marché obligatoires, une fonction d'oscillateur prend deux périodes de rétrospection (lookback).
D'abord, la fonction calcule un ratio entre le prix de clôture et la moyenne des prix le plus haut et le plus bas. Ensuite, elle applique une SMA à cette quantité pour atténuer le bruit, généralement sur une très courte période, comme deux jours. Enfin, elle utilise la fonction runPercentRank() pour obtenir un classement en pourcentage glissant de ce ratio moyen, puis le multiplie par 100 pour le convertir en une valeur de 0 à 100.
Pensez à la façon dont les élèves reçoivent un rang centile après un test standardisé (par exemple, si une élève obtient 800 à la section de mathématiques, elle pourrait se situer au 95e centile à l'échelle nationale). runPercentRank() fait la même chose, mais au fil du temps. Cet indicateur fournit le rang de la dernière observation dans le contexte d'une période passée que l'utilisateur précise. Par exemple, si une série a une valeur runPercentRank de 0,90 avec une période de rétrospection de 126, cela signifie qu'elle se situe au 90e centile lorsqu'on la compare à elle-même et aux 125 observations précédentes.
Votre tâche est d'implanter cet indicateur et de l'enregistrer sous le nom DVO. Une partie du code nécessaire est fournie, et les progiciels quantstrat, TTR et quantmod sont chargés dans votre espace de travail.
Cette activité fait partie du cours
Négociation financière en R
Instructions de l’exercice
- Créez et nommez une fonction,
DVO, pour l'indicateur décrit ci-dessus. Les trois paramètres de votre fonction serontHLC,navg(par défaut : 2) etpercentlookback(par défaut : 126). - Le ratio de la clôture (
Cl()) deHLCdivisé par la moyenne des prix le plus haut (Hi()) et le plus bas (Lo()) est calculé pour vous. - Utilisez
SMA()pour implanter une moyenne mobile de ce ratio, paramétrée par l'argumentnavg. Enregistrez le résultat sousavgratio. - Utilisez
runPercentRank()pour implanter un système de classement en pourcentage pouravgratio.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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)
}