Semnale de tranzacționare

Tranzacționare financiară în Python

Chelsea Yang

Data Science Instructor

Ce sunt semnalele de tranzacționare?

  • Declanșatori pentru poziții long sau short pe active financiare, pe baza unor criterii predefinite
  • Pot fi construite folosind:

    • Un singur indicator tehnic
    • Mai mulți indicatori tehnici
    • O combinație de date de piață și indicatori
  • Utilizate frecvent în tranzacționarea algoritmică

Tranzacționare financiară în Python

Exemplu de semnal

  • Semnal: Preț > SMA (poziție long când prețul depășește SMA)

Grafic al unui semnal care sugerează intrări în tranzacții.

Tranzacționare financiară în Python

Implementarea semnalelor în bt

  1. Obținerea datelor și calcularea indicatorilor
  2. Definirea strategiei bazate pe semnal
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. Crearea și rularea testării retrospective
  4. Analiza rezultatelor testării retrospective
Tranzacționare financiară în Python

Construirea semnalului

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

Alternativ, utilizați talib pentru a calcula indicatorul:

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Tranzacționare financiară în Python

Definirea unei strategii bazate pe semnal

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • Pentru simplitate, se presupune:
    • Tranzacționarea unui singur activ la un moment dat
    • Fără slipaj sau comisioane
      • Slipaj: diferența dintre prețul așteptat al unei tranzacții și prețul la care aceasta este executată
      • Comision: taxe percepute de brokeri la executarea unei tranzacții
Tranzacționare financiară în Python

Testarea retrospectivă a strategiei bazate pe semnal

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Tranzacționare financiară în Python

Vizualizarea rezultatului testării retrospective

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

Graficul rezultatului testării retrospective

Tranzacționare financiară în Python

Să exersăm!

Tranzacționare financiară în Python

Preparing Video For Download...