# multiperiod optimization using R

I'm interested in multistage optimization problems. Are there any good R packages around to solve such problems over time? I'm not at all an expert in it, so maybe someone knows a good paper / lecture notes to start with? I know classical optimization (linear optimization, convex optimiziation etc) but I've never had to deal with optimization over time. Any reference, theoretical and regarding the implementation are very welcome. I know that this is a very general question, but this is due to my (not yet) attained knowledge. If further clarification is needed I'm happy to share thix. Many thanks in advance

EDIT

Let's take for example the following paper, there we have a optimization problem of the form:

$$\max \sum_{i=1}^{n+1}r^L_ix_i^L$$

such that

$$x^l_i=r^{l-1}_i x_i^{l-1}-y_i^l+z^l_i,\hspace{2pt} i=1,\dots n,l=1,\dots,L$$ $$x^l_i=r^{l-1}_{n+1} x_{n+1}^{l-1}+\sum_{i=1}^n(1-\mu^l_i)y_i^l-\sum_{i=1}^n(1+\nu_i^l)z^l_i$$ $$y^l_i\ge 0,\hspace{2pt} i=1,\dots n,l=1,\dots,L$$ $$x^l_i\ge 0,\hspace{2pt} i=1,\dots n,l=1,\dots,L$$ $$z^l_i\ge 0,\hspace{2pt} i=1,\dots n,l=1,\dots,L$$ where some $x_i^l$ is the value (in dollar) of an asset $i$ at time $l$, $r_i^l$ is the asset return, $y^l_i$ and $z^l_i$ are the amount of asset sold and bought. $\mu^l_i$ and $\nu_i^l$ have also economical interpretation, but are not that important for the question. Assuming everthing is deterministic, we can solve this problem using interior points / simplex method since it is an "simple" LP. However the theory I'm looking for should give me ideas if it is optimal to solve at every time $l$ the subproblem (maximize $\sum_{i=1}^{n+1}r^l_ix^l_i$ under the corresponding constraints or is this not a good idea. I have heard / read that one could solve such kind of problem using stochastic programming, but still I'm interested in knowing how to subdivide (if possible) such kind of problems.

• I don't believe there is any universal package or approach for multi-period optimizing (but I'd love to be wrong). Can you be more specific what kind of problems you're trying to solve? Aug 19, 2014 at 19:33
• @BobJansen I added just an example I found in the web. hope my question is now clearer formulated
– math
Aug 20, 2014 at 17:19
• Looks good to me! Aug 20, 2014 at 18:45

PortfolioAnalytics, has the ability to optimize portfolios based on factors or whatever groups/characteristics you enter.

https://r-forge.r-project.org/R/?group_id=579

Please refer to the vignette in the package in the package PortfolioAnalytics (https://r-forge.r-project.org/scm/viewvc.php/pkg/PortfolioAnalytics/vignettes/?root=returnanalytics

I use it on a regular basis to solve problems similar to the one you posted above.

• thanks for also answering this question. your shared link does not work (copied the whole text). Could you please fix this? Moreover, I know that we can solve this using PortfolioAnalytics. However, from a mathematical viewpoint it is not clear (and I think it is not true) that this is greedy algorithm
– math
Sep 15, 2014 at 17:27
• PortfolioAnalytics allows you to choose the optimizer, There are 5 (iirc) choices and one of them includes differential evolution. There is also an optimize that re balances over time. As it is all open source you can refer to the source code for the inner workings of the package. Sep 16, 2014 at 18:51
• I didn't know that. Many thank for the link. The option using DEoptim seems interesting. Generally and this isbrelated to our other discussion. What kind of returns does all these function expect? Log, relative etc?
– math
Sep 17, 2014 at 6:53
• Generally most R functions (in the returnanlytics libraries) accept continuous (e.g. log) or arithmetic returns. However PortA is highly customizable so you can modify and insert whatever you like. Sep 17, 2014 at 14:33

There is an approach called Model Predictive Control which optimizes the state trajectory of a system over time. There doesn't seem to be suitable R packages, but I can recommend the YALMIP package as probably being a good place to start: http://users.isy.liu.se/johanl/yalmip/