Sygnały transakcyjne

Financial Trading w Pythonie

Chelsea Yang

Data Science Instructor

Czym są sygnały transakcyjne?

  • Wyzwalają zajęcie długiej lub krótkiej pozycji na aktywach finansowych na podstawie ustalonych kryteriów
  • Mogą być tworzone na podstawie:

    • Jednego wskaźnika technicznego
    • Wielu wskaźników technicznych
    • Kombinacji danych rynkowych i wskaźników
  • Powszechnie stosowane w handlu algorytmicznym

Financial Trading w Pythonie

Przykład sygnału

  • Sygnał: Cena > SMA (pozycja długa, gdy cena przekroczy SMA)

Wykres sygnału sugerującego momenty wejścia w transakcję.

Financial Trading w Pythonie

Implementacja sygnałów w bt

  1. Pobierz dane i oblicz wskaźniki
  2. Zdefiniuj strategię opartą na sygnałach
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. Utwórz i uruchom backtest
  4. Przeanalizuj wyniki backtestingu
Financial Trading w Pythonie

Konstruowanie sygnału

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

Alternatywnie, użyj talib do obliczenia wskaźnika:

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Financial Trading w Pythonie

Definiowanie strategii opartej na sygnałach

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • Dla uproszczenia zakładamy:
    • Handel jednym aktywem w danym momencie
    • Brak poślizgu cenowego i prowizji
      • Poślizg cenowy: różnica między oczekiwaną a rzeczywistą ceną realizacji transakcji
      • Prowizja: opłaty pobierane przez brokerów za realizację transakcji
Financial Trading w Pythonie

Testowanie strategii opartej na sygnałach

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Financial Trading w Pythonie

Wizualizacja wyników backtestingu

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

Wykres wyników backtestingu

Financial Trading w Pythonie

Czas na ćwiczenia!

Financial Trading w Pythonie

Preparing Video For Download...