def run_strategy(data_provider: DataProvider) -> Tuple[float, str]: """ Returns the strategy end result and checksum of the preloaded data. """ start_date = str_to_date("2017-01-01") end_date = str_to_date("2018-01-01") settings = get_test_settings() session_builder = BacktestTradingSessionBuilder(data_provider, settings, PDFExporter(settings), ExcelExporter(settings)) session_builder.set_backtest_name('SPY w. stop ' + str(SpxWithStopLoss.percentage)) session_builder.set_initial_cash(1000000) session_builder.set_frequency(Frequency.DAILY) session_builder.set_commission_model(IBCommissionModel) session_builder.set_data_provider(data_provider) session_builder.set_monitor_settings(BacktestMonitorSettings.no_stats()) ts = session_builder.build(start_date, end_date) ts.use_data_preloading(SpxWithStopLoss.ticker, RelativeDelta(days=40)) SpxWithStopLoss(ts) ts.start_trading() data_checksum = ts.get_preloaded_data_checksum() actual_end_value = ts.portfolio.portfolio_eod_series()[-1] return actual_end_value, data_checksum
def setUp(self) -> None: settings = get_test_settings() self.data_provider = BloombergDataProvider(settings) self.data_provider.connect() if not self.data_provider.connected: raise self.skipTest("No Bloomberg connection")
def setUp(self): dates = DatetimeIndex(start='2014-01-01', freq='d', periods=10) returns = np.arange(0, 1, 0.1) self.test_series = QFSeries(index=dates, data=returns) reversed_returns = returns[::-1] self.test_series_reversed = QFSeries(index=dates, data=reversed_returns) self.test_data_frame = concat( [self.test_series, self.test_series_reversed], axis=1, join='inner') settings = get_test_settings() self.xl_exporter = ExcelExporter(settings=settings)
def run_strategy(data_provider: DataProvider) -> Tuple[float, str]: """ Returns the strategy end result and checksum of the preloaded data. """ model_tickers = [BloombergFutureTicker("Corn", "C {} Comdty", 1, 10, 1)] start_date = str_to_date('2003-05-30') end_date = str_to_date('2009-01-01') initial_risk = 0.006 # ----- build trading session ----- # settings = get_test_settings() session_builder = BacktestTradingSessionBuilder(data_provider, settings, PDFExporter(settings), ExcelExporter(settings)) session_builder.set_backtest_name('Simple Futures Strategy') session_builder.set_position_sizer(InitialRiskPositionSizer, initial_risk=initial_risk) session_builder.set_frequency(Frequency.DAILY) session_builder.set_data_provider(data_provider) session_builder.set_monitor_settings(BacktestMonitorSettings.no_stats()) ts = session_builder.build(start_date, end_date) # ----- build models ----- # model = SimpleFuturesModel(fast_time_period=50, slow_time_period=100, risk_estimation_factor=3, data_provider=ts.data_handler) model_tickers_dict = {model: model_tickers} # ----- start trading ----- # strategy = AlphaModelStrategy(ts, model_tickers_dict, use_stop_losses=False) OnBeforeMarketOpenSignalGeneration(strategy) ts.use_data_preloading(model_tickers) ts.start_trading() data_checksum = ts.get_preloaded_data_checksum() actual_end_value = ts.portfolio.portfolio_eod_series()[-1] return actual_end_value, data_checksum
import pandas as pd from qf_lib.common.enums.frequency import Frequency from qf_lib.common.enums.price_field import PriceField from qf_lib.common.enums.quandl_db_type import QuandlDBType from qf_lib.common.tickers.tickers import QuandlTicker from qf_lib.common.utils.dateutils.string_to_date import str_to_date from qf_lib.containers.dataframe.prices_dataframe import PricesDataFrame from qf_lib.containers.dataframe.qf_dataframe import QFDataFrame from qf_lib.containers.qf_data_array import QFDataArray from qf_lib.containers.series.prices_series import PricesSeries from qf_lib.containers.series.qf_series import QFSeries from qf_lib.data_providers.quandl.quandl_data_provider import QuandlDataProvider from qf_lib_tests.unit_tests.config.test_settings import get_test_settings settings = get_test_settings() @unittest.skipIf( not hasattr(settings, "quandl_key"), "`quandl_key` property was not found in the settings.\n" "Set it using `QUANTFIN_SECRET` environment variable. Sample value of the env. variable: \n" "{\"quandl_key\": \"zW14dr45trz4up4d4juZ\"}\n" "To get the key, register an account at https://www.quandl.com") class TestQuandlTable(unittest.TestCase): START_DATE = str_to_date('2014-01-01') END_DATE = str_to_date('2015-02-02') SINGLE_FIELD = 'adj_close' MANY_FIELDS = ['adj_low', 'adj_volume', 'adj_close'] db_name = 'WIKI/PRICES' type = QuandlDBType.Table
def setUp(self): self.timer = SettableTimer(initial_time=str_to_date('2017-01-01')) settings = get_test_settings() self.bbg_provider = BloombergDataProvider(settings)