Kom igångKom igång gratis

Optimering för en enskild period

Det finns två funktioner för att köra optimering: optimize.portfolio() och optimize.portfolio.rebalancing(). Den här övningen fokuserar på optimering för en enskild period, och nästa övning använder optimize.portfolio.rebalancing() för optimering med periodisk ombalansering. optimize.portfolio() stöder optimering för en enskild period. Viktiga argument är R för avkastningsdata, portfolio för portföljspecifikationsobjektet och optimize_method för att ange vilken optimeringsmetod som ska användas för att lösa problemet. I många fall är det praktiskt att ange trace = TRUE för att lagra ytterligare information för varje iteration av optimeringen.

Följande optimeringsmetoder stöds:

  • DEoptim: Differentiell evolution
  • random: Slumpmässiga portföljer
  • GenSA: Generaliserad simulerad nedkylning
  • pso: Partikelsvärmsoptimering
  • ROI: R Optimization Infrastructure för linjära och kvadratiska programmeringslösare

Valet av optimeringsmetod bör baseras på typen av problem du löser. Ett problem som kan formuleras som ett kvadratiskt programmeringsproblem bör till exempel lösas med en kvadratisk programmeringslösare, medan ett icke-konvext problem bör lösas med en global lösare som DEoptim.

I den här övningen definierar vi portföljoptimeringsproblemet för att maximera genomsnittlig avkastning och minimera portföljens standardavvikelse med ett riskbudget baserat på standardavvikelse, där den lägsta procentuella risken är 5 % och den högsta är 10 %, med krav på full investering och enbart långa positioner. Riskbudgetmålet kräver en global lösare, så vi löser problemet med slumpmässiga portföljer. Uppsättningen slumpmässiga portföljer, rp, genereras med 500 permutationer i den här övningen.

Den här övningen är en del av kursen

Portföljanalys på avancerad nivå i R

Visa kurs

Övningsinstruktioner

Portföljspecifikationen har redan skapats och heter port_spec. I din arbetsmiljö finns även avkastningsdata som heter asset_returns.

  • Kör en optimering för en enskild period med trace satt till TRUE och "random" som optimeringsmetod. Tilldela optimeringsresultatet till en variabel med namnet opt.
  • Skriv ut resultatet av optimeringen.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.


# 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
Redigera och kör kod