Beispiel #1
0
def dividends_validation(ticker: str) -> pd.DataFrame:
    """Проверяет корректности данных о дивидендах для тикера.

    Запускает принудительное обновление, сравнивает основные данные по дивидендам с альтернативными
    источниками и распечатывает результаты.
    """
    bootstrap.BUS.handle_event(events.UpdateDivCommand(ticker))

    df_local = div.dividends(ticker)
    df_local.columns = ["LOCAL"]

    div_ex = div.div_ext(ticker)

    df_comp = _compare(div_ex.iloc[:, -1:], df_local)
    df_comp = pd.concat(
        [div_ex.iloc[:, :-1], df_comp],
        axis=1,
    )

    first_quote = not_div.quotes((ticker, ))[0].index[0]
    df_comp = df_comp.loc[first_quote:]

    comp_str = f"\nСравнение интернет источников с локальными данными - {ticker}\n\n{df_comp}"
    LOGGER.info(comp_str)  # noqa: WPS421

    return df_comp
Beispiel #2
0
def test_div_ext():
    """Информации о внешних дивидендах содержит медианное значение и корректно обрезается.

    Перед тестом подается команда загрузки, так как данные могут отсутствовать.
    """
    command = events.UpdateDivCommand("AKRN")
    bootstrap.BUS.handle_event(command)

    df = div.div_ext("AKRN")

    assert df.columns.tolist()[-1] == "MEDIAN"
    assert df.index[0] >= bootstrap.START_DATE
    assert df.loc["2015-06-02", "MEDIAN"] == pytest.approx(139)
    assert df.loc["2020-06-09", "MEDIAN"] == pytest.approx(275)