पोर्टफोलियो प्रबंधन में आर

विकल्पों के विश्लेषण और प्रबंधन के लिए कई कार्यक्रम हैं। वे व्यापारिक टर्मिनलों में हैं, साइटों पर अलग-अलग वाणिज्यिक उत्पादों या सेवाओं के रूप में। इस तरह के कार्यक्रमों में कई प्रतिबंध हैं: पोर्टफोलियो एक ट्रेडिंग प्लेटफॉर्म से बंधे हैं, उद्धरण एक निश्चित स्रोत से पंप किए जाते हैं, और मापदंडों या परिदृश्यों की गणना केवल सॉफ्टवेयर द्वारा प्रदान की जा सकती है।


मैंने आर का उपयोग करके विभिन्न बाजारों में पोर्टफोलियो के प्रबंधन का कार्य हल किया। ओपन-सोर्स इंजन कई संभावनाएं प्रदान करता है: पोर्टफोलियो किसी भी डीबीएमएस या एक्सेल में संग्रहीत होते हैं, या टर्मिनल से डाउनलोड किए जाते हैं (क्विक, टीडब्ल्यूएस, एपीआई के साथ किसी भी अन्य); उद्धरण उनके स्रोत (टर्मिनल, डेटाबेस या वेबसाइट) से पंप किए जाते हैं और कोई भी पोर्टफोलियो एनालिटिक्स उपलब्ध है!


सामान्य विवरण


मार्केट डेटा और पोर्टफोलियो को OptPort और OptMarket की वस्तुओं में लोड किया गया है। पोर्टफोलियो को बाजार के अनुसार पुनर्मूल्यांकन किया जाता है, इन आंकड़ों के आधार पर वर्तमान लाभ और "यूनानियों" की गणना की जाती है, साथ ही साथ इसकी प्रोफ़ाइल भी। पोर्टफोलियो प्रोफाइल (लाभ की निर्भरता या अंतर्निहित परिसंपत्ति की कीमत पर "यूनानियों") की गणना और क्लास OptProfile एक ऑब्जेक्ट में संग्रहीत की जाती है। बिल्ट-इन फ़ंक्शन एक प्रोफ़ाइल ग्राफ़ खींचते हैं और आपको कई पोर्टफोलियो के प्रोफाइल की तुलना करने की अनुमति देते हैं।


लेख के अंत में लिंक (1) द्वारा - क्विक एंड एक्सेस के कनेक्शन के साथ मोस्बर्ज़ी के विकल्पों के पोर्टफोलियो के प्रबंधन का विकल्प।


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')) #   

ऑप्टपोर्ट पोर्टफ़ोलियो


एक पोर्टफोलियो में विकल्प और एक अंतर्निहित संपत्ति शामिल हो सकती है। डिजाइनर
किसी दिए गए आधार के लिए लेनदेन की तालिका के आधार पर एक पोर्टफोलियो बनाता है
संपत्ति। लेन-देन को एक सामान्य स्थिति में अभिव्यक्त किया जाता है।


 #    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 फ़ंक्शन पोर्टफोलियो मापदंडों की गणना करता है - अवास्तविक लाभ और "यूनानी"। परिणाम OptPort ऑब्जेक्ट के total_value फ़ील्ड में संग्रहीत किए जाते हैं।


 port = PortValuation(port) port$total_value 

पोर्टफोलियो प्रोफाइल - OptProfile


OptProfile ऑब्जेक्ट अंतर्निहित परिसंपत्ति की मूल्य सीमा में पोर्टफोलियो प्रोफ़ाइल संग्रहीत करता है।


PlotProfile फ़ंक्शन PlotProfile आधार पर एक प्रोफ़ाइल ग्राफ बनाता है।


 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) गीथहब पर स्रोत कोड

Source: https://habr.com/ru/post/hi484358/


All Articles