Les ressources ont été chargées... Je charge...

La stratégie Avellaneda-Stoikov de Khaled Tamim

Auteur:ChaoZhang est là., Date: 2024-04-30 15h54 et 23h
Les étiquettes:

Khaled Tamim’s Avellaneda-Stoikov Strategy

Résumé

La stratégie Avellaneda-Stoikov de Khaled Tamim est une stratégie de négociation quantitative basée sur le modèle Avellaneda-Stoikov. Elle détermine les signaux d'achat et de vente en calculant les prix intermédiaires, les prix d'achat et de vente, tout en tenant compte des frais de transaction.

Les principes stratégiques

Au cœur de cette stratégie se trouve le modèle Avellaneda-Stoikov, qui calcule les prix d'achat et de vente en suivant les étapes suivantes: 1. Calculer le prix intermédiaire, c'est-à-dire la moyenne du prix actuel par rapport au prix précédent. 2. Calculer le prix d'achat, c'est-à-dire le prix intermédiaire moins la racine carrée d'un élément contenant Gamma, Sigma, T et k, et moins les frais de transaction. 3. Calculer le prix de vente, c'est-à-dire le prix intermédiaire plus une racine carrée contenant Gamma, Sigma, T et k, plus les frais de transaction. 4. Un signal d'achat est généré lorsque le prix est inférieur au prix d'achat moins le seuil M; un signal de vente est généré lorsque le prix est supérieur au prix de vente plus le seuil M.

Les avantages stratégiques

  1. La stratégie est basée sur le modèle Avellaneda-Stoikov, une stratégie classique de négociation avec une solide base théorique.
  2. La stratégie prend en compte l'impact des frais de transaction et se rapproche davantage de la réalité des transactions.
  3. En réglant le seuil M, la sensibilité de la stratégie peut être ajustée de manière flexible pour s'adapter aux différents environnements du marché.
  4. La logique stratégique est claire, facile à comprendre et à mettre en œuvre.

Risque stratégique

  1. La performance des stratégies dépend de la sélection de paramètres tels que Gamma, Sigma, T, k et M, et une mauvaise configuration des paramètres peut entraîner une mauvaise performance des stratégies.
  2. La stratégie ne prend pas en compte l'impact de la liquidité du marché, qui peut ne pas fonctionner comme prévu en cas de liquidité insuffisante.
  3. Cette stratégie est une stratégie de négociation à haute fréquence qui nécessite de faibles délais de négociation et une plus grande efficacité d'exécution pour atteindre une difficulté plus élevée.

Optimisation stratégique

  1. L'introduction d'algorithmes d'apprentissage automatique et l'ajustement dynamique des paramètres stratégiques pour s'adapter aux différentes conditions du marché.
  2. L'amélioration de l'exactitude des signaux peut être combinée avec d'autres indicateurs techniques ou des informations sur la microstructure du marché.
  3. Optimiser les algorithmes d'exécution des transactions, réduire les coûts de transaction et augmenter les bénéfices stratégiques.
  4. Il est envisageable d'introduire des modules de gestion des risques, de contrôler les stratégies de rétractation et de couverture des risques.

Résumé

La stratégie Avellaneda-Stoikov de Khaled Tamim est une stratégie de négociation quantitative basée sur le modèle classique des négociants, qui produit des signaux de négociation en calculant les prix d'achat et de vente, tout en tenant compte des frais de transaction. La stratégie a l'avantage d'être solide sur le plan théorique et logique, tout en tenant compte de l'impact des frais de transaction. Mais la performance de la stratégie dépend de la sélection des paramètres et nécessite une plus grande efficacité d'exécution.


/*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)

En savoir plus