pys.data_collection package

Subpackages

Submodules

pys.data_collection.bonds_kbd_pipeline module

pys.data_collection.bonds_kbd_pipeline.create_combined_report(bond_results, kbd_results, reports_dir, run_id=None)

Создать комбинированный отчет по результатам анализа с информацией об адаптации параметров

Parameters:
  • bond_results -- результаты выбора облигаций

  • kbd_results -- результаты анализа КБД

  • reports_dir -- директория для сохранения отчета

  • run_id -- идентификатор запуска

Returns:

путь к созданному отчету

Return type:

str

pys.data_collection.bonds_kbd_pipeline.run_bond_selection_with_kbd(base_path='/Users/aeshef/Desktop/FOR3.9TEST/kursach', dataset_path=None, n_bonds=5, min_bonds=3, weighting_strategy=None, portfolio_stability=0.7, use_kbd_recommendations=True, override_params=None, start_date=None, end_date=None, update_kbd_data=True, strategy_profile='balanced', kbd_yield_adjustment=-2.0, kbd_duration_flexibility=1.5, max_adjustment_iterations=3, excluded_issuers=None, output_format='all', kbd_data=None, output_dirs=None)

Полный пайплайн для выбора облигаций с учетом кривой бескупонной доходности.

Parameters:
  • base_path (str) -- базовый путь проекта.

  • dataset_path (str) -- путь к датасету облигаций.

  • n_bonds (int) -- целевое количество облигаций в портфеле.

  • min_bonds (int) -- минимальное количество облигаций для диверсификации.

  • weighting_strategy (str, optional) -- стратегия взвешивания (None для автовыбора на основе КБД).

  • portfolio_stability (float) -- стабильность портфеля (0.0-1.0).

  • use_kbd_recommendations (bool) -- использовать ли рекомендации на основе КБД.

  • override_params (dict) -- словарь для переопределения параметров.

  • start_date (str or datetime, optional) -- начальная дата для КБД (если None, используется год назад).

  • end_date (str or datetime, optional) -- конечная дата для КБД (если None, используется текущая дата).

  • update_kbd_data (bool, optional) -- обновлять ли данные КБД.

  • strategy_profile (str) -- профиль стратегии ('conservative', 'balanced', 'aggressive').

  • kbd_yield_adjustment (float) -- корректировка минимальной доходности (± процентные пункты).

  • kbd_duration_flexibility (float) -- множитель для расширения диапазона дюрации.

  • max_adjustment_iterations (int) -- максимальное число итераций адаптивной настройки.

  • excluded_issuers (list, optional) -- список исключаемых эмитентов.

  • output_format (str) -- формат выходных данных.

  • kbd_data (DataFrame, optional) -- предварительно загруженные данные КБД.

Returns:

Результаты работы пайплайна.

Return type:

dict

pys.data_collection.bonds_kbd_strategies module

class pys.data_collection.bonds_kbd_strategies.BondStrategy(name)

Bases: ABC, BaseLogger

Абстрактный базовый класс для стратегий выбора облигаций

abstract get_filter_params()

Получить параметры фильтрации облигаций

abstract get_portfolio_params()

Получить параметры формирования портфеля

abstract rank_bonds(bonds_df)

Ранжировать облигации по предпочтительности

class pys.data_collection.bonds_kbd_strategies.KBDRateExpectationStrategy(kbd_analyzer=None, risk_tolerance='medium')

Bases: BondStrategy

Стратегия на основе ожиданий по процентным ставкам, определяемым из кривой бескупонной доходности

get_filter_params()

Получить параметры фильтрации облигаций на основе КБД

get_portfolio_params()

Получить параметры формирования портфеля

rank_bonds(bonds_df)

Ранжировать облигации на основе КБД и толерантности к риску

Parameters:

bonds_df -- DataFrame с облигациями

Returns:

DataFrame с добавленным столбцом стратегического ранга

pys.data_collection.bonds_parser module

class pys.data_collection.bonds_parser.MOEXBondHistoricalParser(use_cache=True, cache_ttl_days=7, verbose=False)

Bases: BaseLogger

Парсер для получения исторических данных по облигациям Московской биржи с возможностью применения различных фильтров.

API_DELAY = 1.2
BASE_DATA_DIR = '/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data/BONDS/moex'
BOARD_GROUPS = [58, 193, 105, 77, 207, 167, 245]
CACHE_DIR = '/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data/BONDS/moex/moex_cache'
analyze_bonds_continuity(start_date, end_date, save_to_csv=True)

Анализирует непрерывность данных по облигациям в заданном периоде

Parameters:
  • start_date -- начало периода

  • end_date -- конец периода

  • save_to_csv -- сохранять ли результаты в CSV

Returns:

Кортеж (полное_пересечение, статистика_по_облигациям)

analyze_continuity_from_consolidated(save_to_csv=True)

Analyzes bond continuity from a consolidated dataset file

Parameters:
  • dataset_path -- Path to the period_data.csv file

  • save_to_csv -- Whether to save results to CSV

Returns:

Tuple of (continuous_bonds, bond_stats)

clear_cache(days_old=None)

Очистить кэш

Parameters:

days_old -- удалить файлы старше указанного количества дней (None = удалить все)

filter_existing_data(date, **filter_params)

Фильтровать существующие данные без обращения к API

Parameters:
  • date -- дата данных для фильтрации

  • **filter_params -- параметры фильтрации

Returns:

Отфильтрованные данные или None, если данные не найдены

find_optimal_threshold(start_date, end_date, min_bonds=20, max_threshold=99)

Находит оптимальный порог непрерывности данных для создания датасета

Parameters:
  • start_date -- начало периода

  • end_date -- конец периода

  • min_bonds -- минимальное количество облигаций, которое должно быть в датасете

  • max_threshold -- максимальный порог непрерывности (в процентах)

Returns:

Оптимальный порог непрерывности (в процентах)

find_optimal_threshold_from_consolidated(min_bonds=20, max_threshold=99)

Find optimal continuity threshold from consolidated dataset

generate_complete_dataset(start_date, end_date, filter_continuous=True)

Генерирует полный датасет для облигаций за указанный период

Parameters:
  • start_date -- начало периода

  • end_date -- конец периода

  • filter_continuous -- использовать только облигации с непрерывными данными

Returns:

DataFrame с полными данными

generate_dataset_with_threshold(start_date, end_date, continuity_threshold=90)

Генерирует датасет с облигациями, имеющими указанный порог непрерывности

Parameters:
  • start_date -- начало периода

  • end_date -- конец периода

  • continuity_threshold -- порог непрерывности (в процентах)

Returns:

DataFrame с данными или None в случае ошибки

get_available_bonds(date=None, yield_range=(0, 100), price_range=(0, 200), duration_range=(0, 360), volume_threshold=2000, bond_volume_threshold=60000, is_qualified_investors=None, coupon_type=None, emitent=None, issue_year_range=None, known_coupon_payments=True, use_existing_data=True, load_all_csv=True)

Получить доступные облигации на указанную дату с применением фильтров

Parameters:
  • date -- дата, на которую нужно получить список облигаций

  • yield_range -- диапазон доходности (%)

  • price_range -- диапазон цены (%)

  • duration_range -- диапазон дюрации (месяцы)

  • volume_threshold -- минимальный объем сделок в день (шт)

  • bond_volume_threshold -- минимальный совокупный объем сделок (шт)

  • is_qualified_investors -- требуется ли квалификация инвестора

  • coupon_type -- тип купона (фиксированный, плавающий и т.д.)

  • emitent -- эмитент облигации

  • issue_year_range -- диапазон годов выпуска

  • known_coupon_payments -- требуется ли наличие всех известных купонных выплат

  • use_existing_data -- использовать существующие CSV-данные если доступны

  • load_all_csv -- загружать ли все облигации в all.csv

Returns:

Список словарей с информацией об облигациях

get_bonds_for_period(start_date, end_date, include_non_trading_days=True, load_all_csv=True, **filter_params)

Получить облигации за указанный период с применением фильтров

Parameters:
  • start_date -- начало периода

  • end_date -- конец периода

  • include_non_trading_days -- включать ли нерабочие дни (выходные и праздники)

  • **filter_params -- параметры фильтрации

Returns:

Словарь с датами и списками облигаций

get_latest_bonds(**filter_params)

Получить актуальные облигации на последний торговый день

Parameters:

**filter_params -- параметры фильтрации (см. get_available_bonds)

Returns:

Список облигаций

parse_interval(start_date=None, end_date=None, include_non_trading_days=True, analyze_continuity=True, load_all_csv=False, clear_previous_loads=False, **filter_params)

Парсить данные за указанный интервал

Parameters:
  • start_date -- начальная дата интервала (по умолчанию 1 января 2024)

  • end_date -- конечная дата интервала (по умолчанию текущий торговый день)

  • include_non_trading_days -- включать ли нерабочие дни

  • analyze_continuity -- выполнять ли анализ непрерывности данных

  • load_all_csv -- загружать ли все облигации в all.csv (по умолчанию False)

  • clear_previous_loads -- удалить предыдущие загрузки (по умолчанию False)

  • **filter_params -- параметры фильтрации

Returns:

Словарь с датами и списками облигаций

pys.data_collection.bonds_parser.run_bond_pipeline(base_path, start_date, end_date=None, force_reparse=False, min_bonds=20, max_threshold=99, **filter_params)

Comprehensive bond analysis pipeline that's resilient to restarts

pys.data_collection.bonds_processor module

class pys.data_collection.bonds_processor.BondsProcessor(bonds_dir='/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data/bonds_csv', direct_data_file=None)

Bases: BaseLogger

calculate_bond_metrics(bonds_df, score_weights=None)

Calculate additional bond metrics

generate_portfolio_analysis(portfolio, output_dir=None)

Generate detailed portfolio analysis and visualizations

get_bonds_for_portfolio(n_bonds=5, weighting_strategy='inverse_duration', portfolio_stability=0.7)

Get top recommended bonds for portfolio inclusion

load_and_process_all_bonds(date_range=None, use_latest_snapshot_only=True, min_yield=6.0, max_yield=None, min_duration=0.1, max_duration=3.0, max_expiration_date=None, min_liquidity=None, excluded_issuers=None, excluded_bonds=None, include_only=None)

Load and process all bond files with filter criteria

load_previous_recommendations()

Load previous bond recommendations if available

process_direct_data(min_yield=6.0, max_yield=22.0, min_duration=0.1, max_duration=5.0, max_expiration_date=None, min_liquidity=None, excluded_issuers=None, excluded_bonds=None, include_only=None, use_latest_snapshot_only=True, score_weights=None)

Обработка данных напрямую из файла датасета

Parameters:
  • min_yield -- минимальная доходность (%)

  • max_yield -- максимальная доходность (%)

  • min_duration -- минимальная дюрация (лет)

  • max_duration -- максимальная дюрация (лет)

  • max_expiration_date -- максимальная дата погашения

  • min_liquidity -- минимальный объем торгов

  • excluded_issuers -- список исключаемых эмитентов

  • excluded_bonds -- список исключаемых кодов облигаций

  • include_only -- список включаемых кодов облигаций

  • use_latest_snapshot_only -- использовать только последний снапшот данных

  • score_weights -- словарь весов для расчета скора облигаций

Returns:

DataFrame с обработанными облигациями или None в случае ошибки

visualize_bond_universe(output_dir=None)

Create visualization of the bond universe

pys.data_collection.bonds_processor.run_pipeline_bonds_processor(base_path, dataset_path=None, results_dir=None, min_yield=6.0, max_yield=22.0, min_duration=0.1, max_duration=5.0, excluded_issuers=None, use_latest_snapshot_only=True, n_bonds=5, weighting_strategy='inverse_duration', portfolio_stability=0.7)

Полный пайплайн для обработки облигаций и создания оптимального портфеля.

Parameters:
  • base_path (str) -- Базовый путь к проекту

  • dataset_path (str, optional) -- Путь к файлу с датасетом облигаций

  • results_dir (str, optional) -- Директория для сохранения результатов

  • min_yield (float, default=6.0) -- Минимальная доходность для фильтрации

  • max_yield (float, default=22.0) -- Максимальная доходность для фильтрации

  • min_duration (float, default=0.1) -- Минимальная дюрация для фильтрации

  • max_duration (float, default=5.0) -- Максимальная дюрация для фильтрации

  • excluded_issuers (list, optional) -- Список эмитентов для исключения

  • included_issuers (list, optional) -- Список эмитентов для включения (имеет приоритет)

  • n_bonds (int, default=5) -- Количество облигаций в портфеле

  • weighting_strategy (str, default='inverse_duration') -- Стратегия взвешивания портфеля

  • portfolio_stability (float, default=0.7) -- Коэффициент стабильности портфеля

Returns:

Результаты выполнения пайплайна, включая портфель и пути к сохраненным файлам

Return type:

dict

pys.data_collection.data_integration module

class pys.data_collection.data_integration.DataIntegrator(base_path, nan_fill_method='median')

Bases: BaseLogger

load_multiple_tickers(tickers)

Загружает и объединяет данные для списка тикеров.

Параметры:

tickers - список тикеров (например, ["SBER", "GAZP", ...])

Возвращает:

overall_df - совокупный DataFrame, содержащий данные для всех тикеров с колонкой 'ticker'

load_ticker_data(ticker)

Загружает и интегрирует данные для одного тикера.

Параметры:

ticker - тикер актива (например, "SBER")

Возвращает:

df - объединённый DataFrame с данными для данного тикера, содержащий колонку 'ticker'

run_pipeline(tickers, output_path)

Запускает полный процесс загрузки, объединения данных и сохранения результата.

Параметры:

tickers (list): Список тикеров для обработки. output_path (str): Путь для сохранения объединенного CSV-файла.

Возвращает:

pd.DataFrame: Объединенный датасет или пустой DataFrame в случае ошибки.

pys.data_collection.data_integration.run_pipeline_integration(tickers, output_path='/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/df.csv', method='zero')

pys.data_collection.fundamental_data module

class pys.data_collection.fundamental_data.FundamentalPipeline(base_path='/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data', needed_prc_per_year=0.9)

Bases: BaseLogger

analyze_common_indicators()

Analyze and identify common indicators across tickers by year

process_tickers(ticker_list)

Process a list of tickers by fetching and parsing their data

save_data(all_years, common_indicators_by_year)

Save processed data to files for each ticker and year

visualize_common_indicators(all_years, common_indicators_by_year)

Create visualizations for common indicators across tickers by year

class pys.data_collection.fundamental_data.SmartLabYearlyParser(ticker, base_path='//Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data', needed_prc_per_year=0.9)

Bases: BaseLogger

clean_table(df)
fetch_page()
parse_yearly_tables(soup)
preprocess_dataframe(df)
static to_float(x)
pys.data_collection.fundamental_data.run_pipeline_fundamental(ticker_list, base_path='/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data')

pys.data_collection.kbd module

class pys.data_collection.kbd.KBDDownloader(output_dir='/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data/BONDS/kbd')

Bases: BaseLogger

Класс для загрузки данных кривой бескупонной доходности (КБД) с MOEX API

get_kbd(start_date, end_date)

Получить данные КБД с MOEX API за указанный период и сохранить их в CSV

Parameters:
  • start_date -- Начальная дата в формате datetime

  • end_date -- Конечная дата в формате datetime

Returns:

DataFrame с данными КБД или None в случае ошибки

pys.data_collection.kbd.run_pipeline_kbd_parser(base_path='/Users/aeshef/Desktop/FOR3.9TEST/kursach', start_date=None, end_date=None, update_data=True)

Загружает данные КБД и возвращает их в виде DataFrame.

Parameters:
  • base_path (str) -- Базовый путь проекта.

  • start_date (datetime или str) -- Начальная дата (если None, используется год назад).

  • end_date (datetime или str) -- Конечная дата (если None, используется текущая дата).

  • update_data (bool) -- Обновлять ли данные с сервера MOEX.

Returns:

Данные КБД или None в случае ошибки.

Return type:

pandas.DataFrame

pys.data_collection.kbd_analyzer module

class pys.data_collection.kbd_analyzer.KBDAnalyzer(kbd_data=None, output_dir='/Users/aeshef/Desktop/FOR3.9TEST/kursach/data/processed_data/BONDS/kbd')

Bases: BaseLogger

Класс для анализа кривой бескупонной доходности (КБД) и определения оптимальных параметров для выбора облигаций

get_bonds_recommendations()

Получить рекомендации для фильтрации облигаций на основе КБД

Returns:

параметры для фильтрации облигаций

Return type:

dict

get_comprehensive_recommendations()

Получить комплексные рекомендации для формирования портфеля облигаций на основе анализа КБД

Returns:

полные рекомендации для формирования портфеля

Return type:

dict

get_latest_kbd_metrics()

Получить последние метрики КБД для формирования рекомендаций

Returns:

Словарь с метриками КБД

Return type:

dict

get_optimal_weighting_strategy(latest_kbd=None)

Определить оптимальную стратегию взвешивания на основе формы кривой КБД

Parameters:

latest_kbd -- последние данные КБД или None для использования внутренних данных

Returns:

рекомендуемая стратегия взвешивания и параметры

Return type:

dict

visualize_kbd(save_path=None)

Визуализировать текущую КБД

Parameters:

save_path -- путь для сохранения визуализации

Returns:

путь к сохраненному файлу

Return type:

str

pys.data_collection.market_cap module

class pys.data_collection.market_cap.MarketCapParser(base_path)

Bases: BaseLogger

Класс для парсинга капитализаций компаний с Московской биржи и сохранения в структурированном виде

run_pipeline_market_cap(tickers=None)

Запускает пайплайн парсинга капитализаций компаний.

Parameters:

tickers (list, optional) -- Список тикеров для получения капитализации (если None, запрашиваются все доступные).

Returns:

DataFrame с тикерами и рыночной капитализацией.

Return type:

DataFrame

pys.data_collection.market_cap.run_pipeline_market_cap(base_path, tickers=None)

Запускает пайплайн парсинга капитализаций компаний.

Parameters:
  • base_path (str) -- Базовый путь для хранения данных.

  • tickers (list, optional) -- Список тикеров для получения капитализации (если None, запрашиваются все доступные).

Returns:

DataFrame с тикерами и рыночной капитализацией.

Return type:

DataFrame

pys.data_collection.market_data module

class pys.data_collection.market_data.DataStorage(base_directory)

Bases: BaseLogger

Класс для управления хранением данных

extract_raw_data(ticker)

Распаковать все ZIP-файлы для тикера

get_missing_date_ranges(ticker, start_date, end_date)

Определить, какие периоды данных отсутствуют для тикера

Returns:

Список кортежей (start_date, end_date) для отсутствующих периодов

get_ticker_processed_path(ticker)

Получить путь к папке обработанных данных для тикера

get_ticker_raw_path(ticker)

Получить путь к папке сырых данных для тикера

load_processed_data(ticker)

Загрузить обработанные данные для тикера из фиксированного файла

load_raw_csv_files(csv_files)

Загрузить данные из CSV-файлов в единый DataFrame

save_processed_data(ticker, new_data)

Сохранить обработанные данные в один паркет-файл. Если файл уже существует, объединяем с новыми данными, удаляем дубликаты и перезаписываем :param ticker: Тикер инструмента :param new_data: DataFrame с новыми данными :return: Путь к сохранённому файлу

store_raw_data(ticker, figi, year, content)

Сохранить сырые данные из API

class pys.data_collection.market_data.MarketDataManager(token, base_directory)

Bases: BaseLogger

Основной класс для управления рыночными данными

get_data(ticker, start_date, end_date, timeframe='1min', force_download=False)

Получить данные для тикера с указанным временным интервалом

Parameters:
  • ticker -- Тикер инструмента

  • start_date -- Дата начала в формате YYYY-MM-DD

  • end_date -- Дата окончания в формате YYYY-MM-DD

  • timeframe -- Временной интервал ('1min', '5min', '15min', '1h', '1d', '1w', '1M')

  • force_download -- Принудительно скачать новые данные, даже если они уже есть

Returns:

DataFrame с данными

get_data_for_multiple_tickers(tickers, start_date, end_date, timeframe='1min', max_workers=5)

Получить данные для нескольких тикеров с использованием многопоточности

Parameters:
  • tickers -- Список тикеров

  • start_date -- Дата начала в формате YYYY-MM-DD

  • end_date -- Дата окончания в формате YYYY-MM-DD

  • timeframe -- Временной интервал ('1min', '5min', '15min', '1h', '1d', '1w', '1M')

  • max_workers -- Максимальное количество потоков

Returns:

Словарь {ticker: DataFrame}

class pys.data_collection.market_data.MarketDataPipeline(base_directory='//Users/aeshef/Desktop/FOR3.9TEST/kursach/data')

Bases: BaseLogger

Класс для запуска пайплайна загрузки рыночных данных

run(tickers, start_date, end_date, token, timeframe='1min')

s Запускает пайплайн: настраивает логирование и загружает данные.

Параметры:

tickers (list): Список тикеров. start_date (str): Начальная дата в формате "YYYY-MM-DD". end_date (str): Конечная дата в формате "YYYY-MM-DD". token (str): API токен Tinkoff. timeframe (str): Временной интервал, по умолчанию "1min".

Возвращает:

Данные, полученные через get_data_for_multiple_tickers.

class pys.data_collection.market_data.TimeframeConverter

Bases: object

Класс для преобразования временных интервалов

static resample_ohlcv(df, timeframe)

Преобразовать минутные данные OHLCV в другой временной интервал

Parameters:
  • df -- DataFrame с минутными данными (колонки: date, open, close, min, max, volume)

  • timeframe -- Целевой временной интервал ('5min', '15min', '1h', '1d', '1w', '1M')

Returns:

DataFrame с преобразованными данными

class pys.data_collection.market_data.TinkoffDataDownloader(token, storage)

Bases: BaseLogger

Класс для скачивания данных из Tinkoff API

download_for_ticker(ticker, start_date, end_date)

Скачать данные для тикера за указанный период

Parameters:
  • ticker -- Тикер инструмента

  • start_date -- Дата начала в формате YYYY-MM-DD

  • end_date -- Дата окончания в формате YYYY-MM-DD

Returns:

DataFrame с минутными данными

get_correct_figi(figi_list) str

Получение корректного FIGI из списка

get_figi(ticker) list

Получение FIGI для тикера

get_isin(ticker) list

Получение ISIN для тикера

get_uid(ticker) list

Получение UID для тикера

initialize_instruments()

Получение списка доступных инструментов

is_figi_correct(figi) bool

Проверка корректности FIGI

pys.data_collection.market_data.run_pipeline_market(tickers, start_date, end_date, token, timeframe='1min')

pys.data_collection.news_pipeline module

class pys.data_collection.news_pipeline.NewsPipeline

Bases: BaseLogger

Единый пайплайн для сбора и анализа новостей

run_pipeline(base_dir: str = '/Users/aeshef/Desktop/FOR3.9TEST/kursach', tickers: List[str] | None = None, collect_telegram: bool = False, telegram_api_id: int | None = None, telegram_api_hash: str | None = None, telegram_channel: str = 'cbrstocks', telegram_limit: int = 5000, start_date: date | None = None, end_date: date | None = None, use_cached_telegram: bool = True, cleanup_old_files: bool = False, max_history_days: int = 30)

Запуск полного пайплайна анализа новостей

pys.data_collection.news_pipeline.main()

Запуск пайплайна из командной строки

pys.data_collection.news_pipeline.merge_with_existing(new_df: DataFrame, file_path: str, unique_columns: list)

Загружает существующий CSV, объединяет с new_df и удаляет дубликаты на основе уникальных колонок. Если файла нет, возвращает new_df.

pys.data_collection.news_pipeline.save_events_data(event_detector, combined_sentiment: DataFrame, events_file: str)

Обнаруживает и оценивает события на основе сентиментированных новостей, затем объединяет их с историческими данными и сохраняет результат.

pys.data_collection.news_pipeline.save_sentiment_data(sentiment_analyzer, news_df: DataFrame, sentiment_file: str)

Производит сентимент-анализ новостей с объединением новых и исторических данных. Если файл уже существует, выбираются только новые записи, затем объединяются и сохраняются.

pys.data_collection.news_pipeline.update_daily_sentiment(sentiment_analyzer, combined_sentiment: DataFrame, output_dir: str, ticker: str)

Создает или обновляет CSV-файл с ежедневным сентиментом путем объединения новых и исторических данных.

pys.data_collection.private_info module

pys.data_collection.tech_analysis module

class pys.data_collection.tech_analysis.TechAnalysisPipeline(base_dir: str = '/Users/aeshef/Desktop/FOR3.9TEST/kursach', tickers: List[str] | None = None)

Bases: BaseLogger

create_summary_report()
run_pipeline()
pys.data_collection.tech_analysis.run_pipeline_technical(tickers, base_dir='/Users/aeshef/Desktop/FOR3.9TEST/kursach')

pys.data_collection.technical_indicators module

class pys.data_collection.technical_indicators.TechnicalIndicators(file_path, resample_rule='1D', sma_window=20, rsi_window=14)

Bases: BaseLogger

calculate_indicators()

Рассчитывает технические индикаторы по агрегированным дневным данным:

  • Скользящая средняя (SMA) и экспоненциальная скользящая средняя (EMA) по окну sma_window

  • Индекс относительной силы (RSI) по окну rsi_window

  • MACD, сигнальная линия и разница

  • Полосы Боллинджера (используется sma_window и стандартное отклонение=2)

Returns:

DataFrame с добавленными столбцами индикаторов.

Return type:

pandas.DataFrame

load_data()

Загружает данные из Parquet-файла, преобразует временной столбец и агрегирует минутные данные до дневного масштаба с помощью resample_rule. Ожидается, что в файле имеются столбцы 'open', 'high', 'low', 'close', 'volume' и либо 'date', либо 'timestamp' (если timestamp в миллисекундах). :return: агрегированный DataFrame с дневными данными

plot_macd()

Строит график MACD (линия MACD, сигнальная линия и разница).

plot_price_with_indicators()

Строит график цены с наложенными скользящими средними и полосами Боллинджера.

Module contents