pys.data_collection package
Subpackages
- pys.data_collection.news_processor package
- Submodules
- pys.data_collection.news_processor.event_detector module
- pys.data_collection.news_processor.keywords module
- pys.data_collection.news_processor.news_feature_extractor module
- pys.data_collection.news_processor.news_integration module
- pys.data_collection.news_processor.news_preprocessor module
- pys.data_collection.news_processor.news_visualizer module
- pys.data_collection.news_processor.sentiment_analysis module
SentimentAnalyzerSentimentAnalyzer.analyze_news_dataframe()SentimentAnalyzer.analyze_stock_impact()SentimentAnalyzer.analyze_text()SentimentAnalyzer.analyze_text_advanced_ru()SentimentAnalyzer.analyze_text_simple_ru()SentimentAnalyzer.analyze_text_vader()SentimentAnalyzer.analyze_ticker_news()SentimentAnalyzer.create_daily_sentiment_series()SentimentAnalyzer.set_cbr_meetings()
- Module contents
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()
Строит график цены с наложенными скользящими средними и полосами Боллинджера.