Wednesday, September 23, 2026
Постройте сигнал тональности новостей для своего вотчлиста
Постройте сигнал тональности новостей для своего вотчлиста
Тональность отдельной статьи полезна, но часто вам нужно одно число на компанию: новостной поток сейчас склоняется в позитив или в негатив? В этом руководстве вы превратите тональность и уверенность из finlight в один взвешенный по уверенности балл на каждый тикер, для всего вотчлиста, с помощью Python и pandas.
Идея
Каждая статья сопровождается sentiment (positive, neutral, negative) и confidence. Мы:
- Подтянем недавние статьи по каждому тикеру.
- Сопоставим тональность с числом:
+1,0,-1. - Взвесим каждую статью по её уверенности и усредним по тикеру.
Результат — балл между -1 и +1, который суммирует тон новостей по каждой компании.
Код
import pandas as pd
from finlight_client import FinlightApi, ApiConfig
from finlight_client.models import GetArticlesParams
client = FinlightApi(config=ApiConfig(api_key="YOUR_API_KEY"))
WATCHLIST = ["AAPL", "NVDA", "TSLA"]
SCORE = {"positive": 1, "neutral": 0, "negative": -1}
rows = []
for ticker in WATCHLIST:
response = client.articles.fetch_articles(
GetArticlesParams(tickers=[ticker], from_="2026-06-01", pageSize=100)
)
for article in response.articles:
if article.sentiment is None:
continue
rows.append({
"ticker": ticker,
"score": SCORE.get(article.sentiment, 0),
"confidence": article.confidence or 0.0,
})
df = pd.DataFrame(rows)
# Взвешенная по уверенности средняя тональность на каждый тикер
df["weighted"] = df["score"] * df["confidence"]
signal = df.groupby("ticker").apply(
lambda g: g["weighted"].sum() / g["confidence"].sum()
)
print(signal.sort_values(ascending=False))
Что вы получаете
signal — это одно число на каждый тикер:
ticker
NVDA 0.62
AAPL 0.18
TSLA -0.34
Положительный балл означает, что недавний новостной поток склоняется в позитив, отрицательный — в негатив,
а величина отражает, насколько сильна и уверенна эта склонность. Взвешивание по confidence означает, что
пачка статей с высокой уверенностью двигает балл сильнее, чем груда неуверенных.
Как сделать лучше
- Добавьте взвешивание по свежести: умножайте на временное затухание, чтобы сегодняшние новости весили больше, чем прошлонедельные.
- Добавьте объём: отслеживайте количество статей рядом с баллом, ведь сильный балл по двум статьям — более слабое свидетельство, чем тот же балл по пятидесяти.
- Перейдите к инкрементальности: перезапускайте по расписанию или переключитесь на WebSocket, чтобы обновлять сигнал в реальном времени.
Предостережение
Тональность — это один из входных сигналов, а не прогноз цены. Рынки могут игнорировать плохие новости или переоценивать хорошие. Воспринимайте этот балл как признак, который стоит сочетать с объёмом, источником и вашими собственными моделями, а не как самостоятельное торговое правило.
Куда двигаться дальше
- Что такое анализ тональности финансовых новостей?
- Продвинутая фильтрация, чтобы точно очертить область сигнала.
- Полная документация.
