[Returnanalytics-commits] r2798 - in pkg/PortfolioAnalytics: . sandbox vignettes

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Fri Aug 16 18:31:25 CEST 2013


Author: braverock
Date: 2013-08-16 18:31:25 +0200 (Fri, 16 Aug 2013)
New Revision: 2798

Added:
   pkg/PortfolioAnalytics/vignettes/
   pkg/PortfolioAnalytics/vignettes/DesignThoughts.Rnw
   pkg/PortfolioAnalytics/vignettes/PA.bib
   pkg/PortfolioAnalytics/vignettes/optimization-overview.Snw
   pkg/PortfolioAnalytics/vignettes/portfolio_vignette.Rnw
Removed:
   pkg/PortfolioAnalytics/inst/
   pkg/PortfolioAnalytics/sandbox/portfolio_vignette.Rnw
Log:
- take out old  inst/doc dir, move to vignettes as is the current preference of R CMD check
- move new portfolio_vignette to vignettes dir from sandbox

Deleted: pkg/PortfolioAnalytics/sandbox/portfolio_vignette.Rnw
===================================================================
--- pkg/PortfolioAnalytics/sandbox/portfolio_vignette.Rnw	2013-08-16 16:27:25 UTC (rev 2797)
+++ pkg/PortfolioAnalytics/sandbox/portfolio_vignette.Rnw	2013-08-16 16:31:25 UTC (rev 2798)
@@ -1,211 +0,0 @@
-\documentclass[12pt,letterpaper,english]{article}
-\usepackage[OT1]{fontenc}
-\usepackage{Sweave}
-\usepackage{verbatim}
-\usepackage{Rd}
-\usepackage{Sweave}
-
-\begin{document}
-
-\title{Creating a Portfolio Object with PortfolioAnalytics}
-\author{Ross Bennett}
-
-\maketitle
-
-\begin{abstract}
-The purpose of this vignette is to demonstrate the new interface in PortfolioAnalytics to specify a portfolio object and to add constraints and objectives.
-\end{abstract}
-
-\tableofcontents
-
-\section{Getting Started}
-\subsection{Load Packages}
-Load the necessary packages.
-
-<<>>=
-library(PortfolioAnalytics)
-@
-
-\subsection{Data}
-The edhec data set from the PerformanceAnalytics package will be used as example data.
-<<>>=
-data(edhec)
-
-# Use the first 4 columns in edhec for a returns object
-returns <- edhec[, 1:4]
-print(head(returns, 5))
-
-# Get a character vector of the fund names
-fund.names <- colnames(returns)
-@
-
-\section{Creating the "portfolio" object}
-The portfolio object is instantiated with the \code{portfolio.spec} function. The main argument to \code{portfolio.spec} is assets, this is a required argument. The assets argument can be a scalar value for the number of assets, a character vector of fund names, or a named vector of seed weights. If seed weights are not specified, an equal weight portfolio will be assumed.
-
-The \code{pspec} object is an S3 object of class "portfolio". When first created, the portfolio object has an element named \code{assets} with the seed weights, an element named \code{category\_labels}, an element named \code{weight\_seq} with a seed sequence of weights if specified, an empty constraints list and an empty objectives list.
-
-<<>>=
-# Specify a portfolio object by passing a character vector for the 
-# assets argument.
-pspec <- portfolio.spec(assets=fund.names)
-print.default(pspec)
-@
-
-\section{Adding Constraints to the Portfolio Object}
-Adding constraints to the portfolio object is done with \code{add.constraint}. The \code{add.constraint} function is the main interface for adding and/or updating constraints to the portfolio object. This function allows the user to specify the portfolio to add the constraints to, the type of constraints, arguments for the constraint, and whether or not to enable the constraint (\code{enabled=TRUE} is the default). If updating an existing constraint, the indexnum argument can be specified.
-
-Here we add a constraint that the weights must sum to 1, or the full investment constraint.
-<<>>=
-# Add the full investment constraint that specifies the weights must sum to 1.
-pspec <- add.constraint(portfolio=pspec, 
-                        type="weight_sum", 
-                        min_sum=1, 
-                        max_sum=1)
-
-# The full investment constraint can also be specified with type="full_investment"
-# pspec <- add.constraint(portfolio=pspec, type="full_investment")
-
-# Another common constraint is that portfolio weights sum to 0.
-# This can be specified any of the following ways
-# pspec <- add.constraint(portfolio=pspec, type="weight_sum", 
-#                         min_sum=0,
-#                         max_sum=0)
-# pspec <- add.constraint(portfolio=pspec, type="dollar_neutral")
-# pspec <- add.constraint(portfolio=pspec, type="active")
-@
-
-Here we add box constraints for the asset weights so that the minimum weight of any asset must be greater than or equal to 0.05 and the maximum weight of any asset must be less than or equal to 0.4. The values for min and max can be passed in as scalars or vectors. If min and max are scalars, the values for min and max will be replicated as vectors to the length of assets. If min and max are not specified, a minimum weight of 0 and maximum weight of 1 are assumed. Note that min and max can be specified as vectors with different weights for linear inequality constraints.
-<<>>=
-# Add box constraints
-pspec <- add.constraint(portfolio=pspec,
-                        type="box",
-                        min=0.05,
-                        max=0.4)
-
-# min and max can also be specified per asset
-# pspec <- add.constraint(portfolio=pspec,
-#                         type="box",
-#                         min=c(0.05, 0, 0.08, 0.1),
-#                         max=c(0.4, 0.3, 0.7, 0.55))
-
-# A special case of box constraints is long only where min=0 and max=1
-# The default action is long only if min and max are not specified
-# pspec <- add.constraint(portfolio=pspec, type="box")
-# pspec <- add.constraint(portfolio=pspec, type="long_only")
-@
-
-The portfolio object now has 2 objects in the constraints list. One object for the sum of weights constraint and another for the box constraint.
-<<>>=
-print(pspec)
-@
-
-The \code{summary} function gives a more detailed view of the constraints.
-<<>>=
-summary(pspec)
-@
-
-
-Another common constraint that can be added is a group constraint. Group constraints are currently supported by the ROI, DEoptim, and random portfolio solvers. The following code groups the assets such that the first 3 assets are grouped together labeled GroupA and the fourth asset is in its own group labeled GroupB. The \code{group\_min} argument specifies that the sum of the weights in GroupA must be greater than or equal to 0.1 and the sum of the weights in GroupB must be greater than or equal to 0.15. The \code{group\_max} argument specifies that the sum of the weights in GroupA must be less than or equal to 0.85 and the sum of the weights in GroupB must be less than or equal to 0.55.The \code{group\_labels} argument is optional and is useful for labeling groups in terms of market capitalization, sector, etc.
-<<>>=
-# Add group constraints
-pspec <- add.constraint(portfolio=pspec, type="group",
-                        groups=c(3, 1),
-                        group_min=c(0.1, 0.15), 
-                        group_max=c(0.85, 0.55),
-                        group_labels=c("GroupA", "GroupB"))
-@
-
-A position limit constraint can be added to limit the number of assets with non-zero, long, or short positions. The ROI solver used for maximizing return and ETL/ES/cVaR objectives support position limit constraints for \code{max\_pos} (i.e. using the glpk plugin). \code{max\_pos} is not supported for the ROI solver using the quadprog plugin. Note that \code{max\_pos\_long} and \code{max\_pos\_short} are not supported for either ROI solver. Position limit constraints are fully supported for DEoptim and random solvers.
-
-<<>>=
-# Add position limit constraint such that we have a maximum number of three assets with non-zero weights.
-pspec <- add.constraint(portfolio=pspec, type="position_limit", max_pos=3)
-
-# Can also specify maximum number of long positions and short positions
-# pspec <- add.constraint(portfolio=pspec, type="position_limit", max_pos_long=3, max_pos_short=3)
-@
-
-A target diversification can be specified as a constraint. Diversification is defined as $diversification = \sum_{i=1}^N w_i$ for $N$ assets. The optimizers work by applying a penalty if the diversification value is more than 5\% away from \code{div\_target}.
-<<>>=
-pspec <- add.constraint(portfolio=pspec, type="diversification", div_target=0.7)
-@
-
-A target turnover can be specified as a constraint. The turnover is calculated from a set of initial weights. The initial weights can be specified, by default they are the seed weights in the portfolio object. The optimizers work by applying a penalty if the turnover value is more than 5\% away from \code{turnover\_target}. Note that the turnover constraint is not currently supported for the ROI solvers.
-<<>>=
-pspec <- add.constraint(portfolio=pspec, type="turnover", turnover_target=0.2)
-@
-
-A target mean return can be specified as a constraint.
-<<>>=
-pspec <- add.constraint(portfolio=pspec, type="return", return_target=0.007)
-@
-
-This demonstrates adding constraints to the portfolio object. As an alternative to adding constraints directly to the portfolio object, constraints can be specified as separate objects.
-
-\subsection{specifying Constraints as Separate Objects}
-The following examples will demonstrate how to specify constraints as separate objects for all constraints types.
-
-<<>>=
-# full investment constraint
-weight_constr <- weight_sum_constraint(min_sum=1, max_sum=1)
-
-# box constraint
-box_constr <- box_constraint(assets=pspec$assets, min=0, max=1)
-
-# group constraint
-group_constr <- group_constraint(assets=pspec$assets, groups=c(3, 1),
-                                 group_min=c(0.1, 0.15), 
-                                 group_max=c(0.85, 0.55),
-                                 group_labels=c("GroupA", "GroupB"))
-
-# position limit constraint
-poslimit_constr <- position_limit_constraint(assets=pspec$assets, max_pos=3)
-
-# diversification constraint
-div_constr <- diversification_constraint(div_target=0.7)
-
-# turnover constraint
-to_constr <- turnover_constraint(turnover_target=0.2)
-
-# target return constraint
-ret_constr <- return_constraint(return_target=0.007)
-@
-
-\section{Adding Objectives}
-Business objectives can be added to the portfolio object with \code{add.objective}. The \code{add.objective} function is the main function for adding and/or updating business objectives to the portfolio object. This function allows the user to specify the portfolio to add the objectives to, the type (currently 'return', 'risk', or 'risk\_budget'), name of the objective function, arguments to the objective function, and whether or not to enable the objective. If updating an existing constraint, the indexnum argument can be specified.
-
-Here we add a risk objective to minimize portfolio variance. Note that the name of the function must correspond to a function in R. Many functions are available in the PerformanceAnalytics package.
-<<>>=
-pspec <- add.objective(portfolio=pspec,
-                       type='risk',
-                       name='var',
-                       enabled=TRUE)
-@
-
-The portfolio object now has 1 object in the objectives list for the risk objective we just added.
-<<>>=
-print(pspec$objectives)
-@
-
-We now have a portfolio object with the following constraints and objectives to pass to \code{optimize.portfolio}.
-\begin{itemize}
-  \item Constraints
-  \begin{itemize}
-  \item weight\_sum: The weights sum to 1 (i.e. full investment constraint)
-  \item box: minimum weight of any asset must be greater than or equal to 0.05 and the maximum weight of any asset must be less than or equal to 0.4.
-\end{itemize}
-  \item Objectives
-  \begin{itemize}
-  \item risk objective: minimize portfolio var(iance).
-\end{itemize}
-
-\end{itemize}
-
-\section{Optimization}
-Note that this currently does not work, but is how I envision the portfolio object replacing the current constraint object.
-<<>>=
-#out <- optimize.portfolio(R=returns, portfolio=pspec, optimize_method="ROI")
-@
-
-
-\end{document}
\ No newline at end of file

Copied: pkg/PortfolioAnalytics/vignettes/DesignThoughts.Rnw (from rev 2796, pkg/PortfolioAnalytics/inst/doc/DesignThoughts.Rnw)
===================================================================
--- pkg/PortfolioAnalytics/vignettes/DesignThoughts.Rnw	                        (rev 0)
+++ pkg/PortfolioAnalytics/vignettes/DesignThoughts.Rnw	2013-08-16 16:31:25 UTC (rev 2798)
@@ -0,0 +1,186 @@
+%!TEX root = ../39.tex
+
+\documentclass[12pt,letterpaper,english]{article}
+\pagestyle{plain} \setlength{\textheight}{21cm}
+\setlength{\textwidth}{15cm} \setlength{\footskip}{1.0cm}
+
+%\usepackage{harvard}
+\usepackage{makeidx}         % allows index generation
+\usepackage{graphicx}        % standard LaTeX graphics tool
+                             % when including figure files
+\usepackage{multicol}        % used for the two-column index
+\usepackage[bottom]{footmisc}% places footnotes at page bottom
+\usepackage{ctable}
+\usepackage{graphicx}
+\usepackage{caption}
+\usepackage{subcaption}
+\usepackage{verbatim}
+\usepackage{hyperref}
+% see the list of further useful packages
+% in the Springer Reference Guide, Sects. 2.3, 3.1-3.3
+
+\usepackage[longnamesfirst]{natbib}
+\usepackage{rotating}
+
+%\usepackage{noweb}
+%\usepackage[ae,hyper]{Rd}
+\usepackage{Rd}
+\usepackage{Sweave}
+\usepackage{graphicx}
+
+\usepackage{booktabs}
+\usepackage{enumerate}
+\usepackage{url}
+%\usepackage[bottomafter,first]{draftcopy}
+
+\newcommand{\rem}[1]{}
+
+
+%\numberwithin{equation}{section}
+\renewcommand{\baselinestretch}{1.3}
+
+
+\newcommand{\afterbox}{\bigskip
+                       \normalsize
+                       \lineskip=.45ex
+                       \baselineskip 3.5ex
+                       \noindent
+                       \textheight 19.5cm}
+
+\newcommand{\argmin}{{\operatorname{argmin}}}
+\newcommand{\argmax}{{\operatorname{argmax}}}
+\newcommand{\med}{{\operatorname{med}}}
+\newcommand{\ave}{{\operatorname{ave}}}
+\newcommand{\Tr}{{\operatorname{Tr}}}
+%\newcommand{\plim}{{\operatorname{plim}}}
+
+\renewcommand{\cite}{\citeasnoun}
+
+\def \vec{{\mbox{vec }}}
+\def \unvec{{\mbox{unvec}}}
+\def \diag{{\mbox{diag }}}
+
+
+\synctex=1
+
+\setlength{\parindent}{0mm} \setlength{\parskip}{1.5mm}
+
+\newcommand{\comm}[1]{\begin{quote}{\large \bf (#1)}\end{quote}}
+
+\begin{document}
+\vspace{-2cm}
+%\baselineskip=20pt
+\renewcommand{\baselinestretch}{1}
+\title{Discussion of Upcoming and Desired \\ Design and Coding Decisions \\ in PortfolioAnalytics (\citeyear{PortfolioAnalytics})}
+
+
+
+\author{
+Brian G. Peterson\\
+brian at braverock.com \\ \\ \\ }
+
+\date{\today}
+
+\maketitle
+\thispagestyle{empty} % produces no numbering on the first page
+
+\renewcommand{\baselinestretch}{1}
+\begin{abstract}
+PortfolioAnalytics has grown significantly since it was initially written, and will continue to grow and change, especially with the increased involvement of additional portfolio managers and with work on the next version of Doug Martin et. al.'s \emph{Modern Portfolio Optimization}\citep{Scherer2005}
+
+This document lays out Some current state information, some design musings, and some things that we desire to address.
+
+It is my hope that interested readers and users will give us feedback, and possibly even code contributions, to make some of this functionality a reality.
+\end{abstract}
+
+%\end{titlepage}
+
+%\baselineskip=20pt
+\newpage
+\renewcommand{\baselinestretch}{1.3}
+
+\tableofcontents
+
+\newpage
+
+\section{Introduction}
+%% \ref{sec:CVaRbudgets}
+%%\section{Portfolio CVaR budgets \label{sec:CVaRbudgets}}
+%%\subsection{Definition}
+Difference between constraints and objectives
+
+Renaming constraints object, separating constraints and objectives, collections of objectives multi-objective optimization
+
+Specifying constraints
+
+Relaxing constraints  penalized versus direct
+
+
+
+\section{Current State \label{sec:currentstate}}
+Our overall goal with Portfolioanalytics is to allow the use of many different portfolio solvers to solve the same portfolio problem specification.  
+
+\subsection{Constraints Current State\label{sec:constraints}}
+On the constraints front, this includes support for box constraints, inequality constraints, turnover, and full investment.
+
+\begin{description}
+
+\item[ Box Constraints ] box constraints (min/max) are supported for all optimization engines, this is a basic feature of any optimization solver in R.  It is worth noting that \emph{most} optimization solvers in R support \emph{only} box constraints.
+\\ Box constraints are of course necessary, but not sufficient, and a portfolio that satisfies the box constraints may very well not satisfy any number of other constraints on the combinations of weights.
+
+\item[ Full Investment Constraint ] a full investment constraint or min\_sum, max\_sum constraint is supported for all solvers inside the constrained\_objective function using either a normalization method or a penalty method
+The normalization method simply scales the supplied parameters to either the minimum or the maximum if the sum is outside the allowed bounds.  This has the advantage of being fast, but the disadvantages of decreasing the number of portfolios that will be tested that have assets that use your max/min box constraints, because of the scaling effects.  You'll get close, but very few tested portfolios, perhaps none, will have assets that exactly hit the max or min box constrained weights.
+\\ The penalty method simply uses the absolute value of the difference for the sum of the weight vector from your min\_sum or max\_sum (depending on which was violated) as part of the penalized objective output that the solver is working on.  This has the advantage that you are not doing transformations on the supplied weight vector inside the constrained\_objective function, but the disadvantage that it may take the solver a long time to find a population that meets the objectives.
+\\ For the ROI solvers, min\_sum and max\_sum are supported as linear constraints on the sum of the weights vector.
+
+\item[Linear Inequality Constraints] individual linear inequality constraints are currently supported only for the ROI solvers, because ROI supports these types of constraints for at least Rglpk and quadprog solvers, and apparently also several other solvers that directly support these types of constraints, such as ipop.  These constraints can indicate that specific assets must be larger or smaller than other assets in the portfolio. 
+
+\item[Group Inequality Constraints]linear group inequality constraints are currently supported only for the ROI solvers. These constraints can separate the portfolio assets into groups, and apply basic inequalities "$>$","$<$","$>=$", "$<=$", etc to them so that the sum of the weights in the group must satisfy the constraint versus another group or groups.
+
+
+\item[Turnover] turnover is currently supported as an objective that can be added to your overall portfolio objectives, and is handled inside constrained objective.  I think that it could also be handled as a true constraint, which I'll discuss in a bit.
+
+\end{description}
+
+\section{Improving the Current State}
+
+
+\subsection{Modularize Constraints}  
+Today, the box constraints are included in the \code{constraints} constructor.  It would be better to have a portfolio specification object that included multiple sections: constraints, objectives, assets. (this is how the object is organized, but that's not obvious to the user).  I think that we should have an \code{add.constraint} function like \code{add.objective} that would add specific types of constraints:
+	\begin{enumerate}
+	\item box constraints
+	\item asset inequality constraints
+	\item group inequality constraints
+	\item turnover constraint
+	\item full investment or leverage constratint
+	\end{enumerate}
+
+\subsection{Creating a mapping function}
+
+\code{DEoptim} contains the ability to use a \emph{mapping function} to manage constraints, but there are no generalized mapping functions available. The mapping function takes in a vector of optimization parameters(weights), tests it for feasibility, and either transforms the vector to a vector of feasible weights or provides a penalty term to add to the objective value. For PortfolioAnalytics, I think that we can write a constraint mapping function that could do the trick, even with general optimization solvers that use only box constraints.
+The mapping function should have the following features:
+	\begin{itemize}
+		\item[methods:] the methods should be able to be turned on and off, and applied in different orders.  For some constraint mapping, it will be important to do things in a particular order.  Also, for solvers that support certain types of constraints directly, it will be important to use the solver's features, and not use the corresponding mapping functionality.
+		\item[layering:] \code{ROI} constains function \code{rbind.L\_constraint}, which combines the various linear inequality constraints into a single model.  We should examine this and see if we can make use of it, or something like it, to create a consolidated inequality constraint mapping capability
+		\item[relocatable:] for some solvers such as \code{DEoptim}, the solver can use the mapping function to only evaluate the objective for portfolios that meet the constraints.  For other solvers, where only box constraints are supported, we will need to either penalize or transform (see discussion above in \ref{sec:currentstate}) weights vector later in the process, inside the \code{constrained\_objective} function.
+		\item[relax constraints:]we need the ability to relax infeasible constraints, either via the penalty method (just find the closest) or when transforming the weights vector to a feasible set. see also \ref{sec:penalty} for a discussion of adaptive penalties.
+		
+	\end{itemize}
+	
+The mapping function could easily be incorporated directly into random portfolios, and some code might even move from random portfolios into the mapping function.  DEoptim can call the mapping function directly when generating a population.  For other solvers, we'll need to read the constraint specification, determine what types of constraints need to be applied, and utilize any solver-specific functionality to support as many of them as possible.  For any remaining constraints that the solver cannot apply directly, we can call the mapping function to either penalize or transfrom the weights on the remaining methods inside \code{constrained\_objective}.
+
+
+\subsection{Penalty Functions \label{sec:penalty}}
+The current state uses a user-defined fixed penalty function for each objective, multiplying the exceedence or difference of the objective from a target against a fixed penalty.  This requires the user to understand how penalty terms influence optimization, and to modify their terms as required.
+
+The multiple papers since 2003 or so suggest that an adaptive penalty that changes with the number of iterations and the variability of the answers for the objective can significantly improve convergence. [add references].  As we re-do the constraints, we should consider applying the penalty there for small feasible constraint areas (e.g. after trying several hundred times to get a random draw that fits, use adaptively penalized contraints to get as close as possible), but even more importantly perhaps we should support an adaptive constraint in the objectives.
+
+Several different methods have been proposed.  In the case of constraints,
+penalties should probably be relaxed as more infeasible solutions are found, as the feasible space is likely to be small.  In the sase of objectives, arguably the opposte is true, where penalties should increase as the number of iterations increases, to speed convergence to a single solution, hopefully at or near the global minima.
+
+
+\section{Bibliography}
+\bibliographystyle{chicago}
+\bibliography{PA}
+
+\end{document}

Copied: pkg/PortfolioAnalytics/vignettes/PA.bib (from rev 2796, pkg/PortfolioAnalytics/inst/doc/PA.bib)
===================================================================
--- pkg/PortfolioAnalytics/vignettes/PA.bib	                        (rev 0)
+++ pkg/PortfolioAnalytics/vignettes/PA.bib	2013-08-16 16:31:25 UTC (rev 2798)
@@ -0,0 +1,434 @@
+% This file was created with JabRef 2.5.
+% Encoding: UTF-8
+
+ at ARTICLE{Ardia2010,
+  author = {Ardia, David and Boudt, Kris and Carl, Peter and Mullen, Katharine
+	and Peterson, Brian},
+  title = {Differential evolution (DEoptim) for non-convex portfolio optimization},
+  journal = {Mimeo},
+  year = {2010},
+  owner = {Administrator},
+  timestamp = {2010.05.30}
+}
+
+ at MANUAL{DEoptim,
+  title = {{DEoptim}: Differential Evolution Optimization in {R}},
+  author = {Ardia, David and Mullen, Katharine},
+  year = {2009},
+  note = {R package version 2.00-04},
+  url = {http://CRAN.R-project.org/package=DEoptim}
+}
+
+ at ARTICLE{Bollerslev90,
+  author = {Bollerslev, T.},
+  title = {Modeling the Coherence in Short-run Nominal Exchange Rates: A Multivariate
+	Generalized {ARCH} Model},
+  journal = {Review of Economics and Statistics},
+  year = {1990},
+  volume = {72},
+  pages = {498-505},
+  owner = {Administrator},
+  timestamp = {2010.06.14}
+}
+
+ at MISC{BoudtCarlPeterson2010,
+  author = {Boudt, Kris and Carl, Peter and Peterson, Brian G.},
+  title = {Portfolio Optimization with Conditional Value-at-Risk Budgets},
+  month = jan,
+  year = {2010},
+  owner = {ardiad},
+  timestamp = {2010.02.09}
+}
+
+
+ at MISC{PortfolioAnalytics,
+  author = {Kris Boudt and Peter Carl and Brian G. Peterson},
+  title = {{PortfolioAnalytics}: Portfolio Analysis, including numeric methods
+	for optimization of portfolios},
+  year = {2012},
+  note = {R package version 0.8.2},
+  owner = {brian},
+  timestamp = {2012.09.01},
+  url = {https://r-forge.r-project.org/projects/returnanalytics/}
+}
+ at INPROCEEDINGS{BoudtPetersonCarl2008,
+  author = {Boudt, Kris and Peterson, Brian G and Carl, Peter},
+  title = {Hedge Fund Portfolio Selection with Modified Expected Shortfall},
+  booktitle = {Computational Finance and its Applications III},
+  year = {2008},
+  editor = {Brebbia, C. and Constantino, M. and Larran, M.},
+  series = {WIT Transactions on Modelling and Simulation},
+  publisher = {WIT, Southampton},
+  owner = {Administrator},
+  timestamp = {2010.02.01}
+}
+
+ at ARTICLE{Boudt2008,
+  author = {Boudt, Kris and Peterson, Brian G. and Croux, Christophe},
+  title = {Estimation and Decomposition of Downside Risk for Portfolios with
+	Non-Normal Returns},
+  journal = {Journal of Risk},
+  year = {2008},
+  volume = {11},
+  pages = {79-103},
+  number = {2},
+  keywords = {Value at Risk, VaR, Component Value at Risk, Expected Shortfall, ES,
+	Conditional Value at Risk, CVaR, risk contribution, portfolio allocation,
+	Cornish-Fisher expansion, Edgeworth expansion},
+  owner = {brian},
+  timestamp = {2007.09.12}
+}
+
+ at ARTICLE{Burns2010,
+  author = {Burns},
+  title = {http://www.burns-stat.com/pages/Finance/random_portfolios.html},
+  owner = {Administrator},
+  timestamp = {2010.05.30}
+}
+
+ at ARTICLE{BornerHigginsKantelhardtScheiter2007,
+  author = {B{\"{o}}rner, Jan and Higgins, Steven I. and Kantelhardt, Jochen
+	and Scheiter, Simon},
+  title = {Rainfall or Price Variability: What Determines Rangeland Management
+	Decisions? A Simulation-Optimization Approach to {S}outh {A}frican
+	Savanas},
+  journal = {Agricultural Economics},
+  year = {2007},
+  volume = {37},
+  pages = {189-200},
+  number = {2--3},
+  month = sep # {--} # nov,
+  doi = {10.1111/j.1574-0862.2007.00265.x},
+  owner = {ardiad},
+  timestamp = {2009.12.03}
+}
+
+ at ARTICLE{CaoVilarDevia2009,
+  author = {Cao, Ricardo and Vilar, Juan M. and Devia, Andres},
+  title = {Modelling Consumer Credit Risk via Survival Analysis},
+  journal = {Statistics \& Operations Research Transactions},
+  year = {2009},
+  volume = {33},
+  pages = {3-30},
+  number = {1},
+  month = jan # {-} # jun,
+  owner = {ardiad},
+  timestamp = {2009.12.03}
+}
+
+ at MISC{Carl2007,
+  author = {Peter Carl and Brian G. Peterson},
+  title = {{PerformanceAnalytics}: Econometric Tools for Performance and Risk
+	Analysis in {R}},
+  year = {2009},
+  note = {R package version 1.0.0},
+  owner = {brian},
+  timestamp = {2008.02.01},
+  url = {http://braverock.com/R/}
+}
+
+ at MISC{CarlPetersonBoudt2010,
+  author = {Carl, Peter and Peterson, Brian G. and Boudt, Kris},
+  title = {Business Objectives and Complex Portfolio Optimization},
+  howpublished = {Presentation at R/Finance 2010. Available at: \url{http://www.rinfinance.com/agenda/2010/Carl+Peterson+Boudt_Tutorial.pdf}},
+  year = {2010},
+  owner = {ardiad},
+  timestamp = {2010.02.09}
+}
+
+ at MANUAL{foreach,
+  title = {foreach: Foreach looping construct for R},
+  author = {REvolution Computing},
+  year = {2009},
+  note = {R package version 1.3.0},
+  url = {http://CRAN.R-project.org/package=foreach}
+}
+
+ at ARTICLE{Cornish1937,
+  author = {Cornish, Edmund A. and Fisher, Ronald A.},
+  title = {Moments and Cumulants in the Specification of Distributions},
+  journal = {Revue de l'Institut International de Statistique},
+  year = {1937},
+  volume = {5},
+  pages = {307-320},
+  number = {4},
+  owner = {brian},
+  timestamp = {2007.08.19}
+}
+
+ at ARTICLE{Favre2002,
+  author = {Favre, Laurent and Galeano, Jose-Antonio},
+  title = {Mean-Modified Value-at-Risk Optimization with Hedge Funds},
+  journal = {Journal of Alternative Investment},
+  year = {2002},
+  volume = {5},
+  pages = {2-21},
+  number = {2},
+  owner = {brian},
+  timestamp = {2007.07.25}
+}
+
+ at INCOLLECTION{GilliMaringerWinker2008,
+  author = {Gilli, Manfred and Maringer, Dietmar G. and Winker, Peter},
+  title = {Applications of Heuristics in Finance},
+  booktitle = {Handbook on Information Technology in Finance},
+  publisher = {Springer-Verlag},
+  year = {2008},
+  editor = {Schlottmann, D. and Weinhardt, C. and Schlottmann, F.},
+  chapter = {26},
+  address = {Berlin, Heidelberg},
+  owner = {ardiad},
+  timestamp = {2010.02.07}
+}
+
+ at MISC{GilliSchumann2009,
+  author = {Gilli, Mandfred and Schumann, Enrico},
+  title = {Heuristic Optimisation in Financial Modelling},
+  howpublished = {COMISEF wps-007 09/02/2009},
+  year = {2009},
+  owner = {ardiad},
+  timestamp = {2010.02.07}
+}
+
+ at MISC{GilliWinker2008,
+  author = {Gilli, Mandfred and Winker, Peter},
+  title = {A Review of Heuristic Optimization Methods in Econometrics},
+  howpublished = {Swiss Institute Research paper series 08-12},
+  month = dec,
+  year = {2008},
+  owner = {ardiad},
+  timestamp = {2010.02.07}
+}
+
+ at ARTICLE{HigginsKantelhardtScheiterBoerner2007,
+  author = {Higgins, Steven I. and Kantelhardt, Jochen and Scheiter, Simon and
+	Boerner, Jan},
+  title = {Sustainable Management of Extensively Managed Savanna Rangelands},
+  journal = {Ecological Economics},
+  year = {2007},
+  volume = {62},
+  pages = {102-114},
+  number = {1},
+  month = apr,
+  doi = {10.1016/j.ecolecon.2006.05.019},
+  owner = {ardiad},
+  timestamp = {2009.12.03}
+}
+
+ at BOOK{Holland1975,
+  title = {Adaptation in Natural Artificial Systems},
+  publisher = {University of Michigan Press},
+  year = {1975},
+  author = {Holland, John H.},
+  address = {Ann Arbor}
+}
+
+ at ARTICLE{KrinkMittnikPaterlini2009,
+  author = {Krink, Thiemo and Mittnik, Stefan and Paterlini, Sandra},
+  title = {Differential Evolution and Combinatorial Search for Constrained Index-Tracking},
+  journal = {Annals of Operations Research},
+  year = {2009},
+  volume = {172},
+  pages = {153-176},
+  doi = {10.1007/s10479-009-0552-1},
+  owner = {ardiad},
+  timestamp = {2010.02.05}
+}
+
+ at ARTICLE{KrinkPaterlini2009,
+  author = {Krink, Thiemo and Paterlini, Sandra},
+  title = {Multiobjective Optimization using Differential Evolution for Real-World
+	Portfolio Optimization},
+  journal = {Computational Management Science},
+  year = {2009},
+  doi = {10.1007/s10287-009-0107-6},
+  owner = {ardiad},
+  timestamp = {2010.02.05}
+}
+
+ at MISC{Lampinen2009,
+  author = {Lampinen, Jouni A.},
+  title = {A Bibliography of Differential Evolution Algorithm},
+  year = {2009},
+  owner = {ardiad},
+  timestamp = {2010.02.05},
+  url = {http://www2lutfi/~jlampine/debibliohtm}
+}
+
+ at INCOLLECTION{Maringer2005,
+  author = {Maringer, Dietmar G.},
+  title = {Portfolio Management with Heuristic Optimization},
+  booktitle = {Advanced in Computational Management Science},
+  publisher = {Springer-Verlag},
+  year = {2005},
+  volume = {8},
+  series = {Advances in Computational Management Science},
+  chapter = {14},
+  owner = {ardiad},
+  timestamp = {2010.02.07}
+}
+
+ at ARTICLE{MaringerMeyer2008,
+  author = {Maringer, Dietmar G. and Meyer, Mark},
+  title = {Smooth Transition Autoregressive Models. New Approaches to the Model
+	Selection Problem},
+  journal = {Studies in Nonlinear Dynamics \& Econometrics},
+  year = {2008},
+  volume = {12},
+  pages = {1-19},
+  number = {1},
+  month = jan,
+  note = {Article nr. 5},
+  file = {MaringerMeyer_SmoothTransitionAutoregressiveModelsNewApproachesToTheModelSelectionProblem.PDF:MaringerMeyer_SmoothTransitionAutoregressiveModelsNewApproachesToTheModelSelectionProblem.PDF:PDF},
+  owner = {ardiad},
+  timestamp = {2010.02.07},
+  url = {http://www.bepress.com/snde/vol12/iss1/}
+}
+
+ at ARTICLE{MaringerOyewumi2007,
+  author = {Maringer, Dietmar G. and Oyewumi, Olufemi},
+  title = {Index Tracking with Constrained Portfolios},
+  journal = {Intelligent Systems in Accounting, Finance \& Management},
+  year = {2007},
+  volume = {15},
+  pages = {57-71},
+  number = {1--2},
+  doi = {10.1002/isaf.285},
+  owner = {ardiad},
+  timestamp = {2010.02.05}
+}
+
+ at BOOK{Mitchell1998,
+  title = {An Introduction to Genetic Algorithms},
+  publisher = {The MIT Press},
+  year = {1998},
+  author = {Mitchell, Melanie}
+}
+
+ at MISC{MullenArdiaGilWindoverCline2009,
+  author = {Mullen, Katharine M. and Ardia, David and Gil, David L. and Windover,
+	Donald and Cline, James},
+  title = {{DEoptim}: An {R} Package for Global Optimization by Differential
+	Evolution},
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/returnanalytics -r 2798


More information about the Returnanalytics-commits mailing list