هناك العديد من البرامج لتحليل وإدارة محافظ الخيارات. هم في محطات التداول ، في شكل منتجات أو خدمات تجارية منفصلة على المواقع. تحتوي هذه البرامج على عدد من القيود: ترتبط المحافظ بمنصة تداول ، ويتم ضخ عروض الأسعار من مصدر معين ، ولا يمكن حساب المعلمات أو السيناريوهات إلا باستخدام البرامج المتوفرة.
لقد قمت بحل مهمة إدارة المحافظ في الأسواق المختلفة باستخدام R. يوفر محرك المصدر المفتوح العديد من الفرص: يتم تخزين المحافظ في أي DBMS أو Excel ، أو يتم تنزيلها من الجهاز (QUIK ، TWS ، أي شيء آخر باستخدام API) ؛ يتم ضخ الاقتباسات من مصدرها (المحطة ، قاعدة البيانات أو الموقع) وأي تحليلات محفظة متاح!
الوصف العام
يتم تحميل بيانات وحافظة السوق في كائنات من OptPort
و OptMarket
. يتم إعادة تقييم الحافظة وفقًا للسوق ، بناءً على هذه البيانات ، ويتم حساب الأرباح الحالية و "اليونانيين" ، بالإضافة إلى ملفها الشخصي. يتم حساب ملف تعريف المحفظة (اعتماد الربح أو "اليونانيين" على سعر الأصل الأساسي) وتخزينه في كائن فئة OptProfile
. ترسم الوظائف المدمجة رسمًا جانبيًا للملف الشخصي وتسمح لك بمقارنة ملفات التعريف الخاصة بالعديد من المحافظ.
من خلال الرابط (1) في نهاية المقال - خيار إدارة مجموعة خيارات Mosbirzhy مع اتصال QUIK و Access.
أسعار سوق OptMarket
OptMarket
وجود OptMarket
فئة OptMarket
لتخزين خيارات خيارات الأسهم ومعلومات حول الأصل الأساسي والتاريخ الحالي.
بدون أسعار السوق ، يتم إعادة تقييم المحفظة بقيمة حقيقية.
# ( ) Access brd = GetBoard_fortsdb(ul) # OptMarket mrkt = OptMarket(ul = 'SiZ9', # ul_price = brd$ul_price, # board = as.tbl(brd$board), # now = as.Date('2019-11-12')) #
محفظة OptPort
قد تتكون المحفظة من خيارات وأصل أساسي. مصمم
يخلق محفظة تستند إلى جدول المعاملات لقاعدة معينة
الأصول. يتم تلخيص المعاملات في موقف مشترك.
# Access ( QUIK) trades = GetTrades_fortsdb() # .. , trades = TickerToParams_fortsboard(trades, mrkt$board)
استنادًا إلى المعاملات ، نقوم بإنشاء كائن من فئة OptPort
:
port = OptPort(ul = 'SiZ9', trades = trades, name = 'Spread')
تحليل المحفظة
تقييم المحفظة
PortPricing
بإعادة تقييم الحافظة بالأسعار الحالية - تحديد أسعار الخيارات من OptMarket
إلى محفظة OptPort
. بالنسبة لخيارات بورصة موسكو ، فإن أبسط شيء هو إعادة تقييمها بالسعر النظري الذي تبثه البورصة نفسها والمعروفة دائمًا ( price_at = 'theor'
).
port = PortPricing(port, mrkt, price_at = 'theor')
الربح و "الإغريق"
PortValuation
وظيفة PortValuation
معلمات الحافظة - المكاسب غير المحققة و "اليونانيين". يتم تخزين النتائج في حقل OptPort
لكائن OptPort
.
port = PortValuation(port) port$total_value
الملف الشخصي محفظة - OptProfile
يقوم كائن OptProfile
بتخزين ملف تعريف الحافظة في النطاق السعري للأصل الأساسي.
تقوم وظيفة PlotProfile
بإنشاء رسم بياني للملف الشخصي يستند إلى ggplot2
.
myprofile = OptProfile(optport = port, params = c('pl', 'delta', 'theta', 'vega'), ul_range = 0.05 # ) PlotProfile(myprofile)

تكوين محفظة
لتغيير تكوين الحافظة هناك وظيفة AddTrades
. إنها تضيف صفقة إلى المحفظة وتحسب موضع محفظة جديد.
# - newtrade = data.frame(ul='SiZ9', ticker='Si63500BX9', xtype='p', strike=63500, expdate=as.Date('2019-12-19'), tradeprice=500, q=-1 ) # port2 = AddTrades(port = port, trades = newtrade) port2$name = 'Changed'
يمكن مقارنة ملف المحفظة الجديد مع القديم. وظيفة JoinProfiles
يجمع بين بيانات الملف الشخصي لبناء رسم بياني مشترك.
# port2 = port2 %>% PortPricing(., mrkt, price_at = 'theor') %>% PortValuation(.) # myprofile2 = OptProfile(optport = port2, params = c('pl', 'delta','theta', 'vega'), ul_range = 0.05) # profiles = JoinProfiles(list(myprofile, myprofile2)) PlotProfile(profiles)

في المجموع
وظائف أساسية حل المشاكل الأساسية. تم تطوير الحل الخاص بي لغرض محدد - تحليل العديد من المحافظ وتغييرات النماذج في هذه الحقائب. يمكنك العثور على الكود المصدري على الرابط أدناه. مكافأة - قاعدة لاستيراد البيانات من QUIK وإعداد QUIK نفسه للتصدير.
المراجع:
(1) شفرة المصدر على جيثب .