전략 최적화와 벤치마킹

Python으로 배우는 금융 트레이딩

Chelsea Yang

Data Science Instructor

입력 매개변수 값은 어떻게 정합니까?

  • 질문:

    • 신호 "Price > SMA"에 적합한 SMA 조회 기간은 무엇입니까?
  • 해법: 전략 최적화

    • 백테스트에서 다양한 입력 값을 시도하고 결과를 비교합니다.
Python으로 배우는 금융 트레이딩

전략 최적화 예시

def signal_strategy(ticker, period, name, start='2018-4-1', end='2020-11-1'):

# Get the data and calculate SMA price_data = bt.get(ticker, start=start, end=end) sma = price_data.rolling(period).mean()
# Define the signal-based strategy bt_strategy = bt.Strategy(name, [bt.algos.SelectWhere(price_data>sma), bt.algos.WeighEqually(), bt.algos.Rebalance()])
# Return the backtest return bt.Backtest(bt_strategy, price_data)
1 www.datacamp.com/courses/writing-functions-in-python
Python으로 배우는 금융 트레이딩

전략 최적화 예시

ticker = 'aapl'
sma20 = signal_strategy(ticker, 
                        period=20, name='SMA20')
sma50 = signal_strategy(ticker, 
                        period=50, name='SMA50')
sma100 = signal_strategy(ticker, 
                        period=100, name='SMA100')

# Run backtests and compare results bt_results = bt.run(sma20, sma50, sma100) bt_results.plot(title='Strategy optimization')

최적화 결과 그래프

Python으로 배우는 금융 트레이딩

벤치마크란?

전략을 비교·평가하는 기준 또는 참조점.

  • 예:
    • 신호로 적극적으로 주식을 거래하는 전략은 수동적 매수-보유 전략을 벤치마크로 사용할 수 있습니다.
    • S&P 500 지수는 주식의 대표적 벤치마크입니다.
    • 미국 국채는 채권의 위험과 수익을 측정하는 데 사용됩니다.
Python으로 배우는 금융 트레이딩

벤치마킹 예시

def buy_and_hold(ticker, name, start='2018-11-1', end='2020-12-1'):

# Get the data price_data = bt.get(ticker, start=start_date, end=end_date)
# Define the benchmark strategy bt_strategy = bt.Strategy(name, [bt.algos.RunOnce(), bt.algos.SelectAll(), bt.algos.WeighEqually(), bt.algos.Rebalance()])
# Return the backtest return bt.Backtest(bt_strategy, price_data)
Python으로 배우는 금융 트레이딩

벤치마킹 예시

benchmark = buy_and_hold(ticker, name='benchmark')

# Run all backtests and plot the resutls bt_results = bt.run(sma20, sma50, sma100, benchmark) bt_results.plot(title='Strategy benchmarking')

벤치마킹 결과

Python으로 배우는 금융 트레이딩

Let's practice!

Python으로 배우는 금융 트레이딩

Preparing Video For Download...