def test_prices(date, ticker, price): """Тесты на тип и размер результата и для выборочных значений и заполнение пропусков.""" df = quotes.prices(("AKRN", "GMKN", "MSTT"), pd.Timestamp("2020-10-09")) assert isinstance(df, pd.DataFrame) assert len(df) > 1452 assert df.shape[1] == 3 assert df.index[-1] == pd.Timestamp("2020-10-09") assert df.loc[date, ticker] == pytest.approx(price)
def __init__(self, ticker: str, params: DataParams): super().__init__(ticker, params) p_low = quotes.prices(params.tickers, params.end, col.LOW)[ticker] price = params.price(ticker) p_low = p_low.reindex( price.index, method="ffill", axis=0, ) self.low = torch.tensor(p_low.values, dtype=torch.float, device=DEVICE) self.price = torch.tensor(params.price(ticker).values, dtype=torch.float, device=DEVICE) self.history_days = params.history_days
def price(self) -> pd.Series: """Цены позиций. CASH - 1 и PORTFOLIO - расчетная стоимость. """ price = quotes.prices(tuple(self.index[:-2]), self.date) try: price = price.iloc[-1] except KeyError: raise config.POptimizerError( f"Для даты {self._date.date()} отсутствуют исторические " f"котировки") price[CASH] = 1 price[PORTFOLIO] = (self.shares[:-1] * price).sum(axis=0) price.name = "PRICE" return price
def test_t2_shift(date, t2): """Различные варианты сдвига около выходных.""" index = quotes.prices(("NLMK", "GMKN"), pd.Timestamp("2018-10-08")).index assert quotes._t2_shift(pd.Timestamp(date), index) == pd.Timestamp(t2)