R كران الفوركس
البيانات المالية يمكن الوصول إليها من R - الجزء الثالث.
جئت عبر مصدر جديد من البيانات التي أعتقد أنها تستحق حقا تقاسم: ثينكنوم. أنه يجمع حوالي 2000 مصادر البيانات ولكن الأهم من ذلك أنه يسمح للمستخدم لمعالجة هذه البيانات عن طريق وظائف والرسومات وهناك حزمة R المتاحة على كران. يمكن للقراء المهتمين العثور على وظيفة جيدة جدا استكشاف بعض من وظائف هنا.
ياهو: أسعار الأسهم الحرة، والأخبار حتى الآن، والموارد إدارة المحافظ، وبيانات السوق الدولية، لوحات الرسائل، ومعدلات الرهن العقاري التي تساعدك على إدارة حياتك المالية فريد: تحميل، الرسم البياني، وتتبع 149،000 سلسلة الوقت الاقتصادي من 59 مصادر اواندا: العملة المعلومات والأدوات والموارد للمستثمرين والشركات والمسافرين جوجل: أسعار السوق المالية، والأخبار، وتحويلات العملات & أمبير؛ المزيد كواندل: أسعار العقود الآجلة، يوميا. كواندل هو محرك بحث للبيانات الرقمية. الموقع يوفر الوصول إلى عدة ملايين من البيانات المالية والاقتصادية والاجتماعية مجموعات ترويفكس: القراد حسب القراد في الوقت الحقيقي وأسعار السوق التاريخية، نظيفة، مجمعة، أسعار تاجر بلومبرغ: الأخبار المالية، أخبار الأعمال، الأخبار الاقتصادية، ونقلت الأسهم، ونقلت الأسواق ، الأسهم المالية، الأسواق المالية، العقود الآجلة للأسهم، التمويل الشخصي، المشورة المالية الشخصية، صناديق الاستثمار المشتركة، الآلات الحاسبة المالية، الأعمال التجارية العالمية، الأعمال التجارية الصغيرة، الاتجاهات المالية، تداول العملات الأجنبية، أخبار التكنولوجيا، بلومبرغ الأخبار المالية وسيط تفاعلي: هي شركة وساطة الخصم عبر الإنترنت في الولايات المتحدة داتاسترم: داتاسترم المهنية هو أداة قوية يدمج البحوث الاقتصادية والاستراتيجية مع تحليل الأصول عبر لتحقيق بسلاسة معا من أعلى إلى أسفل وأسفل إلى أعلى في واحد، وتطبيق متكامل بوت: يوفر بن الجدول العالمي وحساب الدخل القومي وتحويلها إلى أسعار دولية ل 189 بلدا / إقليما لبعض أو جميع البلدان من السنوات 1950-2018 ثينكنوم: ثينكنوم يجلب البيانات المالية من مجموعة متنوعة من المصادر المفيدة معا على منصة واحدة. نحن نستخدم هذه البيانات لتطوير التطبيقات.
كوانتمود: تحديد وبناء وتداول وتحليل استراتيجيات التداول المالية الكمية كواندل: تتفاعل هذه الحزمة مباشرة مع أبي كواندل لتقديم البيانات في عدد من التنسيقات القابلة للاستخدام في R، فضلا عن القدرة على تحميل والبحث تفكس: يربط R إلى ترويفكس (تم) للتدفق الحر في الوقت الحقيقي والتاريخية القراد عن طريق القراد بيانات السوق لمعدلات صرف العملات الأجنبية بين البنوك قابلة للتداول مع تفاصيل ميلي ثانية واحدة ربج: مقابض جلب البيانات من تطبيق البيانات المالية بلومبرغ إبروكرز: يوفر R الوصول الأصلي إلى وسطاء التفاعلية المتداول محطة العمل أبي رداتاستريم: رداتاستريم هو واجهة R إلى أبي طابعات طومسون داتاوركس سواب (غير حرة)، مع بعض وظائف الراحة لاسترداد البيانات داتاسترم على وجه التحديد. هذه الحزمة تتطلب بيانات اعتماد صالحة ل أبي بوت: يوفر بين وورد الجدول تعادل القوة الشرائية وحسابات الدخل القومي تحويلها إلى الأسعار الدولية ل 189 بلدا / إقليما لبعض أو كل السنوات 1950-2018 فيمبورت: رمتريكس هو رئيس الوزراء البرمجيات مفتوحة المصدر حل لتعليم وتدريب التمويل الكمي. فيمبورت هو حزمة لاستيراد البيانات الاقتصادية والمالية ثينكنم: هذه الحزمة تتفاعل مباشرة مع أبي ثينكنوم لتقديم البيانات في عدد من الأشكال التي يمكن استخدامها في R.
و التاجر R.
استخدام R والأدوات ذات الصلة في التمويل الكمي.
الحفاظ على قاعدة بيانات لملفات الأسعار في R.
القيام بالبحث الكمي ينطوي على الكثير من البيانات الطحن واحد يحتاج إلى بيانات نظيفة وموثوق بها لتحقيق ذلك. ما هو مطلوب حقا هو البيانات النظيفة التي يمكن الوصول إليها بسهولة (حتى من دون اتصال بالإنترنت). وكانت الطريقة الأكثر فعالية للقيام بذلك بالنسبة لي للحفاظ على مجموعة من ملفات كسف. من الواضح أن هذه العملية يمكن التعامل معها في نواح كثيرة ولكن وجدت العمل الإضافي فعالة جدا وبسيطة للحفاظ على الدليل حيث يمكنني تخزين وتحديث ملفات كسف. لدي ملف كسف واحد لكل أداة ويسمى كل ملف بعد الصك أنه يحتوي على. والسبب في ذلك هو شقين: أولا، لا أريد تحميل البيانات (السعر) من ياهو، غوغل وغيرها & # 8230؛ في كل مرة أريد أن اختبار فكرة جديدة ولكن الأهم من ذلك مرة واحدة حددت وتحديد المشكلة، وأنا لا تريد أن تفعل ذلك مرة أخرى في المرة القادمة أنا بحاجة إلى نفس الأداة. بسيطة لكنها فعالة جدا حتى الآن. يتم تلخيص العملية في الرسم البياني أدناه.
في كل ما يلي، أفترض أن البيانات تأتي من ياهو. يجب تعديل الشفرة للبيانات من غوغل، كواندل إتك & # 8230؛ وبالإضافة إلى ذلك أقدم عملية تحديث بيانات الأسعار اليومية. سيكون الإعداد مختلفا عن بيانات التردد الأعلى والنوع الآخر من مجموعات البيانات (أي مختلف عن الأسعار).
1 & # 8211؛ تنزيل البيانات الأولية (listOfInstruments. R & HistoryData. R)
ملف listOfInstruments. R هو ملف يحتوي فقط على قائمة بجميع الصكوك.
إذا لم يكن أحد الأدوات جزءا من قائمتي (أي ملف كسف في مجلد البيانات) أو إذا قمت بذلك للمرة الأولى، عليك تنزيل مجموعة البيانات التاريخية الأولية. المثال أدناه ينزل مجموعة من صناديق المؤشرات المتداولة يوميا من ياهو فينانس إلى يناير 2000 وتخزين البيانات في ملف كسف.
2 & # 8211؛ تحديث البيانات الموجودة (updateData. R)
يبدأ رمز أدناه من الملفات الموجودة في مجلد مخصص وتحديث كل منهم واحدا تلو الآخر. أنا عادة تشغيل هذه العملية كل يوم إلا عندما أنا & # 8217؛ م في عطلة. لإضافة أداة جديدة، ببساطة تشغيل الخطوة 1 أعلاه لهذا الصك وحده.
3 & # 8211؛ إنشاء ملف دفعي (updateDailyPrices. bat)
جزء مهم آخر من المهمة هو إنشاء ملف دفعي يقوم بأتمتة عملية التحديث أعلاه (I & # 8217؛ م مستخدم ويندوز). هذا يتجنب فتح R / رستوديو وتشغيل التعليمات البرمجية من هناك. يتم وضع التعليمات البرمجية أدناه على ملف بت. (يجب تعديل المسار مع إعداد القارئ & # 8217؛ s). لاحظ أنني أضفت ملف الإخراج (updateLog. txt) لتتبع التنفيذ.
العملية المذكورة أعلاه بسيطة للغاية لأنها تصف فقط كيفية تحديث بيانات الأسعار اليومية. أنا & # 8217؛ لقد تم استخدام هذا لفترة من الوقت، وأنها كانت تعمل بسلاسة جدا بالنسبة لي حتى الآن. للحصول على بيانات أكثر تقدما و / أو ترددات أعلى، يمكن للأشياء الحصول على أكثر صعوبة.
كالمعتاد أي تعليقات موضع ترحيب.
28 تعليقات.
يعيشون بشكل خطير، إذن؟
إذا فشلت خطوة دت = ربيند (البيانات، الأخيرة) لسبب ما (عدة أسباب قد يحدث هذا، على سبيل المثال، فشل جيتسيمبولس ()) ثم دت = نول ستستبدل ملف البيانات بالكامل.
I & # 8217؛ d يوصي على الأقل بإضافة خطوة الأرشفة قبل التحميل في البيانات.
إذا كان لديك الوقت / الميل، قاعدة بيانات فعلية (على سبيل المثال ميسكل / سكليت / الوصول) يمكن أن تكون ذات فائدة وسهلة بما فيه الكفاية للاندماج في سير العمل R. تشغيل هذا النوع من الشيء كعمل كرون اليومية على لينكس يجعل توقيت أكثر اتساقا أيضا. وأخيرا، سوف دبلر تسلسل جعل الكثير من هذا الرمز أبسط (لا تتردد في الحصول على اتصال لمناقشة).
أنت & # 8217؛ الحق في دت = نول. لم يحدث لي أبدا ولكن هذا خطر من المخاطر. كان ينبغي لي أن أذكر على الأرجح أنني تشغيل عملية منفصلة أن يكرر كل ملفات البيانات يوميا ونعم يمكن أن تضاف إلى التعليمات البرمجية نشرت.
فيما يتعلق ميسكل / سكليت / أسيس أعتقد أنه & # 8217؛ s مبالغة لمثل هذه البيانات بسيطة (حجم منخفض بنية بسيطة جدا). كنت تستخدم سكل مثل دب على نطاق واسع في الماضي، وهناك فائدة حقيقية من استخدام تلك الأدوات فقط عندما تكون البيانات معقدة أو ما قبل المعالجة هناك حاجة / مفيدة هذا ليس هو الحال هنا.
أنا & # 8217؛ ليرة لبنانية تكون سعيدة لإلقاء نظرة على تنفيذ دبلر إذا كنت على استعداد لتقاسمها؟ أنا لم تأخذ من الوقت لإلقاء نظرة حقيقية على هذه الحزمة.
شكرا جزيلا لكم، وهذا هو السوبر مفيدة.
أمران قد تفكر فيهما:
1. paste0 يأتي مفيد، يتجنب سيب = & # 8221؛ & # 8221؛
2. من أجل تجنب النقر على ملف دفعي كل يوم، لماذا لا إعداد مهمة تلقائية في جدولة المهام ويندوز؟ في هذه الحالة يجب إعادة توجيه الإخراج عبر بالوعة: ستاتميثودس / إنتيرفاس / io. html.
شكرا على الاكرامية. لم أعرف & # 8217؛ ر تعرف على لصق 0.
نعم جدولة إمكانية. انها مجرد أن تشغيل ملف. bat هو جزء من روتين اليومي.
كيف يمكنك التعامل مع أرباح الأسهم؟ حاولت شيئا مماثلا ولكن كان مشاكل عندما أصدر الأسهم أرباحا.
على سبيل المثال، على مدى 5 أيام الماضية السعر المعدل هو نفس سعر الإغلاق. ولكن إذا تم توزيع أرباح اليوم، ياهو مع ضبط أن آخر 5 أيام من الأسعار. لذلك ما كنت جمع سوف تكون الآن مختلفة مما لو كنت تحميل سلسلة كاملة اليوم. فقط أتساءل عما إذا كنت تتعامل مع ذلك.
أنا في الواقع تحميل كلا إغلاق الأسعار والأسعار المعدلة. يمكنني استخدام أي من هذه السلسلة اعتمادا على ما أنا & # 8217؛ م القيام به.
[& # 8230؛] الحفاظ على قاعدة بيانات لملفات الأسعار في R [R التاجر] القيام البحوث الكمية ينطوي على الكثير من البيانات الطحن واحد يحتاج إلى بيانات نظيفة وموثوق بها لتحقيق ذلك. ما هو مطلوب حقا هو البيانات النظيفة التي يمكن الوصول إليها بسهولة (حتى من دون اتصال بالإنترنت). وكانت الطريقة الأكثر فعالية للقيام بذلك بالنسبة لي للحفاظ على مجموعة من ملفات كسف. من الواضح أن هذه العملية يمكن التعامل معها في نواح كثيرة ولكن وجدت كفاءة إضافية وبسيطة العمل الإضافي ل [& # 8230؛]
يبدو في البرنامج النصي لملف تحديث البيانات، يتم كتابة ستارتات ستاتديت الخاص بك.
شكرا لك على اكتشاف هذا. لقد غيرتها.
شكرا على رمز المثال الخاص بك!
حصلت على العمل على لينكس مع بعض التعديلات الطفيفة. أنصحك باستخدام file. path لتجميع أسماء الملفات كما في:
وهذا يجعل التعليمات البرمجية أكثر متوافقة.
يجب استخدام وسيطة سيب في read. csv لقراءة ملف إخراج حديقة الحيوان بشكل صحيح كما في:
داتا = read. csv (file. path (ذي باث، إي)، سيب = & # 8221؛ & # 8220؛)
شكرا على البقشيش.
شكرا على وظيفة بالمعلومات. أنا & # 8217؛ لقد تم العمل على هذا المشروع الجانبي ونظركم كان مفيدا جدا. شيء واحد & # 8217؛ كنت أحاول فرزه هو الحصول على & # 8220؛ صالحة & # 8221؛ قائمة رموز الأسهم. سحبها مع وظيفة، ستوكسمبولس، يحصل على قائمة طويلة ولكن الكثير منهم يعود الأخطاء باستخدام جيتسيمبولس. أنا & # 8217؛ م لا تشعر بالقلق إزاء الأخطاء عند هذه النقطة، ولكن تريد أن تجعل بناء قائمة أكثر الآلي. على سبيل المثال، كتبت السيناريو لتوليد قائمة رموز شريط ثم قم بإزالة كافة الرموز الواصلة (مثل الأسهم المفضلة، وما إلى ذلك) ولكن بعض هذه الرموز من خمسة أحرف لا تزال تولد أخطاء عند تشغيل البرنامج النصي لجعل كسف الملفات التي سيتم تخزين بيانات الأسعار. سيكون من المفيد جدا الحصول على الحلقة التي تسحب فحص البيانات لمعرفة ما إذا كان الاستعلام إلى ياهو يعرض بيانات صالحة، وإذا لم يكن ثم حفظ الرمز في مكان آخر (على سبيل المثال، badTickers. csv). هل هناك أي طريقة للقيام بذلك بسهولة؟ I & # 8217؛ ما زال التعلم R ولكن هافن & # 8217؛ ر وجدت الكثير ل & # 8216؛ خطأ في التعامل مع & # 8217؛ مثله. شكرًا لك مرة أخرى!
حل مدمج لطيفة!
قد تحتاج الأسعار المعدلة إلى بعض التكرير: إذا كان السهم يذهب إلى الأرباح السابقة بشكل عام كل الأسعار المعدلة السابقة تتغير. قد يؤدي ذلك إلى حدوث ثغرات في السلسلة المعدلة إذا لم يتم ربط سوى الأسبوعين الأخيرين في النهاية ولم يتم إجراء أية حسابات أخرى للتعديل.
لها النصي الجيد، ولكن updateData. R تحتاج إلى بعض التصحيح، ويبدو أننا بحاجة إلى أن يكون واحد أكثر من أقواس زهرة الإغلاق في نهاية المطاف.
شكرا لك على اكتشاف هذا. أنا & # 8217؛ ليرة لبنانية تعديل التعليمات البرمجية.
كان هذا قطعة مفيدة من التعليمات البرمجية. أيضا في updateData. R، خط رقم. 7 (لوكباك = 60) & أمب؛ 8 (ستارتات = Sys. Date () & # 8211؛ ريسباك) غير مطلوبة إذا قمت بتغيير السطر لا. 20 إلى (من = لاستيستوريكالديت،)
فقط لجعل رمز موجزة.
ثكس على سبيل المثال. عمل عظيم. أنا & # 8217؛ م اتخاذ الخطوات الأولى في R نفسي. كنت أتساءل عما إذا كنت قد نظرت في تحميل ملفات نهاية اليوم (ملف كسف واحد مع جميع الاقتباسات في سوق واحدة) للحفاظ على دب الخاص بك حتى الآن؟ إذا كان لديك للحفاظ على ما يصل إلى تاريخ جميع الاقتباسات على بورصة نيويورك، أميكس & أمب؛ نسداق هذا يعمل بسرعة كبيرة. ويمكن القيام بذلك عن طريق وس / مدك / بوبليك / بادج / 2_3024-NYSE. html ثم ثم & # 8220؛ حفظ إلى زر جدول البيانات & # 8221؛ والتي يمكنك القيام به تلقائيا مع بضعة أسطر من التعليمات البرمجية. بالطبع كنت لا تزال بحاجة لبناء دب التاريخي الخاص بك. ثم لديك دب الكامل تحت تصرفكم.
أنا لم تستخدم هذا ولكن أنا & # 8217؛ ليرة لبنانية إلقاء نظرة على ذلك. يبدو وكأنه نصيحة جيدة!
فكرة عظيمة. أنا دائما ننسى كم من الوقت يستغرق لإزالة النتائج الشاذة الواضح والتعامل مع البيانات المفقودة. بهذه الطريقة يمكنك أن تفعل ذلك مرة واحدة فقط. لدي قائمة طويلة من الدرجات التي أنا & # 8217؛ م مهتمة في وكثير منهم إتفس حيث شريط ليس لديه صلة واضحة مع اسم! أنا & # 8217؛ وأضاف الرمز التالي إلى أسفل البرنامج النصي ليستينسترومنتس الذي يعطيني إطار بيانات لطيفة مع الاسم وكذلك شريط. لسوء الحظ يتم اقتطاع الاسم (31 حرفا) وهو مشكلة مع العديد من صناديق الاستثمار المتداولة ولكن عادة ما يكفي أن أذكر لي ما هو عليه.
I & لوت؛ - باست (ذي إنسترومنتس، كولابس = & كوت؛ + & كوت؛)
stock_info & لوت؛ - read. csv (ورل، هيدر = F)
شكرًا. قد يكون ذلك مفيدا بالنسبة لي أيضا!
شكرا على هذا & # 8211؛ نقطة انطلاق كبيرة بالنسبة لي. هل أنت قادرة على مشاركة التعليمات البرمجية الخاصة بك لكيفية ثم قراءة كل هذه كسف وتحميلها في البيئة R؟ أريد القيام بذلك ثم حساب الارتباطات وبعض المؤشرات. سيتم عرض جميع مشاركاتك الأخرى قريبا & # 8211؛ نعتذر إذا تم نشر هذا بالفعل في مكان ما. شكرًا.
شكرا على مشاركة هذه الشفرة.
سؤال سريع: مع تحديث رمز البيانات الحالي، فقط عن طريق تحديث أحدث يقتبس، لن & # 8217؛ t الأسعار المذكورة أعلاه تكون خاطئة بعد ذلك؟
أردت فقط أن أشكرك صديق، أداة الخاص بك هو مفيد حقا!
Hi..Sorry لقد نشرت هذا التعليق تحت مقالة خاطئة قبل بضع ثوان. يرجى تجاهل ذلك.
شكرا لك على المادة العظيمة. مرة واحدة سؤال حول الحفاظ على ملفات البيانات في ملفات كسف. في حالة الحدث الأسهم مثل سبليت أو توزيع الأرباح البيانات التاريخية سوف تتغير لتعكس الحدث. كيفية اكتشاف هذا وتحديث ملف كسف. يصبح هذا تحديا إذا كان لديك تصحيحات في ملف كسف لديك لتحديث البيانات التاريخية مع بيانات جديدة من ياهو أو أيا كان موقع ويب المصدر.
أنا ما أصف أنا لا ضبط لأنني أريد أن تبقى الأسعار كما كانت لتعكس نتائج التداول الحقيقي. ولكن هذا هو لي فقط الناس الآخرين قد تفعل أشياء مختلفة. في الواقع أنه يعتمد على الكثير من أسلوب التداول الخاص بك / الاستراتيجية.
شكرا لكم على هذه المادة الملهمة. قمت ببعض التغييرات الصغيرة:
* تحميل جميع بيانات المخزون فقط إذا كان مفقود ملف كسف.
* الكتابة فترة الاستعراضات مع التحديثات (داسن & # 8217؛ ر إلحاق)
* يستخدم يوكليديان المسافة من أسعار أدج لتحديد ما إذا كان هناك حاجة لإعادة تحميل جميع الأسعار.
التحليل الفني مع R.
قائمة المحتويات.
في هذا المنصب سنلقي نظرة على كيف يمكن للمتداول استخدام R لحساب بعض مؤشرات التحليل الفني الأساسية. R هو حر مفتوح المصدر بيئة التحليل الإحصائي ولغة البرمجة. وهو متاح لأنظمة التشغيل ويندوز، ماك أوس، وأنظمة التشغيل لينكس. التثبيت سهل وسريع. لتحميل وتثبيت تعليمات انتقل إلى: cran. r-بروجيكت.
عند تطوير إستراتيجية تداول، من المفيد أن تكون قادرا على تحليل البيانات وتصورها، وأن تكون قادرة على اختبار قواعد توليدك التجاري واختلافاتها ونماذجها بسرعة وبحد أدنى من الدوران. في حين أن العديد من منصات التداول، مثل وسطاء التفاعلية، وما إلى ذلك. توفير الوصول إلى البيانات التاريخية عن طريق أبي أو ملف مستقيم تحميل & # 8211؛ تحليل أن البيانات واستراتيجيات التداول النماذج الأولية غالبا ما يتطلب كتابة مئات من خطوط التعليمات البرمجية في لغات البرمجة مثل جافا أو C ++، أو كتابة الصيغ المعقدة صعبة الاختبار في إكسيل. وهذا يتطلب استثمار وقت كبير، بغض النظر عن كيفية مبرمج تجربة أنت. وعلى النقيض من ذلك، تسمح لغة برمجة عالية المستوى مثل R أو ماتلاب، إلى جانب بيئات البرمجة التفاعلية الخاصة بهم، لمستخدميها شريحة، الزهر، وتحليل البيانات خلال جزء من الوقت الذي يستغرقه مع C ++ أو C # أو جافا. كمية التعليمات البرمجية المطلوبة لتطوير استراتيجية التداول في R هو عادة أمر من حجم أقل أيضا.
في هذا المثال، سنستخدم ملفا مفصولا بفاصلة بسيط يحتوي على أعمدة أسعار مفتوحة وعالية ومنخفضة وسعر إغلاق (a. k.a. أوهلك)، جنبا إلى جنب مع قيم الحجم والطابع الزمني ل سبي إتف. في هذا المنصب سنوضح كيفية استخدام مكتبة R المجانية لحساب المتوسط المتحرك البسيط (سما)، المتوسط المتحرك الأسي (إما)، بولينجر باند (بباندز)، مؤشر القوة النسبية، ومؤشرات التحليل الفني ماسد. سنقوم إلحاق المؤشرات المحسوبة كأعمدة جديدة لملف المدخلات لدينا بحيث يمكن استخدامها لمزيد من التحليل أو التداول استراتيجية النماذج في إكسيل، R، أو أي برنامج كسف صديقة أخرى حزمة من اختيارك.
تثبيت مكتبة التحليل الفني ل R.
1. لحساب التحليل الفني مع R سنستخدم مكتبة مفتوحة المصدر مجانية تسمى & # 8220؛ تر & # 8221؛ (قواعد التداول الفنية). تتضمن هذه الخطوة تعليمات لتثبيت مكتبة تر، على افتراض أنك قد قمت بالفعل بتثبيت R على جهاز الكمبيوتر الخاص بك. تحتاج هذه الخطوات فقط إلى أن يتم تنفيذها مرة واحدة لكل تركيب R على جهاز كمبيوتر.
لتثبيت المكتبة على جهاز الكمبيوتر:
1) بدء R البيئة على جهاز الكمبيوتر الخاص بك، ثم في القائمة حدد: الحزم & # 038؛ البيانات -> حزمة المثبت.
2) في حزمة نوع المثبت & # 8220؛ تر & # 8221؛ في حقل بحث الحزمة، ثم انقر على & # 8220؛ الحصول على قائمة & # 8221؛ زر.
3) حدد الحزمة & # 8220؛ تر & # 8221؛ وانقر على & # 8220؛ تثبيت المحدد & # 8221 ؛.
تحميل البيانات التاريخية (الإدخال)
لأغراض العرضية سوف نستخدم الأسعار التاريخية اليومية ل سبي إتف من سبتمبر 2018 حتى مايو 2018. انقر هنا لتحميل ملف البيانات. تم إنشاء ملف الإدخال هذا المثال باستخدام يب تنزيل البيانات التاريخية.
2. ونحن سوف نبدأ من خلال فتح R قذيفة وتحميل مكتبة "تر"، وهو امتداد R الحرة التي تحتوي على وظائف لحساب بعض المؤشرات الأكثر شيوعا.
3. الخطوة التالية هي استيراد ملف البيانات لدينا مع الأسعار التاريخية إلى R البيئة. سوف نقوم بتحميل البيانات من نموذج ملف كسف إلى البيئة R وتخزينه "إطار البيانات"، والتي R نوع متغير لتخزين البيانات في شكل جدول في الذاكرة.
لعرض الصفوف القليلة الأولى من جدول "البيانات":
يعرض هذا بشكل افتراضي أول 6 صفوف من البيانات جنبا إلى جنب مع أسماء الأعمدة (رأس الجدول). لمعرفة عدد الصفوف الموجودة في جدول "البيانات":
هذا يدل على أن لدينا 187 سجلات البيانات في ملف البيانات سبي، ل 187 أيام التداول بين 3 سبتمبر 2018 & # 8211؛ 31 مايو 2018.
يمكننا أيضا إدراج أسماء عمود الجدول باستخدام وظائف "كولنامس" كما يلي:
المتوسطات المتحركة.
4. دعونا الآن حساب المتوسط المتحرك البسيط لمدة 20 يوما (سما) من عمود سعر الإغلاق باستخدام وظيفة R لمكتبة تر "سما":
الآن، دعونا نرى القيم 50 الأولى من مجموعة "sma20":
هنا استخدمنا الدالة سما من مكتبة تر التي قمنا بتحميلها أعلاه، ونقولها لحساب متوسط 20 يوما (قيمة المعلمة "n")، من عمود "كلوز" من بيانات "إطار البيانات". ترجع الدالة صفيف قيم سما وتخزينها في متغير جديد يسمى "sma20".
يمكنك إحضار المساعدة مع وصف تفصيلي للدالة وانها المعلمات المستخدمة؟ تليها اسم الوظيفة، على النحو التالي. من المفيد دائما قراءة صفحات المساعدة للوظائف التي تستخدمها، حيث أنها ستدرج جميع المعلمات الاختيارية التي يمكنك استخدامها لضبط الإخراج. أيضا، العديد من الوظائف لديها الاختلافات أو الوظائف ذات الصلة، والتي يمكن أن تكون مفيدة في مختلف الظروف وسيتم سرد في صفحة المساعدة.
5. حساب المتوسط المتحرك الأسي هو سهل بالمثل، ومجرد استخدام وظيفة مختلفة، وهذه المرة إما (). لاحظ أننا نحسب إما لمدة 14 فترة.
البولنجر باند.
6. لحساب مؤشر بولينجر باند نستخدم وظيفة بباندز. هناك عدد من المعلمات الاختيارية التي يتطلبها الأمر، لذلك سنقدم أمثلة عديدة. في المثال أدناه، ندعو بباندس بتمريرها "بيانات" فريم داتا فريم مع طلب بحث يحدد أننا نريد استخدام قيم من عمود "كلوز"، تماما كما كنا نفعل أعلاه لحسابات سما و إما أعلاه. المعلمة الثانية 'سد' يأخذ عدد الانحرافات القياسية للنطاقات العليا والسفلى. نظرا لأننا لا نمر بقيمة 'n' & # 8211؛ تستخدم بباندس المتوسط المتحرك لمدة 20 فترة افتراضيا. يحتوي الإخراج على عدة أعمدة: 'دن' للنطاق "السفلي" و "مافغ" للمتوسط المتحرك و "أوب" للنطاق "العلوي" و بتب الذي يحدد السعر الأمني بالنسبة إلى الأعلى و وانخفاض بولينجر باند، وصفا مفصلا له يمكن العثور عليها هنا.
٪ B تساوي 1 عندما يكون السعر في النطاق الأعلى٪ B يساوي 0 عندما يكون السعر في النطاق الأدنى٪ B أعلى من 1 عندما يكون السعر فوق النطاق العلوي٪ B أقل من 0 عندما يكون السعر أدنى من النطاق الأدنى٪ B أعلى .50 عندما يكون السعر فوق النطاق المتوسط (سما 20 يوما)٪ B أقل من 0.50 عندما يكون السعر أقل من النطاق الأوسط (سما 20 يوما)
> bb20 = بباندس (داتا، سد = 2.0)
6.1 نرغب الآن في إنشاء إطار بيانات جديد يحتوي على جميع بيانات الإدخال من البيانات & # 8216؛ & # 8217؛ الإطار، بالإضافة إلى البيانات بولينجر باند نحن حساب فقط.
تأخذ الدالة data. frame () أي عدد من إطارات البيانات وتنضم إليها في صف بيانات جديد، بحيث تكون العناصر من الصفوف المقابلة "مرتبطة" معا في النتيجة.
6.2 بولينجر باندز بلوت:
> لينس (داتابلوسبب $ كلوز، كول = & # 8216؛ ريد & # 8217؛)
> لينس (داتابلوسبب $ أوب، كول = & # 8216؛ بيربل & # 8217؛)
> لينس (داتابلوسبب $ دن، كول = & # 8216؛ براون & # 8217؛)
> لينس (داتابلوسبب $ مافغ، كول = & # 8216؛ بلو & # 8217؛)
6.3 وبدلا من ذلك، يمكننا أن نحدد بوضوح أي نوع من المتوسط المتحرك ينبغي أن يستخدم كأساس لبولينجر باندز باستخدام معلمة الدالة 'ماتيب'، التي تأخذ ببساطة اسم الدالة المتوسطة المتحركة. يرجى الرجوع إلى صفحة مساعدة سما للاطلاع على أنواع مختلفة من المتوسطات المتحركة المدعومة في مكتبة تر. على سبيل المثال، إذا كنت ترغب في حساب إما بولينجر باند، يمكنك تمرير إما إلى ماتيب. لاحظ أننا تجاوزنا في هذا المثال معامل الطول الافتراضي للمتوسط المتحرك، باستخدام متوسط 14 فترة هذه المرة.
> ببيما = بباندس (داتا، سد = 2.0، n = 14، ماتيب = إما)
رسي & # 8211؛ مؤشر القوة النسبية.
7. مؤشر القوة النسبية. لحساب رسي نستخدم الدالة رسي (). يمكنك استخدام الأمر رسي في R شل للحصول على تفاصيل عن معلمات الدالة. في الأساس، انها مشابهة جدا للوظائف التي استخدمناها أعلاه لتوليد المتوسطات المتحركة. يحتوي على معلمتين مطلوبتين: سلسلة زمنية (مثل عمود "كلوز" من إطار بيانات "البيانات"، و "n" قيمة صحيحة ل "طول" مؤشر رسي.
> rsi14 = رسي (داتا، n = 14)
هنا المعلمة الأولى إلى وظيفة رسي هي: البيانات، وهو عبارة تقول "اتخاذ عمود اسمه 'إغلاق' من جدول 'البيانات'، وإعادته كقائمة من القيم، والمعلمة الثانية هي ن = 14، حيث فإن اسم المعلمة هو 'n'، وتشير القيمة 14 إلى أننا نريد حساب قيم مؤشر القوة النسبية ل 14 يوما على أسعار الإغلاق.
8. تأخذ وظيفة ماسد عدة حجج:
(مثل سعر "إغلاق") عدد الفترات الزمنية للمتوسط المتحرك "السريع" لفترات "المتوسط البطيء" للمتوسط المتحرك للفترات لخط "الإشارة".
يمكنك أيضا اختياريا تحديد متوسط الحركة المتحركة التي تريد استخدامها لمتوسطات متحركة ماسد. انظر لقطة شاشة لصفحة المساعدة أدناه (يمكنك أيضا استخدام الأمر ماسد في R شل لفتح صفحة المساعدة بنفسك):
دعونا حساب معيار (12،26،9) مؤشر ماسد باستخدام هذه الوظيفة. سنستخدم متوسطات متحركة بسيطة بسيطة، لذلك سنحدد دالة سما في المعلمة "ماتيب":
> ماسد = ماسد (داتا، نفاست = 12، نسلو = 26، نسيغ = 9، ماتيب = سما)
الانضمام إلى جميع البيانات معا.
9 - وننضم الآن إلى جميع المؤشرات المحسوبة أعلاه مع بيانات المدخلات الأصلية في إطار بيانات واحد:
تأخذ الدالة data. frame () أي عدد من إطارات البيانات وتنضم إليهم من الصفوف، بحيث تكون العناصر من الصفوف المقابلة "لصقها" معا في البيانات data. frame 'ألداتا' الناتجة.
الكتابة إلى ملف نصي.
وأخيرا، نكتب محتويات إطار البيانات "ألداتا" إلى ملف قيم مفصولة بفواصل. نستخدم الدالة write. table ()، التي تحتوي على عدد كبير من المعلمات الاختيارية. صفحة مساعدة مفصلة متاحة باستخدام الأمر "؟ write. table" في R قذيفة.
> write. table (ألداتا، فيل = "spy_with_indicators. csv"، نا = ""، سيب = "،"، row. names = فالس)
عند استدعاء الدالة write. table () نقوم بتمرير الوسيطات التالية:
ألداتا & # 8211؛ هذا هو مجرد إشارة إلى إطار البيانات التي تحتوي على بيانات ليتم كتابتها إلى ملف الإخراج. فيل = "& # 8230؛" & # 8211؛ هذا هو مسار واسم الملف الذي نقوم بإنشائه. نا = "" & # 8211؛ تأكد من أن الخلايا في إطار البيانات التي تحتوي على قيمة R "نا" سوف تحتوي على قيم فارغة في ملف الإخراج. تحتوي بعض الخلايا على نا للصفوف حيث لا توجد بيانات كافية لإنشاء قيمة مؤشر مقابلة (على سبيل المثال أول 19 صفا ل سما لمدة 20 يوما). سيب = "،" & # 8211؛ تعيين فاصل العمود إلى فاصلة (ومن ثم ملف قيم مفصولة بفواصل). لإنشاء ملف مفصول بعلامة تبويب (تنسيق مفضل حقا لأنظمة برمجيات خطيرة) & # 8211؛ وس: سيب = "\ t". row. names = فالس & # 8211؛ من المهم تعيين هذه القيمة، وإلا فإن العمود الأول في ملف الإخراج تحتوي على أرقام الصف.
الملف الناتج متاح هنا. انقر بزر الماوس الأيمن وحدد & # 8220؛ حفظ الملف المرتبط باسم ... & # 8221؛ يمكن فتح الملف الذي تم تنزيله في إكسيل أو محرر نصوص.
10. هناك المزيد من الوظائف والميزات المتوفرة في مكتبة "تر". يمكنك معرفة المزيد من خلال رفع صفحة المساعدة تر:
استنتاج.
R يوفر بيئة مريحة وتنوعا لتحليل البيانات والحسابات. بالإضافة إلى الآلاف من المصادر الإحصائية المجانية والمكتبات الرياضية والخوارزميات، يحتوي R على عدد كبير من الوظائف والمكتبات لقراءة وكتابة البيانات من وإلى الملفات وقواعد البيانات وعناوين المواقع وخدمات الويب وغيرها ... وهذا، جنبا إلى جنب مع موجزة من اللغة، هو مزيج قوي يمكن أن تساعد التجار توفير الوقت الثمين. يمكن للتجار خفض كبير في الوقت اللازم لاستراتيجيات التداول النموذجي و باكتست باستخدام R. وهناك أيضا أساليب لدمج R مع لغات البرمجة السائدة مثل جافا و C ++. لا تتردد في نشر تعليق أو إرساله كرسالة عبر نموذج الاتصال بنا إذا كانت لديك أية أسئلة بخصوص هذه المادة.
أخيرا، نحن & # 8217؛ d نود أن نذكر بضعة الكتب التي كانت مفيدة جدا في جهودنا التنمية. الكتاب الأول & # 8211؛ & # 8220؛ التداول الكمي مع R & # 8221؛ هو مزيج كبير من تحليل البيانات المالية رؤى وتطبيق R إلى باكتستينغ، واستكشاف البيانات، والتحليل. لديها عدد من الأمثلة رمز عظيم ويذهب على عدد من حزم R مفيدة. هذا هو جيد مقدمة إلى المستوى المتوسط كتاب للأشخاص الذين يرغبون في بناء و باكتست استراتيجيات التداول الخاصة بهم.
الكتاب الثاني & # 8211؛ & # 8220؛ إتقان R للتمويل الكمي & # 8221؛ & # 8211؛ هو جوهرة حقيقية. أنه يحتوي على معلومات أكثر تقدما للتجار مع فهم جيد للأدوات المشتقات والخلفية الرياضية أقوى. وجدنا أن هذا الكتاب هو متابعة كبيرة ل & # 8220؛ التداول الكمي مع R & # 8221؛. بالإضافة إلى عينات رمز R كبيرة والحزم أنه يحتوي على نظرة عامة على عدد من نماذج التمويل الكمي المتقدمة (والعملية!) والخوارزميات، ويتيح لك الحصول على قدميك الرطب مع رمز R على الفور.
8 تعليقات على & لدكو؛ التحليل الفني مع r & رديقو؛
ملصق ممتاز! شكرا لكم.
1) يمكنك استخدام البيانات التي تم تنزيلها لجعل الرسوم البيانية، مع مؤشرات أو مؤشرات التذبذب؟
2) يمكن استخدام معايير أخرى لقياس الشاشة للمرشحين المناسبين؟ لا أر & # 8217؛ ر تريد ألف الأسهم للتفتيش.
3) هل هذا هو شاشة البحث أو الأسهم يجب إدخالها يدويا؟
4) سيتم تحديث جميع معايير البحث تلقائيا؟
5) مليون أسئلة أخرى، ولكن هذه تبدو الأكثر أهمية في هذا الوقت.
لقد فعلت الجحيم من وظيفة القيام بكل هذا العمل.
هل هناك احتمال أن كنت قد قمت بتعديل بضعة أشياء في الماكد؟
نعم، يمكنك بالتأكيد مؤامرة أي سلسلة زمنية البيانات في R، بما في ذلك المؤشرات، وبالمثل ل بولينجر باندز مؤامرة مثال في منصبي.
نجاح باهر هذا هو حقا أفضل بكثير من الكثير من الاشياء الأخرى لقد قرأت تحاول أن نفهم كيفية بناء منصة التداول الخاصة بي يمكن أن يكون السيطرة على. سيكون كبيرا إذا كان هناك دليل اختبار الظهر كذلك.
شكرا لكم! أنا & # 8217؛ ليرة لبنانية تكون سعيدة لمناقشة باكتستينغ والإجابة على أسئلتك إذا كنت ترك لي خط عبر نموذج الاتصال بنا على اليمين.
شكرا لك على مشاركة الرابط إلى صفحة البرنامج التعليمي، آخر تثقيفية هنا بالمناسبة!
هل من الممكن بالنسبة لي لإنشاء بلدي مؤشر مخصص واستخدام ذلك مع كوانتمود؟
نعم، هل لديك متطلبات مؤشر مخصص؟ يمكننا مساعدتك مع التنمية.
دعم المهوسون الدعم.
ترك الرد إلغاء الرد.
يب تنزيل البيانات.
آي بي داتا دونلوادر الإصدار 3.3 متوفر الآن! تحميل البيانات التاريخية من وسطاء التفاعلية. الأسهم، العقود الآجلة، صناديق الاستثمار المتداولة، المؤشرات، الفوركس، خيارات، فوبس. الآن يدعم خيارات تنزيل البيانات التاريخية! يعمل على ويندوز، ماك، لينكس. يعالج تلقائيا يب سرعة أبي الانتهاكات، أي قيود على مدة بسبب القيود سرعة! يدعم البيانات التاريخية للعقود الآجلة منتهية الصلاحية.
يب إكسيل التاجر.
يب إكسيل التاجر الإصدار 1.6 هو متاح الآن! تداول الأسهم، صناديق الاستثمار المتداولة، العقود الآجلة، وفوركس مباشرة من إكسيل. تنفيذ قواعد التداول المخصصة باستخدام الصيغ جداول البيانات أو فبا. قواعد دخول البرنامج لأوامر الخروج الفردية أو بين قوسين. السوق، وقف، والحد، وقف الحد، فضلا عن أوامر ألغو معقدة معتمدة. طلب ورقة سجل (جديد!). يحتوي على قائمة تفصيلية لكل تغيير حالة الطلب في جدول إكسيل قابل للتصفية. استخدام خدمة التخصيص لدينا لتمديد يب إكسيل التاجر وعقد المبرمجين لدينا لتطوير استراتيجيات التداول المخصصة الخاصة بك.
الوسطاء التفاعليون (يب) هو مزود منخفض التكلفة لتنفيذ التجارة وخدمات المقاصة للأفراد والمستشارين والمجموعات التجارية الدعامة والسماسرة وصناديق التحوط. وتتيح التكنولوجيا الأولية التي يقدمها البنك الدولي إمكانية الوصول المباشر إلى الأسهم والخيارات والعقود الآجلة والسوق الأجنبي والسندات والأموال في أكثر من 100 سوق في جميع أنحاء العالم من حساب يب واحد العالمي.
عضو نيس، فينرا، سيبك. زيارة إنتيراكتيفبروكيرز لمزيد من المعلومات.
المشاركات الاخيرة.
اتصل بنا!
تم الارسال.
شكرا لك على الاتصال ترادينغ جيكس. سنرد على رسالتك قريبا. في الوقت نفسه - إذا كان لديك أي أسئلة إضافية - من فضلك لا تتردد في مراسلتنا على البريد الإلكتروني: جهات الاتصال @ ترادينغجيكس.
عذرا، حدثت مشكلة ولم يتم إرسال رسالتك.
يرجى إدخال تفاصيل الاتصال الخاصة بك ورسالة قصيرة أدناه وسوف نقوم بالرد على رسالتك قريبا.
R كران فوريكس
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
كيفية الحصول على أسعار صرف العملات في R.
هل هناك أي حزم / وظائف R للحصول على أسعار الصرف في الوقت الحقيقي، على سبيل المثال. من غوغل فينانس؟ يفضل تجنب ركيورل أو غيرها من المحللين إذا كان هناك شيء بالفعل هناك.
على وجه التحديد، نظرا ناقلات "من" و "إلى" رموز العملة، أود أن أعرف معدلات. شيء مثل:
يمكنك استخدام كوانتمود للحصول على يقتبس ياهو. (لست متأكدا من كيفية تأجيل عروض أسعار ياهو فكس، أو عدد المرات التي يتم تحديثها فيها.)
أو تفكس في الوقت الحقيقي، ميلي ثانية واحدة ونقلت تيمستامبد إذا قمت بالتسجيل للحصول على حساب مجاني. (لاحظ أن عليك استخدام اتفاقية السوق؛ بمعنى الدولار الأمريكي مقابل الين الياباني مقابل الين الياباني / الدولار الأمريكي)
أو إذا كان لديك حساب وسطاء تفاعلي، يمكنك استخدام حزمة إبروكرز، أو حزمة توينسينرومنت بلدي (الذي هو في الأساس مجرد مغلفات لوظائف إبروكرز)
يبدو أن تفكس و كوانتمود لديها وظائف لهذا (بفضلRStudent و @ كفب للحصول على نصائح). فضلت كوانتمود لأنه لم يتطلب إنشاء حساب، ولكن أفيكت ليس هناك متجه الحالية وظيفة لقطة مثل ما أسعى. هذه الوظيفة جيتيكسشانجيراتس يفعل ذلك:
و التاجر R.
استخدام R والأدوات ذات الصلة في التمويل الكمي.
أرشيف ل & # 8216؛ علم البيانات & # 8217؛ الفئة.
تصور بيانات سلسلة الوقت في R.
أنا مسرور جدا أن أعلن بلدي داتاكامب بالطبع على تصور البيانات سلسلة الوقت في R. هذا بالطبع هو أيضا جزء من سلسلة الوقت مع R المهارات المسار. لا تتردد في الحصول على نظرة، والفصل الأول هو حر!
وصف المساقات.
وكما يقول المثل، "الرسم البياني يستحق ألف كلمة". هذا هو السبب في التصور هو الطريقة الأكثر استخداما وقوية للحصول على فهم أفضل للبيانات الخاصة بك. بعد هذا بالطبع سيكون لديك نظرة عامة جيدة جدا من R سلسلة الوقت قدرات التصور، وسوف تكون قادرة على اتخاذ قرار أفضل النموذج الذي يختار للتحليل اللاحق. سوف تكون قادرة على نقل الرسالة التي تريد تسليم بطريقة فعالة وجميلة.
بالطبع مخطط.
الفصل 1: R التصور سلسلة الوقت أدوات.
هذا الفصل سوف أعرض لكم الأساسية R سلسلة الوقت أدوات التصور.
الفصل 2: سلسلة زمنية أحادية المتغير.
وقد صممت األراضي املتعددة املتغريات لتعلم قدر اإلمكان عن التوزيع والتوجه املركزي وانتشار البيانات املتوفرة. في هذا الفصل سوف يتم تقديمك مع بعض الأدوات البصرية المستخدمة لتشخيص سلسلة أحادية المتغيرات.
الفصل الثالث: سلسلة زمنية متعددة المتغيرات.
ماذا تفعل إذا كان لديك للتعامل مع سلاسل زمنية متعددة المتغيرات؟ في هذا الفصل، سوف تتعلم كيفية تحديد أنماط في التوزيع، والاتجاه المركزي وانتشار على أزواج أو مجموعات من البيانات.
الفصل الرابع: دراسة حالة: اختيار بصريا الأسهم التي تحسن المحفظة الحالية.
اسمحوا & # 8217؛ ق وضع كل ما تعلمته حتى الآن في الممارسة العملية! تخيل أنك تملك بالفعل محفظة من الأسهم وكان لديك بعض النقود الاحتياطية للاستثمار، وكيف يمكنك بحكمة اختيار الأسهم الجديدة للاستثمار النقدية الخاصة بك إضافية؟ ويعد تحليل الخصائص الإحصائية للأسهم الفردية مقابل المحفظة القائمة وسيلة جيدة لمعالجة المشكلة.
ربط R إلى إقفيد مع حزمة كوانتولس.
يوفر إقفيد تدفق خدمات البيانات والحلول التجارية التي تغطي السوق الزراعي والطاقة والمالية. بل هو معروف ومعترف به مزود تغذية البيانات الموجهة نحو مستخدمي التجزئة والمؤسسات الصغيرة. يبدأ سعر الاشتراك في حوالي 80 $ / الشهر.
وقد وضعت ستانيسلاف كوفاليفسكي حزمة تسمى كوانتولس. بل هو حزمة في كل واحدة تهدف إلى تعزيز النمذجة التداول الكمي. فإنه يسمح لتحميل وتنظيم بيانات السوق التاريخية من مصادر متعددة مثل ياهو، جوجل، فينام، موكس و إكيفيد. الميزة التي تهمني أكثر هي القدرة على ربط إكفيد ل R. أنا & # 8217؛ لقد تم استخدام إكفيد لبضع سنوات وأنا & # 8217؛ م سعيد معها (أنا & # 8217؛ م لا ينتمي إلى الشركة في أي الطريق). ويمكن الاطلاع على مزيد من المعلومات هنا. أنا & # 8217؛ كنت تبحث عن التكامل داخل R لفترة من الوقت وهنا هو. ونتيجة لذلك، بعد أن ركضت بعض الاختبارات، انتقلت التعليمات البرمجية التي كانت لا تزال في بيثون إلى R. مجرد اكتمال، وهنا & # 8217؛ ق رابط يشرح كيفية تحميل البيانات التاريخية من إكفيد باستخدام بايثون.
كوانتولس يقدم أربع وظائف رئيسية هي: الحصول على بيانات السوق، مخزن / استرداد بيانات السوق، مؤامرة البيانات سلسلة الوقت والاختبار مرة أخرى.
تأكد أولا من أن إقفيد مفتوح. يمكنك إما تحميل البيانات اليومية أو خلال اليوم. أدناه رمز التنزيلات الأسعار اليومية (المفتوحة، عالية، منخفضة، إغلاق) ل سبي من 1 يناير 2017 إلى 1 يونيو 2017.
أدناه رمز التنزيلات البيانات اللحظية من 1 مايو 2017 إلى 3 مايو 2017.
لاحظ معلمة الفترة. يمكن أن تأخذ أي من القيم التالية: القراد، 1min، 5min، 10min، 15min، 30min، ساعة، يوم، أسبوع، شهر، اعتمادا على التردد الذي تحتاجه.
كوانتولس يجعل عملية إدارة وتخزين بيانات سوق القراد سهلة. كنت فقط الإعداد معلمات التخزين وكنت على استعداد للذهاب. المعلمات هي حيث، منذ التاريخ والرموز التي ترغب في أن يتم تخزينها. في أي وقت يمكنك إضافة المزيد من الرموز وإذا لم تكن موجودة في التخزين، كوانتولس يحاول الحصول على البيانات من تاريخ البدء المحدد. سيقوم الرمز أدناه بحفظ البيانات في الدليل التالي: & # 8220؛ C: / وسرس / أرنو / دوكومينتس / ماركيت داتا / إكفيد & # 8221 ؛. هناك مجلد فرعي واحد من قبل أداة والبيانات هو أفيد في ملفات. rds.
يمكنك أيضا تخزين البيانات بين تواريخ محددة. استبدل السطر الأخير من الشفرة أعلاه بأحد الخيارات التالية.
الآن إذا كنت ترغب في الحصول على العودة بعض البيانات التي قمت بتخزينها، مجرد تشغيل شيء مثل:
لاحظ أن القراد فقط معتمد في التخزين المحلي لذلك يجب أن تكون الفترة & # 8216؛ علامة & # 8217؛
كوانتولس يوفر وظيفة plot_ts لرسم البيانات سلسلة الوقت دون عطلة نهاية الأسبوع، والعطلات والثغرات بين عشية وضحاها. في المثال أدناه، أنا أولا استرداد البيانات المخزنة أعلاه، ثم حدد أول 100 الملاحظات السعر وأخيرا رسم المخطط.
أمران أن نلاحظ: الجاسوس الأول هو كائن data. table وبالتالي بناء الجملة أعلاه. للحصول على لمحة سريعة عن قدرات data. table لها نظرة على هذه الورقة الغش ممتازة من داتاكامب. ثانيا المعلمة المحلية ترو كما يتم استرجاع البيانات من وحدة التخزين الداخلية.
كوانتولس يسمح لكتابة استراتيجية التداول الخاصة بك باستخدام C ++ أبي. أنا & # 8217؛ م لن نتحدث عن هذا لأن هذا هو أساسا C ++ التعليمات البرمجية. يمكنك الرجوع إلى قسم الأمثلة على موقع كوانتولس.
عموما أجد حزمة مفيدة للغاية وموثقة بشكل جيد. الشيء الوحيد المفقود هو تغذية حية بين R و إقفيد والتي سوف تجعل حزمة نهاية حقيقية لإنهاء الحل.
كالمعتاد أي تعليقات موضع ترحيب.
بيرت: الوافد الجديد في اتصال R إكسيل.
قبل بضعة أشهر قارئ يشير لي من هذه الطريقة الجديدة لربط R و إكسيل. أنا لا أعرف كم من الوقت كان هذا حولها، ولكن أنا لم تأتي عبر ذلك وأنا & # 8217؛ لم أر أي مشاركة بلوق أو مقالة حول هذا الموضوع. لذلك قررت أن أكتب وظيفة كأداة حقا يستحق ذلك وقبل أن يسأل أي شخص، أنا & # 8217؛ م لا علاقة للشركة بأي شكل من الأشكال.
يقف بيرت لمجموعة أدوات إكسيل R الأساسية. إنه مجاني (مرخص بموجب غل v2) وقد تم تطويره من قبل ستروتوريد داتا ليك. في وقت كتابة النسخة الحالية من بيرت هو 1.07. ويمكن الاطلاع على مزيد من المعلومات هنا. من منظور أكثر تقنية، تم تصميم بيرت لدعم تشغيل وظائف R من خلايا جداول البيانات إكسل. في عبارات إكسيل، فإنه يتم كتابة المهام التي يحددها المستخدم (أودفس) في R.
في هذا المنصب أنا & # 8217؛ م لن تظهر لك كيف R و إكسيل التفاعل عبر بيرت. هناك دروس جيدة جدا هنا، هنا وهنا. بدلا من ذلك أريد أن تظهر لك كيف استخدمت بيرت لبناء & # 8220؛ برج التحكم & # 8221؛ لتداول بلدي.
يتم إنشاء إشارات التداول الخاصة بي باستخدام قائمة طويلة من الملفات R ولكن أنا بحاجة إلى مرونة إكسيل لعرض النتائج بسرعة وكفاءة. كما هو مبين أعلاه بيرت يمكن أن تفعل هذا بالنسبة لي ولكن أريد أيضا أن خياط التطبيق لاحتياجاتي. من خلال الجمع بين قوة شمل، فبا، R و بيرت يمكنني إنشاء تطبيق جيد حتى الآن قوية في شكل ملف إكسيل مع الحد الأدنى من التعليمات البرمجية فبا. في نهاية المطاف لدي ملف اكسل واحد جمع كل المهام اللازمة لإدارة محفظتي: تحديث قاعدة البيانات، توليد إشارة، تقديم الطلبات الخ & # 8230؛ ويمكن تقسيم نهجي في الخطوات الثلاث التالية:
استخدم شمل لإنشاء قوائم وأزرار محددة من قبل المستخدم في ملف إكسيل. القوائم المذكورة أعلاه وأزرار هي أساسا يدعو إلى وظائف فبا. تلك الوظائف فبا هي التفاف حول وظائف R المعرفة باستخدام بيرت.
مع هذا النهج يمكنني الحفاظ على تمييز واضح بين جوهر بلدي رمز الاحتفاظ بها في R، سكل وبيثون وكل ما يستخدم لعرض وتنسيق النتائج أبقى في إكسيل، فبا & أمب؛ XML. في الأقسام التالية أقدم الشرط الأساسي لتطوير مثل هذا النهج ودليل خطوة بخطوة يوضح كيف يمكن استخدام بيرت لمجرد تمرير البيانات من R إلى إكسيل مع الحد الأدنى من التعليمات البرمجية فبا.
1 & # 8211؛ تحميل وتثبيت بيرت من هذا الرابط. بمجرد اكتمال التثبيت يجب أن يكون لديك قائمة الوظائف الإضافية الجديدة في إكسيل مع الأزرار كما هو موضح أدناه. هذه هي الطريقة التي تحققت بيرت في إكسيل.
2 & # 8211؛ تنزيل وتثبيت محرر واجهة مستخدم مخصص: يسمح محرر واجهة المستخدم المخصص بإنشاء قوائم وأزرار محددة من قبل المستخدم في شريط إكسيل. يتوفر إجراء خطوة بخطوة هنا.
1 & # 8211؛ R كود: وظيفة R أدناه هي قطعة بسيطة جدا من التعليمات البرمجية لأغراض التوضيح فقط. ويحسب ويعيد البقايا من الانحدار الخطي. هذا هو ما نريد استرداد في إكسيل. حفظ هذا في ملف يسمى myRCode. R (أي اسم آخر على ما يرام) في دليل من اختيارك.
2 & # 8211؛ functions. R في بيرت: من إكسيل حدد الوظائف الإضافية - & غ؛ الصفحة الرئيسية الدليل وفتح الملف يسمى functions. R. في هذا الملف قم بلصق التعليمة البرمجية التالية. تأكد من إدراج المسار الصحيح.
هذا هو مجرد مصادر في بيرت ملف R قمت بإنشائه أعلاه. ثم حفظ وإغلاق الملف functions. R. إذا كنت تريد إجراء أي تغيير على ملف R الذي تم إنشاؤه في الخطوة 1 سيكون لديك لإعادة تحميله باستخدام زر بيرت & # 8220؛ تحديث ملف بدء التشغيل & # 8221؛ من القائمة الوظائف الإضافية في إكسيل.
3 & # 8211؛ في إكسيل: إنشاء وحفظ ملف يسمى myFile. xslm (أي اسم آخر على ما يرام). هذا هو ملف تمكين ماكرو الذي تقوم بحفظه في الدليل الذي تختاره. مرة واحدة يتم حفظ الملف إغلاقه.
4 & # 8211؛ افتح الملف الذي تم إنشاؤه أعلاه في محرر واجهة المستخدم المخصصة: بعد فتح الملف، الصق الشفرة التالية.
يجب أن يكون لديك شيء من هذا القبيل في محرر شمل:
أساسا هذه القطعة من رمز شمل يخلق قائمة إضافية (رترادر)، مجموعة جديدة (مجموعتي) وزر تعريف المستخدم (زر جديد) في الشريط إكسيل. بعد الانتهاء من إجراء ذلك، افتح myFile. xslm في إكسيل وأغلق محرر واجهة المستخدم المخصص. يجب أن نرى شيئا من هذا القبيل.
5 & # 8211؛ فتح محرر فبا: في myFile. xlsm إدراج وحدة نمطية جديدة. قم بلصق التعليمة البرمجية أدناه في الوحدة النمطية التي تم إنشاؤها حديثا.
يؤدي ذلك إلى محو النتائج السابقة في ورقة العمل قبل التعامل مع نتائج جديدة.
6 & # 8211؛ انقر فوق زر جديد: الآن عد إلى جدول البيانات وفي القائمة رترادر انقر فوق & # 8220؛ زر جديد & # 8221؛ زر. يجب أن تشاهد شيئا مثل ما يظهر أدناه.
الدليل أعلاه هو نسخة أساسية جدا من ما يمكن تحقيقه باستخدام بيرت لكنه يظهر لك كيفية الجمع بين قوة عدة أدوات محددة لبناء التطبيق المخصص الخاص بك. من وجهة نظري مصلحة هذا النهج هو القدرة على الغراء معا R و إكسيل الواضح ولكن أيضا لتشمل عن طريق شمل (والدفعة) قطعة من التعليمات البرمجية من بايثون، سكل وأكثر من ذلك. هذا هو بالضبط ما كنت بحاجة إليه. وأخيرا أود أن تكون غريبة لمعرفة ما إذا كان أي شخص لديه أي خبرة مع بيرت؟
استراتيجية التداول: الاستفادة القصوى من البيانات من العينة.
عند اختبار استراتيجيات التداول هناك نهج مشترك هو تقسيم مجموعة البيانات الأولية إلى بيانات العينة: الجزء من البيانات المصممة لمعايرة النموذج والخروج من بيانات العينة: جزء من البيانات المستخدمة للتحقق من صحة المعايرة وضمان أن الأداء التي تم إنشاؤها في عينة ستنعكس في العالم الحقيقي. وكقاعدة عامة يمكن استخدام حوالي 70٪ من البيانات الأولية للمعايرة (أي في العينة) و 30٪ للتحقق (أي من العينة). ثم تساعد مقارنة البيانات داخل وخارج العينة على تحديد ما إذا كان النموذج قويا بما فيه الكفاية. ويهدف هذا المنصب إلى المضي قدما خطوة أخرى ويوفر طريقة إحصائية لتقرير ما إذا كان خارج العينة البيانات يتماشى مع ما تم إنشاؤه في العينة.
في الرسم البياني أدناه تمثل المنطقة الزرقاء خارج أداء العينة لأحد استراتيجياتي.
فحص بصري بسيط يكشف عن تناسب جيد بين داخل وخارج أداء العينة ولكن ما هي درجة الثقة لدي في هذا؟ في هذه المرحلة ليس كثيرا، وهذه هي القضية. والمطلوب حقا هو مقياس للتشابه بين مجموعات البيانات داخل وخارج العينة. ومن الناحية الإحصائية، يمكن ترجمة ذلك على أنه احتمال أن تأتي أرقام أداء العينة وخارجها من نفس التوزيع. هناك اختبار إحصائي غير بارامتري الذي يفعل بالضبط هذا: اختبار كروسكال واليس. ويمكن العثور على تعريف جيد لهذا الاختبار على R-توتور & # 8220؛ مجموعة من عينات البيانات مستقلة إذا كانت تأتي من السكان غير ذات الصلة والعينات لا تؤثر على بعضها البعض. باستخدام اختبار كروسكال واليس، يمكننا أن نقرر ما إذا كانت التوزيعات السكانية متطابقة دون افتراض أنها تتبع التوزيع الطبيعي. & # 8221؛ الفائدة الإضافية لهذا الاختبار لا يفترض توزيع طبيعي.
وتوجد اختبارات أخرى من نفس الطبيعة يمكن أن تتلاءم مع هذا الإطار. اختبار مان-ويتني-ويلكوكسون أو اختبارات كولموغوروف-سميرنوف يناسب تماما الإطار يصف هنا ولكن هذا خارج نطاق هذه المقالة لمناقشة إيجابيات وسلبيات كل من هذه الاختبارات. ويمكن الاطلاع على وصف جيد جنبا إلى جنب مع الأمثلة R هنا.
هنا الرمز المستخدم لإنشاء الرسم البياني أعلاه والتحليل:
في المثال أعلاه في فترة العينة أطول من خارج الفترة عينة ولذلك أنا عشوائيا إنشاء 1000 مجموعات فرعية من البيانات في العينة كل واحد لها نفس طول البيانات خارج العينة. ثم اختبرت كل عينة فرعية في مقابل عينة من البيانات وسجلت قيم p. هذه العملية لا تخلق قيمة P واحدة لاختبار كروسكال واليس ولكن التوزيع يجعل التحليل أكثر قوة. في هذا المثال يكون متوسط قيم p أعلى بكثير من الصفر (0.478) مما يشير إلى أنه يجب قبول الفرضية الصفرية: فهناك أدلة قوية على أن البيانات داخل وخارج العينة تأتي من نفس التوزيع.
كالمعتاد ما هو عرض في هذا المنصب هو مثال لعبة أن خدوش فقط على سطح المشكلة ويجب أن تكون مصممة لتلبية الاحتياجات الفردية. ومع ذلك أعتقد أنه يقترح إطارا إحصائيا للاهتمام والعقلاني لتقييم نتائج العينة.
هذه المقالة مستوحاة من الورقتين التاليتين:
فيجيل ألكسندر، شميل سوان (2007)، "آثار وظائف التحسين المختلفة على الخروج من عينة أداء استراتيجيات التداول المتطورة وراثيا"، التنبؤ مؤتمر الأسواق المالية.
فيجيه أليكساندر، شميل سوان (2018)، "عملية التحسين لتحسين / الخروج من عينة الاتساق، حالة سوق الأوراق المالية»، مؤتمر مورغان كازينوف الأسهم الكمية الكمية، لندن أكتوبر 2018.
تقديم فيدلر: فينانسيال داتا لوادير.
فيدلر هو رستوديو أدين تهدف إلى تبسيط عملية تنزيل البيانات المالية من مختلف مقدمي الخدمات. هذا الإصدار الأولي هو المجمع حول وظيفة جيتسيمبولس في حزمة كوانتمود وياهو فقط، جوجل، فريد و أواندا معتمدة. أنا ربما إضافة وظائف مع مرور الوقت. كالمعتاد مع هذه الأشياء مجرد تذكير نوع: & # 8220؛ يتم توفير البرنامج & # 8220؛ كما هو & # 8221؛، دون ضمان من أي نوع & # 8230؛ & # 8221؛
كيفية تثبيت واستخدام فيدلر؟
يمكنك الحصول على أدين / حزمة من مستودع جيثب هنا (وسوف يسجل على كران في وقت لاحق) تثبيت أدين. هناك تعليمي ممتاز لتثبيت رستوديو أدينز هنا. بمجرد تثبيت أدين يجب أن تظهر في القائمة أدين. اخترت فقط فيدلر في القائمة ونافذة كما في الصورة أدناه يجب أن تظهر. اختر موفر بيانات من القائمة المنسدلة المصدر. حدد نطاق تاريخ من قائمة التاريخ أدخل الرمز الذي ترغب في تنزيله في مربع النص الخاص بالأداة. لتحميل عدة رموز فقط أدخل الرموز مفصولة بفواصل. استخدام أزرار الراديو لاختيار ما إذا كنت ترغب في تحميل الصك في ملف كسف أو في البيئة العالمية. سيتم حفظ ملف كسف في دليل العمل وسيكون هناك ملف كسف واحد لكل أداة. اضغط على تشغيل للحصول على البيانات أو إغلاق لإغلاق أدين.
يتم التعامل مع رسائل الخطأ والتحذيرات من قبل الحزم الأساسية (كوانتمود و لامعة) ويمكن قراءتها من وحدة التحكم.
هذه هي النسخة الأولى جدا من المشروع لذلك لا نتوقع الكمال ولكن نأمل أنه سوف تتحسن مع مرور الوقت. يرجى الإبلاغ عن أي تعليق، اقتراح، علة الخ & # 8230؛ تو: ثيرترادر @ غميل.
الحفاظ على قاعدة بيانات لملفات الأسعار في R.
القيام بالبحث الكمي ينطوي على الكثير من البيانات الطحن واحد يحتاج إلى بيانات نظيفة وموثوق بها لتحقيق ذلك. ما هو مطلوب حقا هو البيانات النظيفة التي يمكن الوصول إليها بسهولة (حتى من دون اتصال بالإنترنت). وكانت الطريقة الأكثر فعالية للقيام بذلك بالنسبة لي للحفاظ على مجموعة من ملفات كسف. من الواضح أن هذه العملية يمكن التعامل معها في نواح كثيرة ولكن وجدت العمل الإضافي فعالة جدا وبسيطة للحفاظ على الدليل حيث يمكنني تخزين وتحديث ملفات كسف. لدي ملف كسف واحد لكل أداة ويسمى كل ملف بعد الصك أنه يحتوي على. The reason I do so is twofold: First, I don’t want to download (price) data from Yahoo, Google etc… every time I want to test a new idea but more importantly once I identified and fixed a problem, I don’t want to have to do it again the next time I need the same instrument. Simple yet very efficient so far. The process is summarized in the chart below.
In everything that follows, I assume that data is coming from Yahoo. The code will have to be amended for data from Google, Quandl etc… In addition I present the process of updating daily price data. The setup will be different for higher frequency data and other type of dataset (i. e. different from prices).
1 & # 8211؛ Initial data downloading (listOfInstruments. R & historicalData. R)
The file listOfInstruments. R is a file containing only the list of all instruments.
If an instrument isn’t part of my list (i. e. no csv file in my data folder) or if you do it for the very first time you have to download the initial historical data set. The example below downloads a set of ETFs daily prices from Yahoo Finance back to January 2000 and store the data in a csv file.
2 & # 8211؛ Update existing data (updateData. R)
The below code starts from existing files in the dedicated folder and updates all of them one after the other. I usually run this process everyday except when I’m on holiday. To add a new instrument, simply run step 1 above for this instrument alone.
3 & # 8211؛ Create a batch file (updateDailyPrices. bat)
Another important part of the job is creating a batch file that automates the updating process above (I’m a Windows user). This avoids opening R/RStudio and run the code from there. The code below is placed on a. bat file (the path has to be amended with the reader’s setup). Note that I added an output file (updateLog. txt) to track the execution.
The process above is extremely simple because it only describes how to update daily price data. I’ve been using this for a while and it has been working very smoothly for me so far. For more advanced data and/or higher frequencies, things can get much trickier.
As usual any comments welcome.
Factor Evaluation in Quantitative Portfolio Management.
When it comes to managing a portfolio of stocks versus a benchmark the problem is very different from defining an absolute return strategy. In the former one has to hold more stocks than in the later where no stocks at all can be held if there is not good enough opportunity. The reason for that is the tracking error . This is defined as the standard deviation of the portfolio return minus the benchmark return. The less stocks is held vs. a benchmark the higher the tracking error (e. g higher risk).
The analysis that follows is largely inspired by the book “Active Portfolio Management” by Grinold & Kahn. This is the bible for anyone interested in running a portfolio against a benchmark. I strongly encourage anyone with an interest in the topic to read the book from the beginning to the end. It’s very well written and lays the foundations of systematic active portfolio management (I have no affiliation to the editor or the authors).
Here we’re trying to rank as accurately as possible the stocks in the investment universe on a forward return basis. Many people came up with many tools and countless variant of those tools have been developed to achieve this. In this post I focus on two simple and widely used metrics: Information Coefficient (IC) and Quantiles Return (QR).
The IC gives an overview of the factor forecasting ability. More precisely, this is a measure of how well the factor ranks the stocks on a forward return basis. The IC is defined as the rank correlation ( ρ ) between the metric (e. g. factor) and the forward return. In statistical terms the rank correlation is a nonparametric measure of dependance between two variables. For a sample of size n , the n raw scores are converted to ranks , and ρ is computed from:
The horizon for the forward return has to be defined by the analyst and it’s a function of the strategy’s turnover and the alpha decay (this has been the subject of extensive research). Obviously ICs must be as high as possible in absolute terms.
For the keen reader, in the book by Grinold & Kahn a formula linking Information Ratio (IR) and IC is given: with breadth being the number of independent bets (trades). This formula is known as the fundamental law of active management . The problem is that often, defining breadth accurately is not as easy as it sounds.
In order to have a more accurate estimate of the factor predictive power it’s necessary to go a step further and group stocks by quantile of factor values then analyse the average forward return (or any other central tendency metric) of each of those quantiles. The usefulness of this tool is straightforward. A factor can have a good IC but its predictive power might be limited to a small number of stocks. This is not good as a portfolio manager will have to pick stocks within the entire universe in order to meet its tracking error constraint. Good quantiles return are characterised by a monotonous relationship between the individual quantiles and forward returns.
All the stocks in the S&P500 index (at the time of writing). Obviously there is a survival ship bias: the list of stocks in the index has changed significantly between the start and the end of the sample period, however it’s good enough for illustration purposes only.
The code below downloads individual stock prices in the S&P500 between Jan 2005 and today (it takes a while) and turns the raw prices into return over the last 12 months and the last month. The former is our factor, the latter will be used as the forward return measure.
Below is the code to compute Information Coefficient and Quantiles Return. Note that I used quintiles in this example but any other grouping method (terciles, deciles etc…) can be used. it really depends on the sample size, what you want to capture and wether you want to have a broad overview or focus on distribution tails. For estimating returns within each quintile, median has been used as the central tendency estimator. This measure is much less sensitive to outliers than arithmetic mean.
And finally the code to produce the Quantiles Return chart.
3 & # 8211؛ How to exploit the information above?
In the chart above Q1 is lowest past 12 months return and Q5 highest. There is an almost monotonic increase in the quantiles return between Q1 and Q5 which clearly indicates that stocks falling into Q5 outperform those falling into Q1 by about 1% per month. This is very significant and powerful for such a simple factor (not really a surprise though…). Therefore there are greater chances to beat the index by overweighting the stocks falling into Q5 and underweighting those falling into Q1 relative to the benchmark.
An IC of 0.0206 might not mean a great deal in itself but it’s significantly different from 0 and indicates a good predictive power of the past 12 months return overall. Formal significance tests can be evaluated but this is beyond the scope of this article.
The above framework is excellent for evaluating investments factor’s quality however there are a number of practical limitations that have to be addressed for real life implementation:
Rebalancing : In the description above, it’s assumed that at the end of each month the portfolio is fully rebalanced. This means all stocks falling in Q1 are underweight and all stocks falling in Q5 are overweight relative to the benchmark. This is not always possible for practical reasons: some stocks might be excluded from the investment universe, there are constraints on industry or sector weight, there are constraints on turnover etc… Transaction Costs : This has not be taken into account in the analysis above and this is a serious brake to real life implementation. Turnover considerations are usually implemented in real life in a form of penalty on factor quality. Transfer coefficient : This is an extension of the fundamental law of active management and it relaxes the assumption of Grinold’s model that managers face no constraints which preclude them from translating their investments insights directly into portfolio bets.
And finally, I’m amazed by what can be achieved in less than 80 lines of code with R…
As usual any comments welcome.
A Simple Shiny App for Monitoring Trading Strategies.
In a previous post I showed how to use R, Knitr and LaTeX to build a template strategy report. This post goes a step further by making the analysis interactive. Besides the interactivity, the Shiny App also solves two problems :
I can now access all my trading strategies from a single point regardless of the instrument traded. Coupled with the Shiny interactivity, it allows easier comparison. I can focus on a specific time period.
The code used in this post is available on a Gist/Github repository. There are essentially 3 files.
ui. R : controls the layout and appearance of the app. server. R : contains the instructions needed to build the app. It loads the data and format it. There is one csv file per strategy each containing at least two columns: date and return with the following format: (“2018-12-22″,”0.04%” ). You can load as much strategies as you want as long as they have the right format. shinyStrategyG eneral. R : loads the required packages and launches the app.
This app is probably far from perfect and I will certainly improve it in the future. Feel free to get in touch should you have any suggestion.
A big thank you to the RStudio/Shiny team for such a great tool.
استخدام الخوارزميات الجينية في التداول الكمي.
The question one should always asked him/herself when using technical indicators is what would be an objective criteria to select indicators parameters (e. g., why using a 14 days RSI rather than 15 or 20 days?). Genetic algorithms (GA) are well suited tools to answer that question. In this post I’ll show you how to set up the problem in R. Before I proceed the usual reminder: What I present in this post is just a toy example and not an invitation to invest. It’s not a finished strategy either but a research idea that needs to be further researched, developed and tailored to individual needs.
What are genetic algorithms?
The best description of GA I came across comes from Cybernatic Trading a book by Murray A. Ruggiero. “Genetic Algorithms were invented by John Holland in the mid-1970 to solve hard optimisation problems. This method uses natural selection, survival of the fittest”. The general process follows the steps below:
Encode the problem into chromosomes Using the encoding, develop a fitness function for use in evaluating each chromosome’s value in solving a given problem Initialize a population of chromosomes Evaluate each chromosome in the population Create new chromosomes by mating two chromosomes. This is done by muting and recombining two parents to form two children (parents are selected randomly but biased by their fitness) Evaluate the new chromosome Delete a member of the population that is less fit than the new chromosome and insert the new chromosome in the population. If the stop criteria is reached (maximum number of generations, fitness criteria is good enough…) then return the best chromosome alternatively go to step 4.
From a trading perspective GA are very useful because they are good at dealing with highly nonlinear problems. However they exhibit some nasty features that are worth mentioning:
Over fitting: This is the main problem and it’s down to the analyst to set up the problem in a way that minimises this risk. Computing time : If the problem isn’t properly defined, it can be extremely long to reach a decent solution and the complexity increases exponentially with the number of variables. Hence the necessity to carefully select the parameters.
There are several R packages dealing with GA, I chose to use the most common one: rgenoud.
Daily closing prices for most liquid ETFs from Yahoo finance going back to January 2000. The in sample period goes from January 2000 to December 2018. The Out of sample period starts on January 2018.
The logic is as following: the fitness function is optimised over the in sample period to obtain a set of optimal parameters for the selected technical indicators. The performance of those indicators is then evaluated in the out of sample period. But before doing so the technical indicators have to be selected.
The equity market exhibits two main characteristics that are familiar to anyone with some trading experience. Long term momentum and short term reversal. Those features can be translated in term of technical indicators by: moving averages cross over and RSI. This represents a set of 4 parameters: Look-back periods for long and short term moving averages, look-back period for RSI and RSI threshold. The sets of parameters are the chromosomes . The other key element is the fitness function . We might want to use something like: maximum return or Sharpe ratio or minimum average Drawdown. In what follows, I chose to maximise the Sharpe ratio.
The R implementation is a set of 3 functions:
fitnessFunction : defines the fitness function (e. g., maximum Sharpe ratio) to be used within the GA engine tradingStatistics : summary of trading statistics for the in and out of sample periods for comparison purposes genoud : the GA engine from the rgenoud package.
The genoud function is rather complex but I’m not going to explain what each parameter means as I want to keep this post short (and the documentation is really good).
In the table below I present for each instrument the optimal parameters (RSI look-back period, RSI threshold, Short Term Moving Average, and Long Term Moving Average) along with the in and out of sample trading statistics.
Before commenting the above results, I want to explain a few important points. To match the logic defined above, I bounded the parameters to make sure the look-back period for the long term moving average is always longer that the shorter moving average. I also constrained the optimiser to choose only the solutions with more than 50 trades in the in sample period (e. g;, statistical significance).
Overall the out of sample results are far from impressive. The returns are low even if the number of trades is small to make the outcome really significant. However there’s a significant loss of efficiency between in and out of sample period for Japan (EWJ) which very likely means over fitting.
This post is intended to give the reader the tools to properly use GA in a quantitative trading framework. Once again, It’s just an example that needs to be further refined. A few potential improvement to explore would be:
fitness function : maximising the Sharpe ratio is very simplistic. A “smarter” function would certainly improve the out of sample trading statistics pattern : we try to capture a very straightforward pattern. A more in depth pattern research is definitely needed. optimisation : there are many ways to improve the way the optimisation is conducted. This would improve both the computation speed and the rationality of the results.
The code used in this post is available on a Gist repository.
As usual any comments welcome.
Using CART for Stock Market Forecasting.
There is an enormous body of literature both academic and empirical about market forecasting. Most of the time it mixes two market features: Magnitude and Direction. In this article I want to focus on identifying the market direction only. The goal I set myself, is to identify market conditions when the odds are significantly biased toward an up or a down market. This post gives an example of how CART (Classification And Regression Trees) can be used in this context. Before I proceed the usual reminder: What I present in this post is just a toy example and not an invitation to invest. It’s not a finished strategy either but a research idea that needs to be further researched, developed and tailored to individual needs.
1 & # 8211؛ What is CART and why using it?
From statistics, CART are a set of techniques for classification and prediction. The technique is aimed at producing rules that predict the value of an outcome (target) variable from known values of predictor (explanatory) variables. There are many different implementations but they are all sharing a general characteristic and that’s what I’m interested in. From Wikipedia, “Algorithms for constructing decision trees usually work top-down, by choosing a variable at each step that best splits the set of items. Different algorithms use different metrics for measuring “best”. These generally measure the homogeneity of the target variable within the subsets. These metrics are applied to each candidate subset, and the resulting values are combined (e. g., averaged) to provide a measure of the quality of the split”.
CART methodology exhibits some characteristics that are very well suited for market analysis:
Non parametric : CART can handle any type of statistical distributions Non linear : CART can handle a large spectrum of dependency between variables (e. g., not limited to linear relationships) Robust to outliers.
There are various R packages dealing with Recursive Partitioning, I use here rpart for trees estimation and rpart. plot for trees drawing.
2 & # 8211؛ Data & Experiment Design.
Daily OHLC prices for most liquid ETFs from January 2000 to December 2018 extracted from Google finance. The in sample period goes from January 2000 to December 2018; the rest of the dataset is the out of sample period. Before running any type of analysis the dataset has to be prepared for the task.
The target variable is the ETF weekly forward return defined as a two states of the world outcome (UP or DOWN). If weekly forward return > 0 then the market in the UP state, DOWN state otherwise.
The explanatory variables are a set of technical indicators derived from the initial daily OHLC dataset. Each indicator represents a well-documented market behavior. In order to reduce the noise in the data and to try to identify robust relationships, each independent variable is considered to have a binary outcome.
Volatility (VAR1) : High volatility is usually associated with a down market and low volatility with an up market. Volatility is defined as the 20 days raw ATR (Average True Range) spread to its moving average (MA). If raw ATR > MA then VAR1 = 1, else VAR1 = -1. Short term momentum (VAR2) : The equity market exhibits short term momentum behavior captured here by a 5 days simple moving averages (SMA). If Price > SMA then VAR2 = 1 else VAR2 = -1 Long term momentum (VAR3) : The equity market exhibits long term momentum behavior captured here by a 50 days simple moving averages (LMA). If Price > LMA then VAR3 = 1 else VAR3 = -1 Short term reversal (VAR4) : This is captured by the CRTDR which stands for Close Relative To Daily Range and calculated as following: . If CRTDR > 0.5, then VAR4 = 1 else VAR4 = -1 Autocorrelation regime (VAR5) : The equity market tends to go through periods of negative and positive autocorrelation regimes. If returns autocorrelation over the last 5 days > 0 then VAR5 = 1 else VAR5 = -1.
I put below a tree example with some explanations.
In the tree above, the path to reach node #4 is: VAR3 >=0 (Long Term Momentum >= 0) and VAR4 >= 0 (CRTDR >= 0). The red rectangle indicates this is a DOWN leaf (e. g., terminal node) with a probability of 58% (1 – 0.42). In market terms this means that if Long Term Momentum is Up and CRTDR is > 0.5 then the probability of a positive return next week is 42% based on the in sample sample data. 18% indicates the proportion of the data set that falls into that terminal node (e. g., leaf).
There are many ways to use the above approach, I chose to estimate and combine all possible trees. From the in sample data, I collect all leaves from all possible trees and I gather them into a matrix. This is the “rules matrix” giving the probability of next week beeing UP or DOWN.
I apply the rules in the above matrix to the out of sample data (Jan 2018 – Dec 2018) and I compare the results to the real outcome. The problem with this approach is that a single point (week) can fall into several rules and even belong to UP and DOWN rules simultaneously. Therefore I apply a voting scheme . For a given week I sum up all the rules that apply to that week giving a +1 for an UP rule and -1 for a DOWN rule. If the sum is greater than 0 the week is classified as UP, if the sum is negative it’s a DOWN week and if the sum is equal to 0 there will be no position taken that week (return = 0)
The above methodology is applied to a set of very liquid ETFs. I plot below the out of sample equity curves along with the buy and hold strategy over the same period.
Initial results seem encouraging even if the quality of the outcome varies greatly by instrument. However there is a huge room for improvement. I put below some directions for further analysis.
Comments
Post a Comment