def setUp(self): tickers = [BloombergTicker("AAPL US Equity")] all_fields = PriceField.ohlcv() self._mocked_prices_arr = self._make_mock_data_array( tickers, all_fields) self._price_provider_mock = PresetDataProvider(self._mocked_prices_arr, self.data_start_date, self.data_end_date, self.frequency) risk_estimation_factor = 0.05 data_handler = Mock() data_handler.get_last_available_price.return_value = None alpha_model = self.DummyAlphaModel(risk_estimation_factor, data_handler) ts = self._test_trading_session_init() # Mock the backtest result in order to be able to compare transactions self.transactions = [] ts.monitor.record_transaction.side_effect = lambda transaction: self.transactions.append( transaction) self.portfolio = ts.portfolio AlphaModelStrategy(ts, {alpha_model: tickers}, use_stop_losses=True) ts.start_trading()
def setUp(self): all_fields = PriceField.ohlcv() self._mocked_prices_arr = self._make_mock_data_array(self.tickers, all_fields) self._price_provider_mock = PresetDataProvider(self._mocked_prices_arr, self.data_start_date, self.data_end_date, self.frequency) self.timer = SettableTimer() self.alpha_model_type = DummyAlphaModel
def _get_demo_data_provider(frequency: Frequency): frequency_to_data_file = { Frequency.MIN_1: "intraday_data.csv", Frequency.DAILY: "daily_data.csv" } input_file = join(get_starting_dir_abs_path(), "input", frequency_to_data_file[frequency]) data, start_date, end_date = _acquire_data(input_file) return PresetDataProvider(data, start_date, end_date, frequency)
def _get_demo_data_provider(frequency: Frequency): frequency_to_data_file = { Frequency.MIN_1: "intraday_data.csv", Frequency.DAILY: "daily_data.csv" } input_file = join( pathlib.Path(__file__).parent.absolute(), "input", frequency_to_data_file[frequency]) data, start_date, end_date = _acquire_data(input_file) return PresetDataProvider(data, start_date, end_date, frequency)
def _setup_data_handler(self, volume_value: Optional[float]) -> DataHandler: dates = pd.date_range(str_to_date("2019-12-01"), str_to_date("2020-01-30"), freq='D') prices_data_frame = QFDataFrame(data={PriceField.Volume: [volume_value] * len(dates)}, index=dates) prices_data_array = tickers_dict_to_data_array({ self.ticker: prices_data_frame, }, [self.ticker], [PriceField.Volume]) data_provider = PresetDataProvider(prices_data_array, dates[0], dates[-1], Frequency.DAILY) timer = SettableTimer(dates[-1]) return DailyDataHandler(data_provider, timer)
def setUp(self): all_fields = PriceField.ohlcv() self._mocked_prices_arr = self._make_mock_data_array( self.tickers, all_fields) self._price_provider_mock = PresetDataProvider(self._mocked_prices_arr, self.data_start_date, self.end_date) risk_estimation_factor = 0.05 self.alpha_model = DummyAlphaModel(risk_estimation_factor) self.ts = self._test_trading_session_init() model_tickers_dict = {self.alpha_model: self.tickers} AlphaModelStrategy(self.ts, model_tickers_dict, use_stop_losses=True) self.ts.start_trading()
def _mock_data_provider(self): dates_index = pd.bdate_range(start=self.prices_start_date, end=self.test_end_date) fields_number = len(self.fields) tickers = [ BloombergTicker("MSFT US Equity"), BloombergTicker("AUDUSD Curncy"), BloombergTicker( "HOZ9 Comdty"), # Mock three contracts for Heating Oil BloombergTicker("HOF0 Comdty"), BloombergTicker("HOG0 Comdty"), ] # Mock price data array values = [ [ # 02-01-2020 # MSFT US Equity, AUDUSD Curncy, Heating Oil (3 contracts) prices [90], [90], [90], [90], [90] ], [ # 03-01-2020 [95], [95], [85], [100], [85] ], [ # 06-01-2020 [110], [100], [90], [100], [90] # The Heating Oil contract will create an open position ], [ # 07-01-2020 [90], [110], [95], [np.nan], [ 95 ] # Rolling for Heating Oil occurs, new Heating Oil contract is bought ], [ # 08-01-2020 [80], [120], [100], [100], [ 100 ] # Previous Heating Oil is sold (there was no price on the 7th) ], [ # 09-01-2020 [80], [120], [100], [100], [100] ], ] # Open, High, Low and Close prices are equal every day values = [[price * fields_number for price in day_prices] for day_prices in values] mocked_prices = QFDataArray.create(dates_index, tickers, self.fields, data=values) # Mock expiration dates exp_dates = { BloombergFutureTicker("Heating Oil", "HO{} Comdty", 1, 1, 100): QFDataFrame(data={ ExpirationDateField.FirstNotice: [ str_to_date("2019-12-01"), str_to_date("2020-01-07"), str_to_date("2020-02-03") ], ExpirationDateField.LastTradeableDate: [ str_to_date("2019-12-01"), str_to_date("2020-01-07"), str_to_date("2020-02-03") ], }, index=[ BloombergTicker("HOZ9 Comdty"), BloombergTicker("HOF0 Comdty"), BloombergTicker("HOG0 Comdty") ]) } return PresetDataProvider(data=mocked_prices, exp_dates=exp_dates, start_date=str_to_date("2019-12-01"), end_date=self.test_end_date, frequency=self.frequency)