pys.data_collection.news_processor package

Submodules

pys.data_collection.news_processor.event_detector module

class pys.data_collection.news_processor.event_detector.EventDetector

Bases: object

Класс для обнаружения событий в новостях

assess_event_impact(df, sentiment_column='sentiment_compound')

Оценка влияния событий на основе настроения и типа события

Parameters:
  • df (pd.DataFrame) -- DataFrame с обнаруженными событиями

  • sentiment_column (str) -- Название колонки с оценкой настроения

Returns:

DataFrame с добавленной оценкой влияния событий

Return type:

pd.DataFrame

create_event_time_series(df, date_column='date')

Создание временного ряда событий

Parameters:
  • df (pd.DataFrame) -- DataFrame с обнаруженными событиями

  • date_column (str) -- Название колонки с датой

Returns:

DataFrame с ежедневной агрегацией событий

Return type:

pd.DataFrame

detect_events(df, text_column='clean_text')

Обнаружение событий в новостях

Parameters:
  • df (pd.DataFrame) -- DataFrame с новостями

  • text_column (str) -- Название колонки с текстом для анализа

Returns:

DataFrame с добавленными колонками событий

Return type:

pd.DataFrame

pys.data_collection.news_processor.keywords module

Keywords for sentiment analysis of Russian financial news

pys.data_collection.news_processor.news_feature_extractor module

class pys.data_collection.news_processor.news_feature_extractor.NewsFeatureExtractor

Bases: object

Класс для извлечения признаков из новостей

create_time_series_features(daily_sentiment_df, window_sizes=[3, 7, 14])

Создание признаков временных рядов из ежедневных данных о настроениях

Parameters:
  • daily_sentiment_df (pd.DataFrame) -- DataFrame с ежедневными настроениями

  • window_sizes (list) -- Список размеров окон для скользящих статистик

Returns:

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

Return type:

pd.DataFrame

create_topic_features(df, text_column='clean_text', n_topics=5)

Создание признаков на основе тем для всех новостей в DataFrame

Parameters:
  • df (pd.DataFrame) -- DataFrame с новостями

  • text_column (str) -- Название колонки с текстом для анализа

  • n_topics (int) -- Количество тем для извлечения

Returns:

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

Return type:

pd.DataFrame

extract_keyword_mentions(text, keywords)

Извлечение упоминаний ключевых слов из текста

Parameters:
  • text (str) -- Текст для анализа

  • keywords (list) -- Список ключевых слов для поиска

Returns:

Словарь {keyword: count} с количеством упоминаний каждого ключевого слова

Return type:

dict

extract_topics_lda(texts, n_topics=5, n_top_words=10)

Извлечение тем из коллекции текстов с помощью LDA

Parameters:
  • texts (list) -- Список текстов для анализа

  • n_topics (int) -- Количество тем для извлечения

  • n_top_words (int) -- Количество ключевых слов для каждой темы

Returns:

(lda_model, vectorizer, document_topics, topic_keywords)

Return type:

tuple

pys.data_collection.news_processor.news_integration module

class pys.data_collection.news_processor.news_integration.NewsIntegration(resample_rule='1D', sma_window=20, ema_window=20, rsi_window=14, bb_window=20, atr_window=14, stoch_window=14, adx_window=14, cci_window=20)

Bases: object

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

convert_news_to_views(news_features_df, market_returns, risk_aversion=2.5)

Конвертация новостных сигналов в мнения инвесторов для модели Блека-Литермана

Parameters:
  • news_features_df (pd.DataFrame) -- DataFrame с признаками новостей

  • market_returns (dict) -- Словарь {ticker: expected_return} с историческими доходностями

  • risk_aversion (float) -- Коэффициент неприятия риска

Returns:

Словарь {ticker: (expected_return, confidence)} с мнениями инвесторов

Return type:

dict

create_ml_features(combined_df, target_column='close', prediction_horizon=5)

Создание признаков для моделей ML на основе объединенных данных

Parameters:
  • combined_df (pd.DataFrame) -- Объединенный DataFrame с ценами и новостными признаками

  • target_column (str) -- Название колонки с целевой переменной (обычно цена закрытия)

  • prediction_horizon (int) -- Горизонт прогнозирования (в днях)

Returns:

DataFrame с признаками для ML

Return type:

pd.DataFrame

merge_news_with_price_data(news_features_df, price_df, date_column='date')

Объединение новостных признаков с ценовыми данными

Parameters:
  • news_features_df (pd.DataFrame) -- DataFrame с признаками новостей

  • price_df (pd.DataFrame) -- DataFrame с ценовыми данными

  • date_column (str) -- Название колонки с датой

Returns:

Объединенный DataFrame

Return type:

pd.DataFrame

pys.data_collection.news_processor.news_preprocessor module

class pys.data_collection.news_processor.news_preprocessor.NewsPreprocessor(base_dir, use_nltk=True)

Bases: object

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

clean_text(text)

Очистка текста новостей от специальных символов, ссылок и emoji

Parameters:

text (str) -- Исходный текст новости

Returns:

Очищенный текст

Return type:

str

process_all_tickers(tickers=None, save=True)

Обработка новостей для всех указанных тикеров

Parameters:
  • tickers (list) -- Список тикеров. Если None, будут обработаны все тикеры в директории

  • save (bool) -- Сохранять ли результат в файл

Returns:

Словарь {ticker: DataFrame} с обработанными новостями для каждого тикера

Return type:

dict

process_news_file(file_path, save=True)

Обработка одного файла с новостями

Parameters:
  • file_path (str) -- Путь к файлу с новостями

  • save (bool) -- Сохранять ли результат в файл

Returns:

DataFrame с обработанными новостями

Return type:

pd.DataFrame

process_ticker_news(ticker, save=True)

Обработка всех файлов новостей для конкретного тикера

pys.data_collection.news_processor.news_visualizer module

class pys.data_collection.news_processor.news_visualizer.NewsVisualizer(output_dir=None)

Bases: object

Класс для визуализации новостных данных

create_news_dashboard(news_df, sentiment_ts, ticker, save=False, use_plotly=True)

Создание дашборда с результатами анализа новостей

Parameters:
  • news_df (pd.DataFrame) -- DataFrame с новостями и результатами анализа

  • sentiment_ts (pd.DataFrame) -- DataFrame с временным рядом настроений

  • ticker (str) -- Тикер компании для заголовка

  • save (bool) -- Сохранять ли дашборд в файл

  • use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)

Returns:

Словарь с объектами графиков

Return type:

dict

plot_event_distribution(df, ticker, save=False, use_plotly=True)

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

Parameters:
  • df (pd.DataFrame) -- DataFrame с обнаруженными событиями

  • ticker (str) -- Тикер компании для заголовка

  • save (bool) -- Сохранять ли график в файл

  • use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)

Returns:

Объект графика

Return type:

go.Figure или plt.Figure

plot_sentiment_by_event_type(df, ticker, save=False, use_plotly=True)

Визуализация распределения настроений по типам событий

Parameters:
  • df (pd.DataFrame) -- DataFrame с обнаруженными событиями и настроениями

  • ticker (str) -- Тикер компании для заголовка

  • save (bool) -- Сохранять ли график в файл

  • use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)

Returns:

Объект графика

Return type:

go.Figure или plt.Figure

plot_sentiment_distribution(df, ticker, save=False, use_plotly=True)

Визуализация распределения настроений

Parameters:
  • df (pd.DataFrame) -- DataFrame с настроениями

  • ticker (str) -- Тикер компании для заголовка

  • save (bool) -- Сохранять ли график в файл

  • use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)

Returns:

Объект графика

Return type:

go.Figure или plt.Figure

plot_sentiment_time_series(sentiment_ts, ticker, save=False, use_plotly=True)

Визуализация временного ряда настроений

Parameters:
  • sentiment_ts (pd.DataFrame) -- DataFrame с временным рядом настроений

  • ticker (str) -- Тикер компании для заголовка

  • save (bool) -- Сохранять ли график в файл

  • use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)

Returns:

Объект графика

Return type:

go.Figure или plt.Figure

visualize_events(ticker, news_with_events, daily_events, output_dir)

Визуализация событий для пайплайна новостей

Parameters:
  • ticker (str) -- Тикер компании

  • news_with_events (pd.DataFrame) -- DataFrame с новостями и событиями

  • daily_events (pd.DataFrame) -- DataFrame с ежедневными событиями

  • output_dir (str) -- Директория для сохранения

visualize_sentiment(ticker, news_with_sentiment, daily_sentiment, output_dir)

Визуализация настроений для пайплайна новостей

Parameters:
  • ticker (str) -- Тикер компании

  • news_with_sentiment (pd.DataFrame) -- DataFrame с новостями и настроениями

  • daily_sentiment (pd.DataFrame) -- DataFrame с ежедневными настроениями

  • output_dir (str) -- Директория для сохранения

pys.data_collection.news_processor.sentiment_analysis module

class pys.data_collection.news_processor.sentiment_analysis.SentimentAnalyzer(use_vader=True, language='english')

Bases: object

Класс для анализа настроений в новостях

analyze_news_dataframe(df, text_column='clean_text')
analyze_stock_impact(text, ticker=None)
analyze_text(text, ticker=None)
analyze_text_advanced_ru(text, ticker=None)
analyze_text_simple_ru(text)
analyze_text_vader(text)
analyze_ticker_news(news_df, save_path=None)
create_daily_sentiment_series(analyzed_df)
set_cbr_meetings(meeting_dates)

Module contents