finlight Logo

Tuesday, September 15, 2026

finlight로 Python에서 실시간 주식 뉴스 스트리밍하기

Kevin Bartsch

finlight로 Python에서 실시간 주식 뉴스 스트리밍하기

뉴스를 얻으려고 API를 폴링한다는 것은 항상 조금 늦는다는 뜻입니다. 실시간 대시보드와 트레이딩 신호에는 각 기사를 게시되는 순간에 받고 싶을 것입니다. finlight의 WebSocket이 바로 그 일을 하며, Python SDK 덕분에 단 몇 줄이면 됩니다. 이 튜토리얼에서는 티커로 필터링되고 이미 감정 점수가 매겨진 실시간 주식 뉴스 스트림을 만들어 봅니다.

SDK 설치

pip install finlight-client

전체 예제

import asyncio

from finlight_client import FinlightApi, ApiConfig
from finlight_client.models import GetArticlesWebSocketParams

client = FinlightApi(config=ApiConfig(api_key="YOUR_API_KEY"))


def on_article(article):
    print(f"[{article.sentiment}] {article.title} - {article.source}")


async def main():
    await client.websocket.connect(
        request_payload=GetArticlesWebSocketParams(
            tickers=["AAPL", "NVDA"],
            includeEntities=True,
        ),
        on_article=on_article,
    )


if __name__ == "__main__":
    asyncio.run(main())

이것을 실행하면, 매칭되는 기사가 게시될 때마다 당신의 on_article 콜백이 호출되어 해당 기사를 받습니다. 여기에는 기사의 sentiment, title, source, 그리고 (includeEntities가 켜져 있으므로) 태깅된 기업이 포함됩니다.

무슨 일이 일어나고 있나

  • client.websocket.connect(...)는 지속 연결을 열고 매칭되는 기사를 스트리밍합니다. 비동기 호출이므로 asyncio.run(...) 안에서 실행됩니다.
  • GetArticlesWebSocketParams는 REST API와 같은 종류의 필터를 받습니다: tickers, query, sources, countries, categories, language, includeEntities 등.
  • on_article은 당신의 핸들러입니다. 단순히 출력하는 대신, 여기서 큐에 푸시하거나, 대시보드를 업데이트하거나, 신호를 평가하면 됩니다.

SDK는 백오프를 적용한 자동 재연결을 포함해 연결을 알아서 관리하므로, 연결이 한 번 끊겨도 스트림이 멈추지 않습니다.

보강 버전 vs raw 버전

client.websocket은 보강 스트림입니다. 기사가 전체 보강(감정과 엔티티)과 함께 도착합니다. 경량의 기본 기사 데이터를 최대한 빠르게만 받으면 된다면, 동일한 connect(...) 형태의 client.raw_websocket도 있습니다. 분석이 필요하면 보강 버전을, 최소 지연이 필요하면 raw 버전을 쓰세요.

필요한 것만 정확히 필터링하기

WebSocket은 REST와 같은 필터를 받으므로 정확한 한 조각만 스트리밍할 수 있습니다. 암호화폐 뉴스만, 관심목록 티커만, 특정 국가만. 전체 필터 세트는 고급 필터링을 참고하세요.

다음으로 갈 곳

무료 API 키 받기 →