資源の読み込みに... 荷物...

カレッド・タミムのアヴェレネダ・ストイコフ戦略

作者: リン・ハーンチャオチャン開催日:2024年4月30日 15:54:23
タグ:

img

概要

カレド・タミムのアヴェレネダ・ストイコフ戦略は,アヴェレネダ・ストイコフモデルに基づいた定量的な取引戦略である.この戦略は,取引コストを考慮しながら,中間価格,入札価格,要求価格を計算することによって,買い売りシグナルを決定する.この戦略の主なアイデアは,価格が特定の値を下回るときに購入し,価格が特定の値を下回るときに売却し,それによってスプレッド利益を得ることである.

戦略原則

この戦略の核心は,Avellaneda-Stoikovモデルで,次のステップでオードとオード価格を計算します.

  1. 中間価格を計算します.これは現在の価格と前の価格の平均です.
  2. 中間価格からガンマ,シグマ,T,k を含む平方根項を減算して,取引コストを減算してオファー価格を計算します.
  3. 中間価格にガンマ,シグマ,T,k を含む平方根項を足し,取引コストを足し,オークション価格を計算します.
  4. 価格がオード価格マイナス値Mを下回ると購入信号を生成し,価格がオード価格プラス値Mを下回ると売却信号を生成する.

戦略 の 利点

  1. この戦略は,堅牢な理論的基盤を持つ古典的な市場構築戦略であるアヴェレネダ・ストイコフモデルに基づいています
  2. この戦略は,取引コストの影響を考慮し,実際の取引状況により現実的になります.
  3. M 基準を設定することで,戦略の敏感性は 柔軟に調整され,異なる市場環境に対応できます.
  4. 戦略の論理は明確で 分かりやすく 実行できます

戦略リスク

  1. 戦略のパフォーマンスは,ガンマ,シグマ,T,k,Mなどのパラメータの選択に依存する.パラメータの設定が正しくない場合,戦略のパフォーマンスが低下する可能性があります.
  2. この戦略は,市場の流動性の影響を考慮していない. 流動性が不十分の場合,期待価格で取引することは不可能である.
  3. この戦略は,低取引遅延と高実行効率を必要とする高周波取引戦略であり,実装が困難です.

戦略の最適化方向

  1. 機械学習アルゴリズムを導入し,戦略パラメータを動的に調整し,異なる市場状況に適応させる.
  2. 他の技術指標や市場マイクロ構造の情報を組み合わせて信号の精度を向上させる.
  3. 取引の実行アルゴリズムを最適化し,取引コストを削減し,戦略収益を向上させる.
  4. リスク管理モジュールを導入し,戦略の引き上げとリスクの露出を制御することを検討する.

概要

カレド・タミム・アヴェレネダ・ストイコフ戦略は,古典的な市場構築モデルに基づいた定量的な取引戦略である.取引コストを考慮しながら,オファー価格とオファー価格を計算することによって取引信号を生成する.この戦略の利点は,堅牢な理論的基礎,明確な論理,取引コストの考慮にある.しかし,戦略のパフォーマンスがパラメータ選択に依存し,高い実行効率を必要とする.将来,戦略は機械学習アルゴリズムを導入し,取引実行を最適化し,リスク管理を導入し,その他の方法によりさらに最適化することができる.


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

もっと