finlight Logo

Wednesday, September 23, 2026

ابنِ إشارة مشاعر إخبارية لقائمة متابعتك

Kevin Bartsch

ابنِ إشارة مشاعر إخبارية لقائمة متابعتك

مشاعر كل مقال على حدة مفيدة، لكن ما تريده غالبًا هو رقم واحد لكل شركة: هل يميل تدفّق الأخبار الآن نحو الإيجاب أم السلب؟ في هذا الدرس ستحوّل مشاعر finlight ودرجة ثقتها إلى درجة واحدة مرجّحة بالثقة لكل رمز سهم، لقائمة متابعة كاملة، باستخدام Python وpandas.

الفكرة

يأتي كل مقال مع sentiment (إيجابي، محايد، سلبي) وconfidence. سنقوم بـ:

  1. سحب المقالات الحديثة لكل رمز سهم.
  2. تحويل المشاعر إلى رقم: +1 و0 و-1.
  3. ترجيح كل مقال بدرجة ثقته وأخذ المتوسط لكل رمز سهم.

النتيجة درجة بين -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 لتحديث الإشارة في الوقت الفعلي.

تنبيه

المشاعر مُدخَل واحد، لا تنبؤ بالسعر. فقد تتجاهل الأسواق الأخبار السيئة أو تبالغ في رد فعلها على الأخبار الجيدة. تعامل مع هذه الدرجة بوصفها سمة تدمجها مع الحجم والمصدر ونماذجك الخاصة، لا قاعدة تداول قائمة بذاتها.

إلى أين تذهب بعد ذلك

احصل على مفتاح API المجاني ←