Obchodní signály

Finanční obchodování v Pythonu

Chelsea Yang

Data Science Instructor

Co jsou obchodní signály?

  • Impulzy k nákupu nebo prodeji aktiv na základě předem definovaných kritérií
  • Lze sestavit z:

    • Jednoho technického indikátoru
    • Více technických indikátorů
    • Kombinace tržních dat a indikátorů
  • Běžně využívány v algoritmickém obchodování

Finanční obchodování v Pythonu

Příklad signálu

  • Signál: Cena > SMA (nákup, když cena překročí SMA)

Graf signálu navrhujícího vstup do obchodu.

Finanční obchodování v Pythonu

Implementace signálů v bt

  1. Získání dat a výpočet indikátorů
  2. Definování strategie založené na signálech
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. Vytvoření a spuštění zpětného testu
  4. Vyhodnocení výsledku zpětného testu
Finanční obchodování v Pythonu

Sestavení signálu

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

Alternativně lze indikátor vypočítat pomocí talib:

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Finanční obchodování v Pythonu

Definování strategie založené na signálech

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • Pro zjednodušení předpokládáme:
    • Obchodování jednoho aktiva najednou
    • Žádný skluz ani poplatky
      • Skluz: rozdíl mezi očekávanou cenou obchodu a skutečnou cenou provedení
      • Poplatek: provize účtovaná brokerem za provedení obchodu
Finanční obchodování v Pythonu

Zpětné testování strategie založené na signálech

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Finanční obchodování v Pythonu

Vizualizace výsledku zpětného testu

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

Graf výsledku zpětného testu

Finanční obchodování v Pythonu

Lass uns üben!

Finanční obchodování v Pythonu

Preparing Video For Download...