示例#1
0
 def test_get_indexer_out_of_bounds_date(self, target, positions):
     values = DatetimeIndex(
         [Timestamp("2020-01-01"),
          Timestamp("2020-01-02")])
     result = values.get_indexer(target)
     expected = np.array(positions, dtype=np.intp)
     tm.assert_numpy_array_equal(result, expected)
示例#2
0
 def test_get_indexer_mixed_dtypes(self, target):
     # https://github.com/pandas-dev/pandas/issues/33741
     values = DatetimeIndex(
         [Timestamp("2020-01-01"),
          Timestamp("2020-01-02")])
     result = values.get_indexer(target)
     expected = np.array([0, 1], dtype=np.intp)
     tm.assert_numpy_array_equal(result, expected)
示例#3
0
def _t2_shift(date: pd.Timestamp, index: pd.DatetimeIndex) -> pd.Timestamp:
    """Рассчитывает эксдивидендную дату для режима T-2 на основании даты закрытия реестра.

    Если дата не содержится в индексе цен, то необходимо найти предыдущую из индекса цен. После этого
    взять сдвинутую на 1 назад дату.

    Если дата находится в будущем за пределом истории котировок, то нужно сдвинуть на 1 бизнес день
    вперед и на два назад. Это не эквивалентно сдвигу на один день назад для выходных.
    """
    if date <= index[-1]:
        position = index.get_indexer([date], "ffill", limit=1)[0]

        return index[position - 1]

    next_b_day = date + offsets.BDay()

    return next_b_day - 2 * offsets.BDay()