def index( ticker: str = "MCFTRR", viewer: viewers.Viewer = bootstrap.VIEWER, ) -> pd.Series: """Загрузка данных по индексу полной доходности с учетом российских налогов - MCFTRR.""" df = viewer.get_df(ports.INDEX, ticker) return df.loc[bootstrap.START_DATE :, col.CLOSE] # type: ignore
def div_ext( ticker: str, viewer: viewers.Viewer = bootstrap.VIEWER, ) -> pd.DataFrame: """Сводная информация из внешних источников по дивидендам.""" df = viewer.get_df(ports.DIV_EXT, ticker) return df.loc[bootstrap.START_DATE:] # type: ignore
def dividends( ticker: str, viewer: viewers.Viewer = bootstrap.VIEWER, ) -> pd.DataFrame: """Дивиденды для данного тикера.""" df = viewer.get_df(ports.DIVIDENDS, ticker) return df.loc[bootstrap.START_DATE:] # type: ignore
def quotes( tickers: tuple[str, ...], viewer: viewers.Viewer = bootstrap.VIEWER, ) -> list[pd.DataFrame]: """Информация о котировках для заданных тикеров.""" dfs = viewer.get_dfs(ports.QUOTES, tickers) start_date = bootstrap.START_DATE return [df.loc[start_date:] for df in dfs] # type: ignore
def dividends_all( tickers: Tuple[str, ...], viewer: viewers.Viewer = bootstrap.VIEWER, ) -> pd.DataFrame: """Дивиденды по заданным тикерам после уплаты налогов. Значения для дат, в которые нет дивидендов у данного тикера (есть у какого-то другого), заполняются 0. """ dfs = viewer.get_dfs(ports.DIVIDENDS, tickers) dfs = [df.loc[bootstrap.START_DATE:] for df in dfs] # type: ignore df = pd.concat(dfs, axis=1) df = df.reindex(columns=tickers) df = df.fillna(0, axis=0) return df.mul(bootstrap.AFTER_TAX)
def _securities_info( viewer: viewers.Viewer = bootstrap.VIEWER) -> pd.DataFrame: """Сводная информация о торгуемых бумагах - кэшируется при первом вызове.""" return viewer.get_df(ports.SECURITIES, ports.SECURITIES)
def last_history_date( viewer: viewers.Viewer = bootstrap.VIEWER) -> pd.Timestamp: """Последняя доступная дата исторических котировок.""" df = viewer.get_df(ports.TRADING_DATES, ports.TRADING_DATES) return df.loc[0, "till"]
def cpi(viewer: viewers.Viewer = bootstrap.VIEWER) -> pd.Series: """Потребительская инфляция.""" df = viewer.get_df(ports.CPI, ports.CPI) return df.loc[bootstrap.START_DATE :, col.CPI] # type: ignore
def usd(viewer: viewers.Viewer = bootstrap.VIEWER) -> pd.Series: """Курс доллара.""" df = viewer.get_df(ports.USD, ports.USD) return df.loc[bootstrap.START_DATE :, col.CLOSE] # type: ignore
def _new_div_all(viewer: viewers.Viewer = bootstrap.VIEWER) -> pd.DataFrame: """Информация по дивидендам с smart-lab.ru.""" raw_data = viewer.get_df(ports.DIV_NEW, ports.DIV_NEW) indexed = raw_data.set_index(col.DATE, append=True) grouped = indexed.groupby(level=[0, 1]).sum(min_count=1) return grouped.reset_index(level=1)
def _new_div_all(viewer: viewers.Viewer = bootstrap.VIEWER) -> pd.DataFrame: """Информация по дивидендам с smart-lab.ru.""" return viewer.get_df(ports.DIV_NEW, ports.DIV_NEW)