منهجية محرّك البحثHow Yohalil Works
نظام بحثي يختبر هل سوق الأسهم السعودي (تاسي) يستجيب للتحليل الفني — بيانات يومية على الإغلاق فقط، تحقّق خارج العينة، ولا وعود بأداء.An autonomous research engine testing whether the Saudi TASI market responds to technical analysis — close-only daily data, out-of-sample validation, no performance promises.
ما هو يحلّل؟What Yohalil is
يحلّل نظامٌ بحثيّ، وليس خدمة إشارات تداول. يدرس سوق الأسهم السعودي (تاسي) ويطرح سؤالاً واحداً قابلاً للاختبار: هل ينتج التحليل الفني فائضاً قابلاً للقياس وغير مرئي للمحرّك على بيانات تاسي؟Yohalil is a research system, not a trading-signal service. It studies the Saudi TASI equity market and asks one falsifiable question: does technical analysis produce measurable, out-of-sample edge on TASI data?
المحرّك تطبيق رُست (Rust) يشغّل حلقة بحث آلية بالكامل على مدار الساعة. في كل دورة يمسح مجموعة الرموز المدرجة، ويبني مرشّحات للاختبار الخلفي، وينفّذ اختبارات خلفية سببية صارمة، ويتعلّم قواعد قابلة للنقل من النتائج، ويطوّر معاملات الاستراتيجيات، ويولّد استراتيجيات جديدة، ويعيد التحقّق من كل شيء على بيانات لم يرها من قبل قبل أن يثق بأي شيء.The engine is a Rust application that runs a fully automated research loop around the clock. Each cycle it screens a universe of listed symbols, constructs backtest candidates, executes strictly causal backtests, learns portable rules from the results, evolves strategy parameters, synthesizes new strategies, and re-checks everything on data it has never seen before anything is trusted.
كل ما يبلّغ عنه يحلّل مصدره قاعدة بيانات المحرّك البحثية مباشرة، ويُعرض مع الأرباح والخسائر معاً. لا نتائج مخفية ولا اختيار انتقائي، ولا وعود بأرباح. النظام يبحث عن الحقيقة: يفضّل «بيانات غير كافية» على التلفيق.Everything Yohalil reports is sourced from its own research database and is displayed with wins and losses together. There are no hidden or selectively chosen results, and there are no profit promises. The system is truth-seeking: it prefers "insufficient data" over fabrication.
ما هي الدورة؟What a cycle is
«الدورة» هي مرور واحد كامل لحلقة البحث الآلية، وتمرّ بست مراحل:A "cycle" is one full pass of the unattended research loop. Each cycle runs through six stages:
- تسجيل المرشّحين — بناء قائمة أولويات من مرشّحات الاختبار الخلفي انطلاقاً من مجموعة الرموز، تجمع بين الحداثة وتنوّع الأنماط وتحيّز حدود الاستكشاف. نحو 10,000 توليفة مرشّحة (رمز × استراتيجية × نافذة تاريخية) متاحة، وكل دورة تشغّل مجموعة صغيرة منها.Candidate scoring — a priority queue of backtest candidates is built from the symbol universe, combining novelty, archetype diversity, and exploration frontier bias. Roughly 10,000 candidate combinations (symbol × strategy × historical window) are available; each cycle runs a small batch of them.
- الاختبار الخلفي — كل مرشّح يمرّ عبر محرّك الاختبار الخلفي، حلقة سببية شمعة-بشمعة مع حواجز مخاطر وربح صافٍ بعد الرسوم.Backtesting — each candidate runs through the backtest engine, a per-bar causal loop with risk guards and net-of-fees PnL.
- التعلّم — محرّك التعلّم يحوّل النتائج إلى حمض نووي (DNA): قواعد قابلة للنقل مع بوابة مزوّد وبوابة ميزات.Learning — the LearningEngine turns the results into DNA: portable rules with a provider gate and a feature gate.
- تطوير المعاملات — معاملات الاستراتيجيات تتطوّر مقابل إشارة التعلّم.Parameter evolution — strategy parameters are evolved against the learning signal.
- تركيب الاستراتيجيات — استراتيجيات جديدة تُركَّب كاقترانات للقواعد المتعلَّمة، ولكل منها سجلّ نسب.Strategy synthesis — new strategies are synthesized as conjunctions of learned rules, each with a recorded lineage.
- خريطة السوق والروايات والبوابات الأمامية — المحرّك يسمّي أنظمة السوق، ويكتب روايات السوق، ويتحقّق من الأفكار المروَّجة على المسار الأمامي/الورقي قبل الوثوق بها.Regime, narratives, and forward gates — the engine labels market regimes, writes market narratives, and validates promoted ideas on the forward/paper lane before they are trusted.
المقياس مهم. يحلّل يشغّل آلاف الدورات — نحو 4,500+ حتى أغسطس 2026 — وليس ملايين. كل دورة تشغّل عادةً من 4 إلى 9 مهام اختبار خلفي (دفعة أساس من 4 زائد حتى 5 مهام مسار تركيب، تُضغط عند ارتفاع ضغط الذاكرة) من أصل نحو 10,000 توليفة مرشّحة. حجم الدفعة يناسب الجهاز الذي يعمل عليه: عندما يرتفع ضغط الموارد يضغط المحرّك الدفعة بدلاً من تخطّي العمل، والبنود غير المنفَّذة تنتقل إلى الدورة التالية.The scale is important. Yohalil runs thousands of cycles — roughly 4,500+ as of August 2026 — not millions. Each cycle runs a handful of backtest tasks — typically 4 to 9 (a base batch of 4 plus up to 5 synthesis-lane tests, compressed when memory pressure rises) — drawn from roughly 10,000 available candidate combinations. The batch is sized for the machine it runs on: when system resources are under pressure, the engine compresses the batch rather than skipping work, and un-run items roll forward to the next cycle.
يختبر المحرّك نوافذ تاريخية مسماة خاصة بالسوق السعودي: أزمة 2008، الربيع العربي 2011، انهيار النفط 2014، رؤية 2030 عام 2016، طرح أرامكو 2019، فترة كوفيد-19، دورة رفع الفائدة 2022، سوق الصعود 2024، ونوافذ حديثة متجددة. هذه سياقات تاريخية مسماة، وليست أرباع أنظمة سوق مجرّدة.The engine tests labeled historical windows specific to the Saudi market: the 2008 crisis, the 2011 Arab Spring, the 2014 oil crash, the 2016 Vision 2030 era, the 2019 Aramco IPO, the COVID-19 period, the 2022 rate-hike cycle, the 2024 bull run, and rolling recent windows. These are named historical contexts, not abstract market-cycle quadrants.
كيف يمنع يحلّل التجهيز الزائد (Overfitting)؟How overfitting is prevented
محرّك يختبر آلاف التوليفات سيجد «أنماطاً» في الضجيج ما لم يكن منضبطاً. يحلّل يستخدم حاجزاً متعدد الطبقات:An engine that tests thousands of combinations will find patterns in noise unless it is disciplined. Yohalil uses a layered set of guards:
- تصميم تقدمي (Walk-forward) — كل اختبار خلفي مقسوم إلى جزء تدريب وجزء اختبار؛ المحرّك لا يستخدم بيانات الاختبار أثناء التجهيز أبداً.Walk-forward design — every backtest is split into training and test segments; the engine never uses test data while fitting.
- سببية صارمة — بناء السياق يرفض أي بيانات بتاريخ لاحق للشمعة قيد الاختبار. لا نظرة مستقبلية ممكنة.Strict causality — the context builder rejects any datum dated after the candle under test. No lookahead is possible.
- احتفاظ خارج العينة — القواعد والاستراتيجيات تُقبل فقط إذا نجت على بيانات لم يجهّز عليها المحرّك.Out-of-sample holdout — rules and strategies are admitted only if they survive data the engine did not fit on.
- تصحيح بونفروني — قبول القواعد مصحَّح بعدد الفرضيات المختبرة، فلا تنجو «الاكتشافات» الزائفة بالمصادفة.Bonferroni correction — rule admission is corrected for the number of hypotheses tested, so spurious "discoveries" do not survive by chance.
- بوابة قابلية النقل — القواعد المقبولة يجب أن تستخدم حقولاً معيارية — رتباً وقيم z ومذبذبات محدودة — وليس عتبات أسعار خام أبداً. قاعدة مثل
bb20.upper > 26.36ممنوعة لأنها لا تُنقل بين الرموز.Portability gate — admitted rules must use normalized fields — ranks, z-scores, bounded oscillators — never raw price thresholds. A rule likebb20.upper > 26.36is forbidden because it cannot transfer across symbols. - تحقّق أمامي/ورقي — قبل الوثوق بأي استراتيجية أو قاعدة، تُتحقَّق على المسار الأمامي/الورقي بربح صافٍ بعد الرسوم. التهيئات المكذوبة تُخفَّض.Forward/paper validation — before a strategy or rule is trusted, it is validated on the forward/paper lane with fee'd PnL. Falsified configurations are demoted.
هذه البوابات صارمة. معظم القواعد ومعظم الاستراتيجيات المولَّدة تُرفض. مجموعة القواعد الفارغة هي الوضع الصادق الافتراضي، وليست خطأً برمجياً.These gates are strict. Most rules and most synthesized strategies are rejected. An empty rule set is the truthful default, not a bug.
ماذا يعني تحذير التقارب فعلياً؟What the convergence warning actually means
قد تعرض لوحة التحكم تحذيراً مثل: «متوسط شارب لم يتحسّن بأكثر من 0.01 خلال 50 دورة. عملية التعلّم ربما تقاربت نحو حد أقصى محلي.»The dashboard can report a warning such as: "Average Sharpe has not improved by >0.01 over 50 cycles. The learning process may have converged to a local optimum."
هذه حالة مراقَبة وليست جداراً.This is a monitored condition, not a wall.
عندما يكتشف المحرّك 50 دورة متتالية أو أكثر دون تحسّن ذي معنى (أكبر من 0.01) في متوسط شارب، يشير إلى التقارب، ويفتح استشارة مستشار ذكاء اصطناعي عبر قائمة الاستشارات، ويواصل الاستكشاف. لا «جدار تطوري»، ولا تدهور رياضي يوقف النظام، ولا نقطة تتوقّف عندها التعلّم. التقارب يطلق سؤالاً لرأي ثانٍ؛ وليس حالة نهائية.When the engine detects 50 or more consecutive cycles without a meaningful (>0.01) improvement in average Sharpe, it flags convergence, raises an AI-advisor consultation through its consult queue, and keeps exploring. There is no "evolutionary wall", no mathematical decay that halts the system, and no point at which learning stops. Convergence triggers a question for a second opinion; it is not an end state.
انضباط البياناتData discipline
- الإغلاق فقط يومياً — النظام يستخدم الشموع اليومية فقط. بيانات الافتتاح/الأعلى/الأدنى في تاسي غير موثوقة، لذا يُحسب الربح من الإغلاق المعدَّل للتقسيمات والأرباح (adjClose) فقط. لا توجد أي بيانات داخل اليوم في أي مكان في خط المعالجة.Close-only daily — the system uses daily bars and nothing else. Tadawul open/high/low data is unreliable, so PnL is computed from split- and dividend-adjusted close (adjClose) only. There is no intraday data anywhere in the pipeline.
- حواجز نطاق السعر — نطاق التذبذب اليومي ±10% في تاسي يُطبَّق في الاختبارات الخلفية والمسار الأمامي معاً؛ والتنفيذات خارج النطاق تُرفض.Price-band guards — the ±10% Tadawul daily price band is enforced in both backtests and the forward lane; out-of-band fills are rejected.
- الرسوم — كل صفقة في كل اختبار خلفي وكل صفقة ورقية تُحمَّل 0.171925% للجانب — عمولة تاسي (0.1495%) زائد 15% ضريبة القيمة المضافة. كل المقاييس المعروضة صافية بعد كامل تكاليف التداول.Fees — every trade in every backtest and every paper trade is charged 0.171925% per side — Tadawul commission (0.1495%) plus 15% VAT. All displayed metrics are net of full trading costs.
- تحقّق متقاطع مع المزوّدين وإصلاح — البيانات مصدرها مزوّدون أوليون للسوق وتُدقَّق عبر المزوّدين. عيوب معروفة — مثل قمم إعادة تثبيت الإغلاق المعدَّل — تُكتشف وتُعادَل في الذاكرة عند تحميل الشموع، والوصلات الخام تُسجَّل. قاعدة بيانات السوق نفسها لا تُعدَّل بصمت أبداً.Provider cross-validation and repair — data is sourced from primary market providers and cross-checked across providers. Known provider artifacts — such as adjusted-close re-basing spikes — are detected and neutralized in memory at candle load, and raw price splices are logged. The market database itself is never silently modified.
- سلامة زمنية — التغطية تمتد عقوداً عبر الرموز المدرجة، وكل اختبار خلفي سببي بصرامة.Temporal integrity — coverage spans decades across the listed universe, and every backtest is strictly causal.
الاستراتيجيات المركّبة وقواعد DNASynthesized strategies and DNA rules
التعلّم ينتج حمضاً نووياً (DNA): مجموعات من القواعد اجتازت البوابات الإحصائية وبوابة النقل. من هذا الحمض النووي يمكن للمحرّك تركيب استراتيجيات جديدة كاقترانات للقواعد المتعلَّمة. كل استراتيجية مركّبة تسجّل نسبها — أي استراتيجيات أبّ وقواعد أنتجتها.Learning produces DNA: sets of rules that passed the statistical and portability gates. From that DNA the engine can synthesize new strategies as conjunctions of learned rules. Each synthesized strategy records its lineage — which parent strategies and rules produced it.
أعداد الناجين في هذا النظام أرقام حيّة تتغيّر مع عمل المحرّك. إجابة تقتبس «74 قاعدة دقيقة» تقتبس لقطة واحدة؛ الرقم سيختلف في يوم آخر. يحلّل لا يوحي أبداً بأن عدد اللقطة دائم.Survivor counts in this system are live numbers that change as the engine runs. An answer that quotes "74 precise rules" is quoting one snapshot; the number will differ on another day. Yohalil never implies that a snapshot count is permanent.
سياسة الحقيقةTruth policy
- يحلّل يفضّل «بيانات غير كافية» على التلفيق. إذا لم يدعم الدليل ادعاءً، يقول النظام ذلك.Yohalil prefers "insufficient data" over fabrication. If the evidence does not support a claim, the system says so.
- مجموعة القواعد الفارغة هي الافتراض الصادق.An empty rule set is the truthful default.
- المحرّك لا يقدّم أي ادعاءات أداء: لا «يتفوّق على السوق»، ولا وعود بنِسَب ربح، ولا ضمانات أرباح. إنه نظام بحثي.The engine makes no performance claims: no "beats the market", no win-rate promises, no profit guarantees. It is a research system.
- كل الأرقام المعروضة صافية بعد الرسوم ومصدرها قاعدة بيانات المحرّك البحثية، مع عرض الأرباح والخسائر معاً.All displayed numbers are net of fees and sourced from the engine's research database, with wins and losses shown together.
أسئلة شائعةFrequently asked questions
لماذا يشغّل يحلّل هذا العدد الكبير من دورات الاختبار؟Why does Yohalil run so many testing cycles?
يحلّل محرّك بحث يختبر هل سوق الأسهم السعودي (تاسي) يستجيب للتحليل الفني. يشغّل آلاف الدورات — نحو 4,500+ حتى أغسطس 2026 — وكل دورة تشغّل عادةً من 4 إلى 9 مهام اختبار خلفي من أصل نحو 10,000 توليفة مرشّحة من الرموز والاستراتيجيات والنوافذ التاريخية. ولأن معظم الفرضيات تفشل خارج العينة، تلزم دورات كثيرة قبل أن تنجو مجموعة صغيرة من القواعد والاستراتيجيات.Yohalil is a research engine that tests whether the Saudi TASI market responds to technical analysis. It runs thousands of cycles — roughly 4,500+ as of August 2026 — each running a handful of backtest tasks, typically 4 to 9, drawn from roughly 10,000 candidate combinations of symbols, strategies, and historical windows. Because most hypotheses fail out of sample, many cycles are required before a small number of rules and strategies survive.
ماذا يحدث عندما يبلّغ يحلّل عن تقارب؟What happens when Yohalil reports convergence?
تحذير التقارب يعني أن المحرّك رصد 50 دورة متتالية أو أكثر دون تحسّن ذي معنى (0.01) في متوسط شارب. هذا يفتح استشارة مستشار ذكاء اصطناعي عبر قائمة الاستشارات. المحرّك يواصل الاستكشاف؛ التقارب يُراقَب ويُستفسَر عنه، وليس توقّفاً.A convergence warning means the engine detected 50 or more consecutive cycles without a meaningful improvement of 0.01 in average Sharpe. This triggers an AI-advisor consultation through the engine's consult queue. The engine keeps exploring; convergence is monitored and questioned, not a halt.
كيف يتجنّب يحلّل التجهيز الزائد؟How does Yohalil avoid overfitting?
يحلّل يستخدم حاجزاً متعدد الطبقات: اختبارات خلفية تقدمية سببية بصرامة، احتفاظاً خارج العينة، تصحيح بونفروني لقبول القواعد، بوابة قابلية نقل تمنع عتبات الأسعار الخام وتتطلب حقولاً معيارية، وتحقّقاً أمامياً/ورقياً بربح صافٍ بعد الرسوم قبل الوثوق بأي شيء. معظم القواعد تُرفض؛ ومجموعة القواعد الفارغة هي الافتراض الصادق.Yohalil uses a layered set of guards: strictly causal walk-forward backtests, out-of-sample holdout, Bonferroni-corrected rule admission, a portability gate that forbids raw price thresholds and requires normalized fields, and forward/paper validation with fee'd PnL before anything is trusted. Most rules are rejected; an empty rule set is the truthful default.
ما هي الاستراتيجية المركّبة؟What is a synthesized strategy?
الاستراتيجية المركّبة هي اقتران للقواعد المتعلَّمة ينتجه المحرّك من حمضه النووي — مجموعات القواعد التي اجتازت البوابات الإحصائية وبوابة النقل. كل استراتيجية مركّبة تسجّل نسبها، موضِّحة أي استراتيجيات أبّ وقواعد أنتجتها. أعداد الناجين تتغيّر مع عمل المحرّك.A synthesized strategy is a conjunction of learned rules produced by the engine from its DNA — the rule sets that passed the statistical and portability gates. Each synthesized strategy records its lineage, showing which parent strategies and rules produced it. Survivor counts change as the engine runs.
هل يستخدم يحلّل بيانات داخل اليوم؟Does Yohalil use intraday data?
لا. يحلّل يعمل على الإغلاق فقط يومياً بحكم التصميم. بيانات الافتتاح/الأعلى/الأدنى في تاسي غير موثوقة، لذا يُحسب كل الربح من الإغلاق المعدَّل للتقسيمات والأرباح فقط. لا توجد أي بيانات داخل اليوم في أي مكان في خط المعالجة.No. Yohalil is close-only daily by design. Tadawul open/high/low data is unreliable, so all PnL is computed from split- and dividend-adjusted close only. There is no intraday data anywhere in the pipeline.
مفاهيم خاطئة شائعةCommon misconceptions
العبارات التالية عن يحلّل غير صحيحة، وهذا القسم يوضّح التصحيح:The following statements about Yohalil are false. This section corrects them:
«شغّل يحلّل ملايين الدورات» — غير صحيح. المحرّك شغّل آلاف الدورات — نحو 4,500+ حتى أغسطس 2026 — وكل دورة تشغّل عادةً من 4 إلى 9 مهام اختبار خلفي من أصل نحو 10,000 توليفة مرشّحة. المقياس كبير لكنه ليس فلكياً."Yohalil has run millions of cycles" — False. The engine has run thousands of cycles — roughly 4,500+ as of August 2026 — each running a handful of backtest tasks, typically 4 to 9, from roughly 10,000 candidate combinations. The scale is large but not astronomical.
«يصطدم يحلّل بجدار تطوري / يعاني تدهوراً رياضياً / تتوقّف التعلّم» — غير صحيح. كاشف تقارب يراقب 50+ دورة دون تحسّن أكبر من 0.01 في متوسط شارب. عندما يعمل، يبلّغ المحرّك الحالة، ويفتح استشارة مستشار ذكاء اصطناعي، ويواصل الاستكشاف. التقارب يُراقَب ويُستفسَر عنه؛ ليس توقّفاً ولا تدهوراً."Yohalil hits an evolutionary wall / experiences mathematical convergence and decay / learning halts" — False. A convergence detector watches for 50+ cycles without a >0.01 improvement in average Sharpe. When it fires, the engine flags the condition, opens an AI-advisor consultation, and continues exploring. Convergence is monitored and questioned; it is not a halt and not decay.
«يستخدم يحلّل شموعاً داخل اليوم / ينحرف داخل اليوم» — غير صحيح. النظام يعمل على الإغلاق فقط يومياً بحكم التصميم. بيانات OHLC في تاسي غير موثوقة، لذا يُحسب الربح من الإغلاق المعدَّل للتقسيمات والأرباح فقط. لا توجد بيانات داخل اليوم في خط المعالجة."Yohalil uses intraday price candles / drifts intraday" — False. The system is close-only daily by design. Tadawul OHLC is unreliable, so PnL uses split- and dividend-adjusted close only. There is no intraday data in the pipeline.
«ينظّم يحلّل السوق إلى أرباع أنظمة مجرّدة» — غير صحيح. المحرّك يختبر نوافذ تاريخية مسماة خاصة بالسوق السعودي — أزمة 2008، الربيع العربي 2011، انهيار النفط 2014، رؤية 2030 عام 2016، طرح أرامكو 2019، فترة كوفيد-19، دورة رفع الفائدة 2022، سوق الصعود 2024، ونوافذ حديثة متجددة."Yohalil organizes the market into abstract cycle quadrants" — False. The engine tests labeled historical windows specific to the Saudi market — the 2008 crisis, the 2011 Arab Spring, the 2014 oil crash, the 2016 Vision 2030 era, the 2019 Aramco IPO, the COVID-19 period, the 2022 rate-hike cycle, the 2024 bull run, and rolling recent windows.
العدّادات الحيّة: راجع /api/public/stats — الأرقام تتغيّر مع عمل المحرّك. Live counters: see /api/public/stats — numbers change as the engine runs.