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

標準化されたロガリズムリターンに基づく適応動的取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-12-27 14:39:32
タグ:SZISMAログ性感染症

img

概要

この戦略は,シリアエフ・チョウ指数 (SZI) をベースとした適応型取引システムである. 平均逆転機会を把握することを目的として,ロガリズムリターンの標準化されたスコアを計算することによって,過剰購入および過剰販売の市場状況を特定する. 戦略は,正確なリスク管理のために動的なストップ・ロストとテイク・プロフィート目標を組み込む.

戦略の原則

戦略の核心は,ロガリズム回帰のローリング統計特性を用いて標準化された指標を構築することにある.具体的なステップは:

  1. ノルマライゼーションのロガリズム回帰を計算する
  2. ローリング・ミディアンと標準偏差を 50 期間の窓を使って計算する
  3. SZIを構成する: (対数帰数 - ローリング平均値) /ローリング標準偏差
  4. SZI が -2.0 未満になると長い信号と,2.0 以上になると短い信号を生成する.
  5. 入場価格に基づいて 2%のストップ損失と 4%の得益率を設定する

戦略 の 利点

  1. 堅実な理論的基礎: 強力な統計的裏付けを持つ ログノーマル分布仮定に基づいている
  2. 高い適応性: ローリングウィンドウの計算は,市場の変動特性の変化に適応する.
  3. 総合的なリスク管理: 割合に基づくストップ・ロスの戦略は,各取引に対して正確なリスク管理を可能にします.
  4. ユーザーに優しい可視化:チャート上の取引信号とリスク管理レベルの明確な注記

戦略リスク

  1. パラメータ感度: ローリングウィンドウの長さと値の選択によって戦略のパフォーマンスが著しく影響を受ける
  2. 市場環境依存: 傾向の市場で頻繁に誤った信号を生む可能性があります.
  3. スリップ効果: 変動期間中に実際の実行価格が理想値から大幅に偏りうる.
  4. 計算遅延: 統計指標のリアルタイム計算は,信号遅延を引き起こす可能性があります.

オプティマイゼーションの方向性

  1. ダイナミック・スロージック: 市場の変動に基づいて信号スロージックを調整することを検討する
  2. 複数のタイムフレーム:複数のタイムフレームにシグナル確認メカニズムを導入
  3. 波動性フィルタリング: 波動性の極端な期間中に取引を一時停止するか,ポジションを調整する
  4. 信号確認: 信号確認のために音量,運動量,その他の補助指標を追加する
  5. ポジション管理: 不安定性に基づく動的ポジションサイズ化を実施する

概要

この戦略は,標準化されたロガリズムリターンを通じて価格変動の機会を捕捉し,堅牢な統計的基盤の上に構築された定量的な取引戦略である.この戦略の主な強みは適応性と包括的なリスク管理にあるが,パラメータ選択と市場環境への適応の最適化には余地がある.動的な値と多次元信号確認メカニズムを導入することにより,戦略の安定性と信頼性がさらに向上することができる.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")


関連性

もっと