Sinais de trading

Negociação Financeira em Python

Chelsea Yang

Data Science Instructor

O que são sinais de trading?

  • Gatilhos para operar comprado ou vendido com base em critérios pré-definidos
  • Podem ser construídos com:

    • Um indicador técnico
    • Vários indicadores técnicos
    • Combinação de dados de mercado e indicadores
  • Usados com frequência em trading algorítmico

Negociação Financeira em Python

Um exemplo de sinal

  • Sinal: Preço > SMA (comprar quando o preço supera a SMA)

Um gráfico de um sinal que sugere entradas de trade.

Negociação Financeira em Python

Como implementar sinais no bt

  1. Obter os dados e calcular indicadores
  2. Definir a estratégia baseada em sinal
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. Criar e executar um backtest
  4. Revisar o resultado do backtest
Negociação Financeira em Python

Construir o sinal

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

Como alternativa, use talib para calcular o indicador:

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Negociação Financeira em Python

Definir uma estratégia baseada em sinal

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • Para simplificar, vamos assumir:
    • Operar um ativo por vez
    • Sem slippage ou corretagens
      • Slippage: diferença entre o preço esperado e o preço efetivo da execução
      • Corretagem: taxas cobradas pelas corretoras na execução
Negociação Financeira em Python

Fazer backtest da estratégia baseada em sinal

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Negociação Financeira em Python

Plotar o resultado do backtest

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

Gráfico do resultado do backtest

Negociação Financeira em Python

Vamos praticar!

Negociação Financeira em Python

Preparing Video For Download...