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

Stratégie de négociation quantitative de signal linéaire normalisé Z-Score

Auteur:ChaoZhang est là., Date: 2025-01-06 16h14 et 07
Les étiquettes:Indice de résistanceSMAZ-ScoreLSBTPSL

img

Résumé

Cette stratégie est un système de trading quantitatif basé sur des signaux linéaires et une normalisation du score Z. Elle construit des signaux de trading standardisés en combinant des variables exogènes comme le RSI avec des données de prix et déclenche des transactions à l'aide de seuils.

Principe de stratégie

Les principes de base comprennent plusieurs étapes clés:

  1. Construction de signal linéaire: utilise des poids configurables (signal_alpha) pour combiner linéairement l'indicateur RSI avec les données de prix pour former des signaux initiaux.
  2. Normalization du score Z: Calcule la moyenne et l'écart type des signaux linéaires en fonction d'une période de rétrospective, normalisant les signaux en scores Z.
  3. Mécanisme de déclenchement de seuil: ouvre des positions longues lorsque le score Z tombe en dessous du seuil négatif et des positions courtes lorsque le seuil est supérieur au seuil positif, contrôlé par le facteur de risque_ajustement_facteur.
  4. Gestion des risques: définit les niveaux de stop-loss et de take-profit pour chaque transaction, avec un ajustement flexible du ratio risque-rendement par le biais de paramètres en pourcentage.

Les avantages de la stratégie

  1. Standardisation du signal: la transformation Z-score fournit de bonnes propriétés statistiques, facilitant le réglage des seuils universels.
  2. Haute flexibilité: peut équilibrer l'influence des variables exogènes et du prix grâce à un ajustement signal_alpha.
  3. Risque contrôlé: mécanisme complet de stop-loss et de prise de profit, configurable en fonction des caractéristiques du marché.
  4. Bonnes capacités d'adaptation: applicables à plusieurs délais, évolutifs pour d'autres instruments de négociation très liquides.

Risques stratégiques

  1. Sensibilité aux paramètres: la performance de la stratégie est sensible à la sélection des paramètres, ce qui nécessite un backtesting approfondi.
  2. Dépendance de l'environnement du marché: peut entraîner des transactions fréquentes sur des marchés à plage avec des tendances faibles.
  3. Décalage du signal: les calculs des moyennes mobiles peuvent introduire un décalage affectant le moment de l'entrée.
  4. Risque de liquidité: les opérations à haute fréquence peuvent faire l'objet de pertes par glissement pendant les périodes de faible liquidité.

Directions d'optimisation de la stratégie

  1. Ajustement dynamique des paramètres: mettre en place des mécanismes adaptatifs permettant d'ajuster dynamiquement les seuils et les positions stop-loss en fonction de la volatilité du marché.
  2. Confirmation de signaux multiples: ajouter d'autres indicateurs techniques comme conditions de filtrage pour améliorer la fiabilité du signal.
  3. Optimisation de la gestion des positions: concevoir un système de gestion dynamique des positions basé sur la volatilité et la force du signal.
  4. Contrôle des coûts de transaction: optimiser la logique d'entrée et de sortie pour réduire les coûts liés aux transactions fréquentes.

Résumé

Il s'agit d'une stratégie de trading quantitative bien structurée et logiquement rigoureuse. Elle construit un système de signaux de trading robuste grâce à une combinaison linéaire et un traitement de normalisation. La stratégie offre une forte configuration et une gestion complète des risques, mais nécessite une attention à l'optimisation des paramètres et à l'adaptabilité du marché.


/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Linear Signal-Based Strategy", shorttitle = "LSB_V1", overlay=true)

// Inputs
lookback_period = input.int(14, title="Lookback Period for Moving Averages")
signal_alpha = input.float(0.5, title="Signal Weight Alpha (Exogenous Variable)")
take_profit_percent = input.float(0.02, title="Take Profit (%)")
stop_loss_percent = input.float(0.01, title="Stop Loss (%)")
risk_adjustment_factor = input.float(1.5, title="Risk Adjustment Factor")

// Fetch Exogenous Variable (Example: RSI as a Proxy)
rsi_value = ta.rsi(close, lookback_period)

// Linear Signal Calculation
linear_signal = signal_alpha * rsi_value + (1 - signal_alpha) * close

// Z-Score Normalization for Signal
mean_signal = ta.sma(linear_signal, lookback_period)
stddev_signal = ta.stdev(linear_signal, lookback_period)
z_score_signal = (linear_signal - mean_signal) / stddev_signal

// Entry Conditions
long_condition = z_score_signal < -risk_adjustment_factor
short_condition = z_score_signal > risk_adjustment_factor

// Risk Management
long_take_profit = close * (1 + take_profit_percent)
long_stop_loss = close * (1 - stop_loss_percent)
short_take_profit = close * (1 - take_profit_percent)
short_stop_loss = close * (1 + stop_loss_percent)

// Execute Trades
if (long_condition)
    strategy.entry("Long", strategy.long, qty=1)
    strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)

if (short_condition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)




Relationnée

Plus de