Trading signals

Trading finanziario con Python

Chelsea Yang

Data Science Instructor

Cosa sono i trading signal?

  • Trigger per andare long o short su asset finanziari in base a criteri predefiniti
  • Si possono costruire con:

    • Un indicatore tecnico
    • Più indicatori tecnici
    • Una combinazione di dati di mercato e indicatori
  • Usati spesso nel trading algoritmico

Trading finanziario con Python

Un esempio di segnale

  • Segnale: Price > SMA (long quando il prezzo supera la SMA)

Un grafico di un segnale che suggerisce ingressi a mercato.

Trading finanziario con Python

Come implementare i segnali in bt

  1. Ottieni i dati e calcola gli indicatori
  2. Definisci la strategia basata sul segnale
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. Crea ed esegui un backtest
  4. Esamina il risultato del backtest
Trading finanziario con Python

Costruire il segnale

# 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()

In alternativa, usa talib per calcolare l'indicatore:

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Trading finanziario con Python

Definire una strategia basata su segnali

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • Per semplicità, assumiamo:
    • Si negozia un solo asset alla volta
    • Nessun slippage o commissioni
      • Slippage: differenza tra il prezzo atteso di un trade e il prezzo di esecuzione
      • Commissione: costo applicato dai broker all'esecuzione di un trade
Trading finanziario con Python

Backtest della strategia basata su segnali

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Trading finanziario con Python

Grafica il risultato del backtest

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

Grafico del risultato del backtest

Trading finanziario con Python

Esercitiamoci!

Trading finanziario con Python

Preparing Video For Download...