- Carré
- La stratégie Avellaneda-Stoikov de Khaled Tamim
La stratégie Avellaneda-Stoikov de Khaled Tamim
Auteur:
ChaoZhang est là., Date: 2024-04-30 15h54 et 23h
Les étiquettes:
Résumé
La stratégie Avellaneda-Stoikov de Khaled Tamim est une stratégie de trading quantitative basée sur le modèle Avellaneda-Stoikov. La stratégie détermine les signaux d'achat et de vente en calculant le prix moyen, le prix d'offre et le prix de vente tout en tenant compte des coûts de transaction.
Principe de stratégie
Le noyau de cette stratégie est le modèle Avellaneda-Stoikov qui calcule les prix d'offre et de demande à travers les étapes suivantes:
- Calculer le prix moyen, qui est la moyenne du prix actuel et du prix précédent.
- Calculez le prix d'enchère en soustrayant un terme de la racine carrée contenant Gamma, Sigma, T et k du prix moyen, puis en soustrayant le coût de la transaction.
- Calculez le prix de vente en ajoutant un terme racine carrée contenant Gamma, Sigma, T et k au prix moyen, puis en ajoutant le coût de la transaction.
- Générer un signal d'achat lorsque le prix est inférieur au prix d'achat moins le seuil M; générer un signal de vente lorsque le prix est supérieur au prix d'achat plus le seuil M.
Les avantages de la stratégie
- Cette stratégie est basée sur le modèle Avellaneda-Stoikov, qui est une stratégie classique de création de marché dotée d'un solide fondement théorique.
- La stratégie tient compte de l'impact des coûts de transaction, ce qui la rend plus réaliste pour les situations commerciales réelles.
- En fixant le seuil M, la sensibilité de la stratégie peut être ajustée de manière flexible pour s'adapter aux différents environnements de marché.
- La logique de la stratégie est claire et facile à comprendre et à mettre en œuvre.
Risques stratégiques
- Les performances de la stratégie dépendent du choix de paramètres tels que Gamma, Sigma, T, k et M. Des paramètres incorrects peuvent entraîner de mauvaises performances de la stratégie.
- La stratégie ne tient pas compte de l'impact de la liquidité du marché.
- Cette stratégie est une stratégie de négociation à haute fréquence qui nécessite une faible latence de négociation et une efficacité d'exécution élevée, ce qui la rend difficile à mettre en œuvre.
Directions d'optimisation de la stratégie
- Introduire des algorithmes d'apprentissage automatique pour ajuster dynamiquement les paramètres de stratégie afin de les adapter aux différentes conditions du marché.
- Combiner d'autres indicateurs techniques ou des informations sur la microstructure du marché pour améliorer la précision du signal.
- Optimiser l'algorithme d'exécution des transactions pour réduire les coûts de transaction et améliorer les rendements de la stratégie.
- Il convient d'envisager l'introduction d'un module de gestion des risques pour contrôler les recours à la stratégie et l'exposition au risque.
Résumé
La stratégie Avellaneda-Stoikov de Khaled Tamim est une stratégie de trading quantitative basée sur le modèle classique de création de marché. Elle génère des signaux de trading en calculant les prix d'offre et de demande tout en considérant les coûts de transaction. Les avantages de la stratégie résident dans sa base théorique solide, sa logique claire et la prise en compte des coûts de transaction.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Khaled Tamim's Avellaneda-Stoikov Strategy", overlay=true)
// Avellaneda-Stoikov model logic
avellanedaStoikov(src, gamma, sigma, T, k, M) =>
midPrice = (src + src[1]) / 2
sqrtTerm = gamma * sigma * sigma * T
// Add 0.1% fee to bid and ask quotes
fee = 0 // 0.1% fee
bidQuote = midPrice - k * sqrtTerm - (midPrice * fee)
askQuote = midPrice + k * sqrtTerm + (midPrice * fee)
longCondition = src < bidQuote - M
shortCondition = src > askQuote + M
[bidQuote, askQuote]
// Define strategy parameters
gamma = input.float(2, title="Gamma")
sigma = input.float(8, title="Sigma")
T = input.float(0.0833, title="T")
k = input.float(5, title="k")
M = input.float(0.5, title="M")
// Calculate signals
[bidQuote, askQuote] = avellanedaStoikov(close, gamma, sigma, T, k, M)
longCondition = close < bidQuote - M
shortCondition = close > askQuote + M
// Plot signals
plotshape(series=longCondition ? low : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition ? high : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Plot bid and ask prices
plot(bidQuote, title="Bid Price", color=color.blue, linewidth=1)
plot(askQuote, title="Ask Price", color=color.red, linewidth=1)
// Plot inventory level as bars in a separate graph
plot(strategy.netprofit, title="Inventory", color=color.new(color.purple, 80), style=plot.style_columns)
// Strategy logic
if (longCondition)
strategy.entry("Buy", strategy.long)
if (shortCondition)
strategy.entry("Sell", strategy.short)
Plus de