Signaux de négociation

Négociation financière en Python

Chelsea Yang

Data Science Instructor

Qu'est-ce qu'un signal de négociation ?

  • Déclencheurs pour prendre des positions longues ou courtes selon des critères prédéfinis
  • Peuvent être construits avec :

    • Un indicateur technique
    • Plusieurs indicateurs techniques
    • Un mélange de données de marché et d'indicateurs
  • Couramment utilisés en négociation algorithmique

Négociation financière en Python

Exemple de signal

  • Signal : Price > SMA (long lorsque le prix dépasse la SMA)

Un tracé d'un signal suggérant des entrées en transaction.

Négociation financière en Python

Comment implémenter des signaux dans bt

  1. Obtenir les données et calculer les indicateurs
  2. Définir la stratégie basée sur le signal
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. Créer et exécuter un test rétrospectif
  4. Examiner le résultat du test
Négociation financière en Python

Construire le signal

# Get price data by the stock ticker
price_data = bt.get('aapl', start='2019-11-1', end='2020-12-1')
# Calculate SMA
sma = price_data.rolling(20).mean()

Sinon, utilisez talib pour calculer l'indicateur :

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Négociation financière en Python

Définir une stratégie basée sur un signal

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • Pour simplifier, on suppose :
    • Négocier un seul actif à la fois
    • Aucune déperdition ni commission
      • Déperdition : écart entre le prix attendu et le prix réel d'exécution d'une transaction
      • Commission : frais facturés par les courtiers lors de l'exécution d'une transaction
Négociation financière en Python

Tester la stratégie basée sur un signal

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Négociation financière en Python

Tracer le résultat du test rétrospectif

# Plot the backtest result
bt_result.plot(title='Backtest result')

Tracé du résultat du test rétrospectif

Négociation financière en Python

Passons à la pratique !

Négociation financière en Python

Preparing Video For Download...