Single-Period optimization
ऑप्टिमाइज़ेशन चलाने के लिए दो फंक्शन हैं: optimize.portfolio() और optimize.portfolio.rebalancing(). यह अभ्यास single period optimization पर केंद्रित है और अगला अभ्यास periodic rebalancing के साथ ऑप्टिमाइज़ेशन के लिए optimize.portfolio.rebalancing() का उपयोग करेगा। optimize.portfolio() single-period optimization को सपोर्ट करता है। प्रमुख आर्ग्युमेंट्स में R (asset returns के लिए), portfolio (portfolio specification ऑब्जेक्ट के लिए), और optimize_method (समस्या सुलझाने के लिए उपयोग किए गए optimization method को बताने के लिए) शामिल हैं। कई मामलों में, हर iteration/trial के लिए अतिरिक्त जानकारी सहेजने हेतु trace = TRUE सेट करना उपयोगी होता है।
निम्नलिखित optimization methods सपोर्टेड हैं:
DEoptim: Differential evolutionrandom: Random portfoliosGenSA: Generalized Simulated Annealingpso: Particle swarm optimizationROI: R Optimization Infrastructure for linear और quadratic programming solvers
आप जो optimization method चुनते हैं, वह उस समस्या के प्रकार पर आधारित होना चाहिए जिसे आप सुलझा रहे हैं। उदाहरण के लिए, जिसे quadratic programming समस्या के रूप में फॉर्म्युलेट किया जा सकता है, उसे quadratic programming solver से सुलझाया जाना चाहिए, जबकि non-convex समस्या को DEoptim जैसे global solver से सुलझाना बेहतर है।
इस अभ्यास में, हम ऐसा portfolio optimization problem परिभाषित करेंगे जिसमें mean return को maximize करना है और portfolio standard deviation को minimize करना है, साथ ही standard deviation risk budget हो जहाँ minimum percentage risk 5% और maximum percentage risk 10% है, और full investment तथा long only constraints लागू हों। Risk budget objective के लिए global solver आवश्यक है, इसलिए हम समस्या को random portfolios का उपयोग करके सुलझाएँगे। Random portfolios का सेट rp इस अभ्यास में 500 permutations से जनरेट किया गया है।
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में इंटरमीडिएट पोर्टफोलियो विश्लेषण
अभ्यास निर्देश
Portfolio specification पहले से बनाई जा चुकी है और उसका नाम port_spec है। आपके workspace में returns asset_returns भी मौजूद हैं।
traceकोTRUEपर सेट करके"random"optimization method के साथ single-period optimization चलाइए। Optimization के आउटपुट कोoptनाम के वैरिएबल में असाइन कीजिए।- Optimization का आउटपुट प्रिंट कीजिए।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)
# Print the output of the single-period optimization