Wednesday, September 23, 2026
관심목록을 위한 뉴스 감정 신호 만들기
관심목록을 위한 뉴스 감정 신호 만들기
기사 단위의 감정도 유용하지만, 정작 원하는 것은 기업마다 하나의 숫자일 때가 많습니다. 지금 뉴스 흐름이 긍정 쪽인가, 부정 쪽인가? 이 튜토리얼에서는 Python과 pandas로 finlight의 감정과 신뢰도를 티커별 단일 신뢰도 가중 점수로 바꿔, 관심목록 전체에 적용해 봅니다.
아이디어
각 기사에는 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으로 전환해 신호를 실시간으로 업데이트하세요.
주의할 점
감정은 하나의 입력일 뿐, 가격 예측이 아닙니다. 시장은 나쁜 소식을 무시하기도 하고 좋은 소식에 과잉 반응하기도 합니다. 이 점수를 독립적인 트레이딩 규칙이 아니라, 수량, 소스, 그리고 당신만의 모델과 결합할 하나의 피처로 다루세요.
다음으로 갈 곳
- 금융 뉴스 감정 분석이란 무엇인가?
- 신호 범위를 정확히 한정하려면 고급 필터링을 참고하세요.
- 전체 문서.
