تُسوّى صفقة لسهم أمريكي أُبرمت يوم الأربعاء 25 نوفمبر 2026 وفق T+1 يوم الجمعة 27 نوفمبر 2026، وتُسوّى صفقات USD/JPY الفورية وفق T+2 يوم الاثنين 30 نوفمبر، لأن الخميس 26 نوفمبر عطلة في الولايات المتحدة. تاريخ التسوية = تاريخ الصفقة زائد N من أيام العمل، مع تجاوز عطلات نهاية الأسبوع وأي يوم تكون فيه دولة معنية في عطلة.
احسب التسوية باستخدام واجهة API
تعني T+1 يوم عمل واحدًا بعد تاريخ الصفقة. تُسوّى الأسهم الأمريكية وصناديق المؤشرات المتداولة وفق T+1 منذ 28 مايو 2024. تُسوّى صفقات FX الفورية عادةً وفق T+2، لكن عدد الأيام تحدده أعراف السوق، لذا استخدم قواعد جهة التداول لديك لاختيار فترة التسوية.
- اختر فترة التسوية اضبط
daysعلى عدد أيام العمل بعد الصفقة. يستخدم المثال T+1 لسهم أمريكي وT+2 لصفقة USD/JPY فورية. تاريخ الصفقة هو نقطة البداية ولا يُحتسب ضمن تلك الفترة. - اضبط مفتاح API الخاص بك احصل على مفتاح API مجاني واحفظه في متغير البيئة
NARWHAL_API_KEY. يقرأ البرنامج النصي ذلك المتغير ويرسل المفتاح بصيغةAuthorization: Bearer YOUR_KEYإلىhttps://api.narwhalapi.com. - اختر الدول استخدم
USAلمثال السهم الأمريكي، وكلا الرمزَينUSAوJPNلزوج USD/JPY. يطلب البرنامج النصي الإجازات الرسمية عبرGET /v1/calendars/holidays/{country}/{year}. تمنع عطلة في أي دولة ضمن القائمة احتساب ذلك التاريخ. - احسب التواريخ استخدم البرنامج النصي مع تاريخ الصفقة وفترة التسوية وقائمة الدول. يتقدم يومًا تقويميًا في كل مرة، ولا يحتسب اليوم إلا إذا كان من الاثنين إلى الجمعة دون عطلة مدرجة. تُبقي ذاكرة التخزين المؤقت عطلات كل دولة وسنة متاحة دون طلب آخر أثناء مرور الحلقة عبر التواريخ.
import os from datetime import date, timedelta from functools import cache import requests API = "https://api.narwhalapi.com" HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} @cache # one request per country and year, however many days the loop walks def holidays(country: str, year: int) -> frozenset[str]: r = requests.get( f"{API}/v1/calendars/holidays/{country}/{year}", headers=HEADERS, timeout=10 ) r.raise_for_status() return frozenset(h["date"] for h in r.json()["holidays"]) def settlement(trade: date, days: int, countries: list[str]) -> date: """The date `days` business days after the trade, skipping a day any listed country is closed.""" day = trade while days > 0: day += timedelta(1) closed = any(day.isoformat() in holidays(c, day.year) for c in countries) if day.weekday() < 5 and not closed: days -= 1 return day trade = date(2026, 11, 25) print("US stock, T+1:", settlement(trade, 1, ["USA"])) print("USD/JPY spot, T+2:", settlement(trade, 2, ["USA", "JPN"]))
يستخدم البحث عن العطلات سنة اليوم الجاري فحصه، لذا يمكن للحلقة طلب قائمة الدول المناسبة عند الوصول إلى سنة أخرى. تتبع ذاكرة التخزين المؤقت دالة العطلات، بينما تستقبل دالة التسوية تاريخ كل صفقة وعدد الأيام والدول كمدخلات. تأتي تواريخ العطلات من قائمة holidays في الاستجابة. تقرأ الدالة كل قيمة date وتقارنها بالتاريخ في الحلقة؛ ويمنع التطابق في أي دولة مدرجة احتساب ذلك اليوم ضمن التسوية.
احسب التسوية في جدول بيانات
يمكن لـ Excel وGoogle Sheets حساب عدد أيام العمل نفسه باستخدام WORKDAY. ضع تواريخ الإغلاق في نطاق باسم Holidays، ثم استخدم تاريخ الصفقة وفترة التسوية في الصيغة. لزوج عملات، ادمج قائمتي العطلات للدولتين في ذلك النطاق.
=WORKDAY(DATE(2026,11,25), 1, Holidays)=WORKDAY(DATE(2026,11,25), 2, Holidays)يحدد النطاق Holidays التواريخ التي يجب على الصيغة تجاوزها إضافةً إلى عطلات نهاية الأسبوع. لمثال السهم الأمريكي، استخدم قائمة الولايات المتحدة. لزوج USD/JPY، ضمّن قائمتي الولايات المتحدة واليابان، حتى يُستبعد اليوم من الحساب عند الإغلاق في أي من الدولتين.
لكل من فترة التسوية ونطاق العطلات في الصيغة وظيفة مستقلة. تغيير الفترة من T+1 إلى T+2 يغير عدد أيام العمل التي تحسبها؛ وتغيير النطاق يغير التواريخ المؤهلة للاحتساب. استخدم الدول المعنية بالصفقة عند إعداد النطاق.
متى تستخدم كل خيار
| الحالة | الخيار الأنسب | السبب |
|---|---|---|
| صفقة واحدة | WORKDAY في جدول بيانات مع قائمة عطلات مدمجة | تحسب الصيغة فترة التسوية باستخدام تواريخ الإغلاق التي تقدمها. |
| سجل صفقات أو مهمة تسوية ليلية | برنامج Python النصي | تحدد قائمة الدول العطلات، وتحسب الدالة التسوية لتاريخ صفقة. |
| تقويم خاص ببورصة، يشمل الجمعة العظيمة أو الإغلاق المبكر | تقويم البورصة الخاص | تتضمن قائمة Narwhal الإجازات الرسمية؛ وقد تختلف مواعيد إغلاق البورصات. |
هل تتجاوز T+2 عطلة في دولة العملة الأخرى؟
نعم. وفق أعراف FX، تُراعى أيام العمل لكلتا العملتين، لذا تُتجاوز العطلة في أي من الدولتين. لزوج USD/JPY، مرّر كلا الرمزَين USA وJPN إلى الدالة. استخدام قائمة دولة واحدة فقط يستبعد عطلات الدولة الأخرى من الحساب.
تبقى فترة التسوية T+2 عندما تقع عطلة بين الصفقة والتسوية. تؤخر العطلة تاريخ التسوية لأنها لا تُحتسب يوم عمل. تُتجاوز عطلات نهاية الأسبوع أيضًا، حتى بعد احتساب يوم العمل الأول.
ماذا لو كان تاريخ الصفقة نفسه عطلة؟
يصبح أول يوم عمل بعد تاريخ الصفقة هو اليوم 1. يبدأ البرنامج النصي بتاريخ الصفقة المقدَّم، ويتقدم إلى اليوم التقويمي التالي، ثم يبحث عن يوم من الاثنين إلى الجمعة لا توجد فيه عطلة في قائمة الدول.
تُتجاوز أيضًا عطلة نهاية الأسبوع أو أي عطلة أخرى تأتي مباشرةً بعد التاريخ المقدَّم. تستمر الدالة حتى يُحتسب العدد المطلوب من أيام العمل. هذه هي طريقة تعامل البرنامج النصي مع تاريخ الصفقة المقدَّم؛ وتظل فترة التسوية محددةً بأعراف السوق وقواعد جهة التداول لديك.
هل تطابق قائمة الإجازات الرسمية تقويم البورصة؟
ليس دائمًا. تتضمن بيانات العطلات في Narwhal الإجازات الرسمية حسب الدولة، وقد تختلف مواعيد إغلاق البورصات. تُغلق بورصة NYSE يوم الجمعة العظيمة، 3 أبريل 2026، وهو غير موجود في قائمة العطلات الفيدرالية الأمريكية في واجهة API.
استخدم تقويم البورصة الخاص عندما تعتمد التسوية على مواعيد إغلاقها المحددة أو إغلاقها المبكر. تحدد قائمة الدولة الإجازات الرسمية للحساب؛ ولا تضيف إغلاقًا للبورصة غير موجود في تلك القائمة.
مثال تطبيقي: صفقة يوم الأربعاء 25 نوفمبر 2026
ابدأ من الأربعاء 25 نوفمبر 2026. الخميس 26 نوفمبر هو عيد الشكر في الولايات المتحدة، لذا لا يضيف يوم عمل إلى أي من المثالين. الجمعة 27 نوفمبر هو اليوم 1: يصل السهم الأمريكي إلى T+1 وتتم تسويته في ذلك التاريخ.
| التاريخ | سهم أمريكي، T+1 | صفقة USD/JPY فورية، T+2 |
|---|---|---|
| الأربعاء 25 نوفمبر 2026 | تاريخ الصفقة | تاريخ الصفقة |
| الخميس 26 نوفمبر 2026 | تجاوز عيد الشكر | تجاوز عيد الشكر الأمريكي |
| الجمعة 27 نوفمبر 2026 | اليوم 1، التسوية | اليوم 1 |
| السبت 28 نوفمبر 2026 | تجاوز عطلة نهاية الأسبوع | |
| الأحد 29 نوفمبر 2026 | تجاوز عطلة نهاية الأسبوع | |
| الاثنين 30 نوفمبر 2026 | اليوم 2، التسوية |
لزوج USD/JPY، يكون الجمعة أول يوم عمل. لا يضيف السبت والأحد شيئًا إلى العدد، لذا يكون الاثنين 30 نوفمبر هو اليوم 2. تاريخ التسوية T+2 لصفقة 25 نوفمبر 2026 هو الاثنين 30 نوفمبر 2026.
US stock, T+1: 2026-11-27
USD/JPY spot, T+2: 2026-11-30نُشر في .
الخطوات التالية
أنشئ مفتاحًا مجانيًا واستدعِ واجهة API من شيفرتك. احصل على مفتاح API مجاني
