Ejemplo n.º 1
0
def prices(
    tickers: tuple[str, ...],
    last_date: pd.Timestamp,
    price_type: col.PriceType = col.CLOSE,
) -> pd.DataFrame:
    """Дневные цены закрытия для указанных тикеров до указанной даты включительно.

    Пропуски заполнены предыдущими значениями.

    :param tickers:
        Тикеры, для которых нужна информация.
    :param last_date:
        Последняя дата цен закрытия.
    :param price_type:
        Тип цены — по умолчанию цена закрытия.
    :return:
        Цены закрытия.
    """
    quotes_list = not_div.quotes(tickers)
    df = pd.concat(
        [df[price_type] for df in quotes_list],
        axis=1,
    )
    df = df.loc[:last_date]
    df.columns = tickers
    return df.replace(to_replace=[np.nan, 0], method="ffill")
Ejemplo n.º 2
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
Ejemplo n.º 3
0
def all_prices(tickers: tuple[str, ...], price_type: col.PriceType = col.CLOSE) -> pd.DataFrame:
    """Все цены определенного типа для набора тикеров."""
    quotes_list = not_div.quotes(tickers)

    return pd.concat(
        [df[price_type] for df in quotes_list],
        axis=1,
    )
Ejemplo n.º 4
0
def turnovers(tickers: tuple[str, ...], last_date: pd.Timestamp) -> pd.DataFrame:
    """Дневные обороты для указанных тикеров до указанной даты включительно.

    Пропуски заполнены нулевыми значениями.

    :param tickers:
        Тикеры, для которых нужна информация.
    :param last_date:
        Последняя дата оборотов.
    :return:
        Обороты.
    """
    quotes_list = not_div.quotes(tickers)
    df = pd.concat(
        [df[col.TURNOVER] for df in quotes_list],
        axis=1,
    )
    df = df.loc[:last_date]
    df.columns = tickers
    return df.fillna(0, axis=0)