def get_stats_from_strategy(strategy_type, train_ts, test_ts, commission_fee, compound, rf, periods): """Calculate backtesting statistics for a specific strategy. Args: strategy_type: A specific strategy. train_ts: Train data time series. test_ts: Test data time series. commission_fee: A number represents the commission fee. compound: A bool variable indicating whehter calculates compound return or not. rf: Risk free rate. periods: Scaling parameter to calculate annualized sharpe ratio. Returns: A summary statistics. """ if strategy_type == 'corpus': strat = strats[strategy_type](train_ts, n) else: strat = strats[strategy_type]() strat.get_vectorized_signals(test_ts) # accept signal and produce position port = EqualWeightPort() port.get_position(strat.signals.iloc[(n - 1):]) # backtest bt = Backtest(test_ts[port.positions.index], port.positions) stats = bt.output_summary_stats(rf=rf, periods=periods, compound=compound, commission_fee=commission_fee) return stats
Created on Mon Apr 23 16:46:25 2018 @author: rl17174 """ import os os.chdir('/Users/sunrukawa/Desktop/python/qishi_qr/bin/') from strategy import CorpusStrategy from data import OHLCData from portfolio import EqualWeightPort from backtest import Backtest n = 6 # process data OHLC = OHLCData() data_dir = '../data/OHLC data/000001.SS.csv' OHLC.read(data_dir) price_ts = OHLC.get_clean_price_ts('Adj Close') train_ts = price_ts['1995':'2004'] test_ts = price_ts['2005':'2013'] # create strategy strat = CorpusStrategy(train_ts, n) strat.get_vectorized_signal(test_ts) # accept signal and produce position port = EqualWeightPort() port.get_position(strat.signals.iloc[(n - 1):]) # backtest my_bt = Backtest(test_ts[port.positions.index], port.positions) stats = my_bt.output_summary_stats(rf=0.02)