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 コールバックが記事とともに発火 します。記事には sentimenttitlesource、そして(includeEntities が有効なため)タグ付けされた 企業が含まれます。

何が起きているのか

  • client.websocket.connect(...) は持続的な接続を開き、一致する記事をストリーミングします。これは非同期 呼び出しなので、asyncio.run(...) の中で実行されます。
  • GetArticlesWebSocketParams は REST API と同じ種類のフィルターを受け取ります:tickersquerysourcescountriescategorieslanguageincludeEntities など。
  • on_article はあなたのハンドラーです。ここで、単に出力するのではなく、キューにプッシュしたり、 ダッシュボードを更新したり、シグナルを評価したりします。

SDK はバックオフ付きの自動再接続を含め、接続を代わりに管理するので、一度の切断でストリームが止まることは ありません。

enhanced と raw

client.websocket は enhanced ストリームです。記事はフルエンリッチメント(センチメントとエンティティ) 付きで届きます。軽量で基本的な記事データをできるだけ速く取得したいだけなら、同じ connect(...) の形を持つ client.raw_websocket もあります。分析が欲しいときは enhanced を、最小のレイテンシが欲しいときは raw を 使いましょう。

必要なものだけに正確にフィルターする

WebSocket は REST と同じフィルターを受け付けるので、正確なスライスをストリーミングできます。暗号資産 ニュースだけ、ウォッチリストのティッカーだけ、特定の国だけ、というように。フィルターの全セットは 高度なフィルタリングを参照してください。

次に読むもの

無料の API キーを取得する →