Ejemplo n.º 1
0
    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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    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()
Ejemplo n.º 7
0
    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)