Copyright © 2011-2014 airxc.com, airxcell.com
Table of Contents
This dynamic form is about portfolio optimization from the perspective of computational finance and financial engineering. Thus the main emphasis here is to briefly introduce the concepts and to give the user a set of powerful tools to solve the problems in the field of portfolio optimization. It provides a way to optimize a portfolio of assets. The goal is to determine the asset weights that minimize the risk for a desired return or, alternatively, that maximize the return for a given risk.
After determining the optimal weights it is advisable to conduct a performance analysis on the optimal portfolio. However, before you can optimize a portfolio, you have to create an environment which specifies a portfolio from the beginning and defines all the parameters and values that are required to perform the optimization. In the provided form, one describes the portfolio environment including the specification of all parameters describing the portfolio, the selection and description of the assets data set for which we want to optimize the portfolio, and to set the constraints under which the portfolio will be optimized.
Any timeseries already loaded by the user within the R environment (using commands or whatever) compliant with a
xts
, zoo
or timeSeries
timeseries can be used
as a constituent. Moreover, the user can use the
Manage assets (10)
dynamic form to load constituents which is the preferred way since it loads additional data such as
the name of the asset, its currency, etc.
A new "6. Portfolio Optimization" form can be added to the workspace by using Form → 6. Portfolio Optimization ()
The theory behind the portfolio optimization algorithms available within this dynamic form is presented in the chapter Chapter 17, Portfolio Optimization theory.
The portfolio optimization procedure works with returns instead of asset values. The whole optimization procedure is most often used to optimize (thus maximize) returns. In other cases it is intended to optimize (thus minimize) risk (hence volatility, i.e. the variance of returns). Section 17.1.1, “Asset returns” discusses how asset returns are computed.
The portfolio score function (i.e. the value to be optimized) is most often a question of minimizing the risk (the variance, covariance, whatever...) or maximizing the portfolio return. Section 17.1.2, “Portfolio return” discusses how the portfolio return is computed from asset returns.
The Portfolio (15) dynamic form uses several functions and methods provided by Rmetrics to compute basic statistics of financial time series from S4 timeSeries objects. These include summary and basic statistics, drawdown statistics, sample mean and covariance estimation, quantile and risk estimation, amongst others. Moreover, there are functions to compute column statistics and cumulated column statistics, which are very important tools used by the portfolio optimization procedure.
A newly created "6. Portfolio Optimization" dynamic form looks as shown on Figure 15.1, “New '6. Portfolio Optimization' dynamic form”.
In AirXCell and R financial packages in general, data sets are represented by S4 timeSeries objects. These objects are used to represent financial data for portfolio optimization. Returns for a price or index series are computed by the Portfolio (15) dynamic form when optimizing portfolio from the selected assets.
This first section of the screen shows the loaded assets available as portfolio constituents. Constituents can be selected one at a time using the checkbox on the right-most column of the constituents list or all together using the buttons on the bottom of the list.
In addition to viewing and selecting constituents, the list enables the user to specify a minimum weight in percentage and a maximum weight for each constituent. This is the most simple form of constraints that can be specified on the target portfolio.
The loaded assets from the quantmod - Manage Assets (10) form usually provide five different quotes : daily Open and Close, daily High and Low and Adjustedprice.
The user can choose what price she wants to use to compute the returns. The price to use is chosen globally, i.e. the same one is used for every asset.
As described below for Mean-Variance (Markovitz) and Mean-conditional value at risk portfolios, the optimization algorithms work with mean, variance or covariance, etc. values computed from the asset returns.
By default, the timeseries considered for computing these values are taken into account starting with the latest start date of every asset timeseries and ending with the earliest end date. The user can however choose a subset of that default period by specifying here different dates.
To compose and optimize a portfolio of assets we first have to specify it. This process includes choosing the kind of portfolio model we want to investigate, choosing the required portfolio parameter settings, and choosing which type of programming solver (linear, quadratic, nonlinear) should be applied.
The user can choose amongst every supported currency as the portfolio currency. A portfolio is inevitably computed in a specific currency, the default is USD (US Dollar). Assets can be loaded in any currency. Whenever the portfolio contains an asset loaded in a different currency that the portfolio currency, it is first converted in the target portfolio currency before being taken into account for the returns calculation. Any FOREX (See Chapter 11, Form : 2. Manage FOREX) required for such a conversion is loaded automatically and transparently.
Mean-Variance (Markowitz) : Modern portfolio theory[5] proposes how rational investors use diversification to optimize their portfolio(s) of risky assets. The basic concepts of the theory go back to Markowitz’s idea of diversification and the efficient portfolio frontier. His model considers asset returns as a random variable, and models a portfolio as a weighted combination of assets. Being a random variable, a portfolio’s returns have an expected mean and variance. In this model, return and risk are estimated by the sample mean and the sample standard deviation of the asset returns.
The problem of minimizing the covariance risk for a given target return with optional box and group constraints is a quadratic programming problem with linear constraints. The opposite case, fixing the risk and maximizing the return, has a linear objective function with quadratic constraints. This second problem is much more complex than the first one. If we have even more complex constraints, i.e. nonlinear constraints, we need a new class of solvers called non-linear constrained portfolio problem. This allows us to handle the case of linear and quadratic objective functions with non-linear constraints. In all three cases we speak of Markowitz’ portfolio optimization problem, although they require different classes of solvers with increasing complexity.
The theory behind the optimization algorithm for Markowitz' Mean-Variance portfolio is presented in details in the next chapter Chapter 17, Portfolio Optimization theory in section Markowitz Portfolio Theory.
Mean-conditional value at risk : An alternative risk measure to the covariance is the Conditional Value at Risk, CVaR, which is also known as mean excess loss, mean shortfall or tail Value at Risk, VaR. For a given time horizon and confidence level, CVaR is the conditional expectation of the loss above VaR for the time horizon and the confidence level under consideration.
In the mean-CVaR portfolio model, covariance risk is now replaced by the conditional Value at Risk [1] [4] as the risk measure. In contrast to the mean-variance portfolio optimization problem, we no longer restrict the set of assets to have a multivariate elliptically contoured distribution.
The theory behind the optimization algorithm for Mean-conditional value at risk portfolios is presented in details in the Chapter 17, Portfolio Optimization theory, Mean-CVaR Portfolio Theory.
The two available options are either minimizing the portfolio’s risk for a given target return or maximizing the portfolio’s return for a given target risk. In the default case of the meanvariance portfolio, the target risk is calculated from the sample covariance (or an alternative measure, e.g. a robust covariance estimate). The target return is computed by the sample mean of the assets if not otherwise specified.
The optimization procedure needs to start with a feasible solution. In addition, it can only optimize one single score function at a time[10]. This means that it can either optimite returns or risks, not both at a time. There is however a trick to optimize both at a time which consists in using the return / risk ratio as the score function.
The single score functions limitation implies that the optimizier requires a predefined target acceptable risk when maximizing the return or a predefined target return when minimizing risks.
In the current version of the Portfolio dynamic form, the user has two choices to specifiy the predefined acceptable risk (in the case of a return maximization) or the predefined target return (in the case of a risk minimization):
The default choice for both these settings is to use the values computed from the Feasible portfolio (15.5.2). This is an easy go since the user does not need to worry about these values but it might be uneffective since the values from the feasible portfolio (initial solution) might well be suboptimal.
The user can also uncheck the usage of the default values and input its own values. Giving feasible specific values can well be very tricky so the best approach here is to do a first run by using the default values, see what values have been used and then from here guess the values that might be more optimal and input them here.
The name of the default solver used for the optimization of the mean-variance Markowitz portfolio, which is the default portfolio, is a quadratic programming (QP) solver. This solver implements the approach of QP Goldfarb and Idnani[9].
For mean-CVaR portfolio optimization, one should use a linear programming (LP) solver. This solver uses R’s interface to the GNU linear programing kit (GLPK).
It is very important to be careful when modifying specification settings, because there are settings that are incompatible with others. For example, if you want to minimize the covariance risk for a mean-variance portfolio, you cannot assign a linear programming solver.
Currently we are working on implementing more consistency checks for the specification settings, so that the user wont have to worry about creating conflicting settings. However, this has not been fully implemented in the current version of the Portfolio dynamic form.
Minimum covariance determinant : This method estimates a robust mean and covariance by the minimum covariance determinant estimator. The Minimum Covariance Determinant method consists in searching for the half of the data that is most tightly clustered together amongst all subsets containig half of the data, as measured by the generalized variance. Recall that for the determinant of the variance (the generalized variance) to be relatively small, it must be the case that there are no outliers.
Minimum volume ellipsoid : This method is used for robust outlier detection in multivariate space. The algorithm takes subsamples of the dataset and calculates the Volume of the Ellipsoid representing that subsample. Outliers increase the volume dramatically, so the Minimum Volume Ellipsoid (MVE) will correspond with the actual core of the dataset. After this, data points exceeding the cut-off value for the Mahalanobis distance will be designated outliers and are discarded. The MVE is implemented in R's recommended package MASS.
Orthogonalized Gnanadesikan-Kettenring : The "OGK" method computes the orthogonalized pairwise covariance matrix estimate described in Maronna & Zamar (2002). The estimator is implemented in the contributed R package robustbase .
Shrinkage : The "shrink" method provides robust covariance estimation by the shrinkage method [12]. The shrinkage function is implemented in the contributed R package corpcor.
Bagged : The "bagged" method provides a variance-reduced estimator of the covariance matrix using bootstrap aggregation, hence the name "bagged"[13]. "bagged" was implemented in a previous version of the contributed R package corpcor.
Constraints define restrictions and boundary conditions on the weights and functional measures, depending on, or derived from, the portfolio weights. Constraints are defined by a character string or a vector of character strings. The formal style of these strings can be used like a language to express lower and upper bounds on the ranges of weights that have to be satisfied for box, group, covariance risk budgets and general non-linear constraint settings.
In order to simplify the process, however, two specific cases of constraints definition are supported by the system out of the box, i.e. without the user requiring the hassle of defining manually the constraints using the constraint language. These are the following :
Short : short constraints, sets lower and upper bounds of weights as box constraints ranging between minus and plus infinity for all assets. The setting allows for unlimited negative and positive weights. In this case, the mean-variance portfolio optimization problem can be solved analytically.
Long Only : long-only constraints, sets lower and upper bounds of weights as box constraints. Long-only positions reflect the fact that all weights are allowed to be between zero and one. Do not confuse this setting with box constraints, where the weights are restricted by arbitrary negative and/or positive lower and upper bounds.
We introduce here the rules to express constraints as strings and introduce the functions used to create a summary for all the constraints.
LongOnly
:
long-only constraints [0,1]
Short
:
unlimited short selling, [-Inf,Inf]
minW[<...>]=<...>
:
lower box bounds = lower bounds of weights for box constraints
Example : minW[1:3] = 0.1
maxw[<...>]=<...>
:
upper box bounds = upper bounds of weights for box constraints
Example : maxW[c(1, 3)] = c(0.5, 0.6)
eqsumW[<...>]=<...>
:
equality group constraints
Example : eqsumW[c(\"SPI\", \"SII\")]=0.6
minsumW[<...>]=<...>
:
lower group bounds
Example : minsumW[c(2, 3)]=0.2
maxsumW[<...>]=<...>
:
upper group bounds
Example : maxsumW[1:nAssets]=0.7
minB[<...>]=<...>
:
lower covariance risk budget bounds
Example : minB[1:nAssets]=-Inf
maxB[<...>]=<...>
:
upper covariance risk budget bounds
Example : maxB[c(1, 2:nAssets)]=c(0.5, rep(0.6, times=2))
listF=list(<...>)
:
list of non-linear functions
minf[<...>]=<...>
:
lower bounds of non-linear functions
maxf[<...>]=<...>
:
upper bounds of non-linear functions
When selected, this causes the execution of the form to end up with Data Frame module instances to be created and added to the workspace in order to display either the assets composing the portfolio themselves or the returns computed from the assets.
After we have set the data, specified the portfolio settings, and defined the constraints, we are ready to optimize the portfolio. The portfolio optimization functions take the data, the specifications and the constraints as inputs.
Here, the user can choose whether he wants to run the optimization algorithm or not. Running the optimization algorithm is a prerequisite to the features available below such as Portfolio Analysis . It is however possible to disable the optimization procedure. This is useful for instance when the user is in a constituent selection phase and simply wants to display or charts the assets or the returns without running the optimizer yet.
The portfolio optimization procedure needs to start with a feasible solution, i.e. an initial portfolio. In our case, the single feasible solution currently supported by the Portfolio (15) dynamic form is an Equally weighted portfolio, i.e. a portfolio where each and every consituent has a equals weight. This situation is kind of like a portfolio where any analyst bough the same volume of security, for instance 1k USD of IBM, 1k USD of Microsoft, and so on.
The initial weights of the feasible portfolio can be chartted using the related checkbox. The result is shown on Figure 15.2, “Equally weighting portfolio example”.
In adition, in the textual results window, the feasible portfolio is displayed:
-------------------------------------------------------------------------------- INITIAL FEASIBLE SOLUTION ------------------------- Feasible portfolio: Title: CVAR Feasible Portfolio Estimator: covEstimator Solver: solveRglpk Optimize: minRisk Constraints: LongOnly Portfolio Weights: AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 0.0909 0.0909 0.0909 0.0909 0.0909 0.0909 0.0909 0.0909 0.0909 0.0909 0.0909 Covariance Risk Budgets: AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 0.0722 0.1031 0.1089 0.0635 0.0715 0.0519 0.1297 0.0947 0.0725 0.1441 0.0878 Target Return and Risks: mean mu Cov Sigma CVaR VaR 0.0001 0.0001 0.0195 0.0195 0.0471 0.0293 Description: Tue Jun 26 10:08:03 2012 by user:
Markowitz' Modern portfolio theory states that an investor may choose to exchange risk for return along a curve known as the Efficient frontier. Since it is inefficient to incur a given level of risk when one can rearrange the portfolio to achieve a greater expected return for the same risk, there is a strong motivation to optimize.
The Portfolio Optimization algorithm calculates the optimal capital weightings for a set of assets that gives the highest return for the least risk, or the lowest risk for a target return. The ability to apply optimization analysis to a portfolio of assets represents an excellent framework for driving capital allocation, investment, and divestment decisions.
Efficient : Maximize returns or minimize risks according to the setting given on the portfolio specification.
When maximizing returns, the optimizer currently only assumes a target accpetable risk value as computed for the initial feasible portfolio (equally weighted).
When minimizing the risk, the optimizer currently only assumes a target return value as computed for the initial feasible portfolio (equally weighted).
Maximum possible ratio return/risk at all : computes the portfolio with the highest return/risk ratio
Minimum possible risk at all : computes the portfolio with the lowest risk at all
The resulting weights of the optimized portfolio can be chartted using the related checkbox. The result is shown on Figure 15.3, “Optimized portfolio example”.
In adition, in the textual results window, the target optimized portfolio is displayed:
-------------------------------------------------------------------------------- OPTIMIZED SOLUTION ------------------ Target portfolio specs: ----------------------- Model List: Type: CVAR Optimize: minRisk Estimator: covEstimator Tail Risk: list() Params: alpha = 0.05 a = 1 Portfolio List: Portfolio Weights: NA Target Return: 1e-04 Target Risk: NA Risk-Free Rate: 0 Number of Frontier Points: 50 Status: NA Optim List: Solver: solveRglpk Objective: list() Options: meq = 2 Control: list() Trace: FALSE Message List: List: NULL Target portfolio: ----------------- Title: CVAR Efficient Portfolio Estimator: covEstimator Solver: solveRglpk Optimize: minRisk Constraints: LongOnly Portfolio Weights: AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 0.0000 0.0000 0.0000 0.1474 0.0635 0.5649 0.0000 0.0000 0.2242 0.0000 0.0000 Covariance Risk Budgets: AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 0.0000 0.0000 0.0000 0.1407 0.0627 0.5308 0.0000 0.0000 0.2658 0.0000 0.0000 Target Return and Risks: mean mu Cov Sigma CVaR VaR 0.0001 0.0001 0.0151 0.0151 0.0357 0.0241 Description: Tue Jun 26 10:08:05 2012 by user:
The efficient frontier together with the minimum variance locus form the upper border and lower border lines of the feasible set. To the right the feasible set is determined by the envelope of all pairwise asset frontiers. The region outside of the feasible set is unachievable by holding risky assets alone. No portfolios can be constructed corresponding to the points in this region. Points below the frontier are suboptimal. Thus, a rational investor will hold a portfolio only on the frontier.
The portfolio frontier feature on the Portfolio (15) dynamic form computes the whole efficient frontier of a portfolio and shows the result in a graphical way. For the default settings with long-only constraints, the range spans all values equidistantly ranging from the asset with the lowest return up to the asset with the highest return. Allowing for box, group and other more complex constraints the range of the frontier will be downsized, i.e. the length of the frontier becomes shorter and shorter. Bear in mind that it is possible for the constraints to be too strong, and that a frontier might not even exist at all.
Number of Frontier Points : the number of points to be tried when seaking for the frontier.
The resulting efficient frontier can be chartted using the related checkbox. The result is shown on figure Figure 15.4, “Efficient frontier example”.
In adition, in the textual results window, the efficient frontier is displayed:
-------------------------------------------------------------------------------- PORTFOLIO FRONTIER ------------------ Portfolio Frontier: Title: MV Portfolio Frontier Estimator: covEstimator Solver: solveRquadprog Optimize: minRisk Constraints: LongOnly Portfolio Points: 5 of 49 Portfolio Weights: AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 1 0.0000 0.0000 0.0000 0.0000 0.0713 0.0000 0.0000 0.0000 0.9089 0.0198 0.0000 13 0.0000 0.0000 0.0000 0.1056 0.1091 0.4858 0.0000 0.0000 0.2996 0.0000 0.0000 25 0.1852 0.0000 0.0000 0.2272 0.0000 0.5876 0.0000 0.0000 0.0000 0.0000 0.0000 37 0.5907 0.0000 0.0000 0.0868 0.0000 0.3226 0.0000 0.0000 0.0000 0.0000 0.0000 49 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Covariance Risk Budgets: AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 1 0.0000 0.0000 0.0000 0.0000 0.0365 0.0000 0.0000 0.0000 0.9489 0.0146 0.0000 13 0.0000 0.0000 0.0000 0.0959 0.1109 0.4236 0.0000 0.0000 0.3696 0.0000 0.0000 25 0.2270 0.0000 0.0000 0.2123 0.0000 0.5606 0.0000 0.0000 0.0000 0.0000 0.0000 37 0.7694 0.0000 0.0000 0.0453 0.0000 0.1853 0.0000 0.0000 0.0000 0.0000 0.0000 49 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Target Return and Risks: mean mu Cov Sigma CVaR VaR 1 -0.0005 -0.0005 0.0221 0.0221 0.0516 0.0339 13 0.0000 0.0000 0.0155 0.0155 0.0365 0.0248 25 0.0005 0.0005 0.0151 0.0151 0.0357 0.0235 37 0.0010 0.0010 0.0190 0.0190 0.0427 0.0294 49 0.0015 0.0015 0.0258 0.0258 0.0567 0.0395 Description: Fri Jun 29 12:55:12 2012 by user: bench ~ AAPL + ABB + CS + HMC + HPQ + IBM + MS + SI + SNE + UBS + YHOO
Backtesting is a key component of portfolio management and it is often used to assess and compare different statistical models. Portfolio backtesting is accomplished by reconstructing, with historical data, trades that would have occurred in the past using rules defined by a given strategy. The underlying theory is that any strategy that worked well in the past is likely to work well in the future.
The backtesting results offer statistics that can be used to gauge the effectiveness of the strategy. However, the results achieved from the backtest are highly dependent on the movements of the tested period. Therefore, it is often a good idea to backtest over a long time frame that encompasses several different types of market conditions.
Window Horizon (in months) : The number of months to be taken into accoun in the past to compute the mean (returns), variance and covariance. At each rebalancing point in time, only that amount of data in the past are taken into consideration in the calculations.
Number of months smothing : The number of months to be taken into accoun by the Exponential Moving Average (EMA) smoother. The intent in smoothing is to avoid too many changes in weights each month (avoid to many buy / sell orders).
The resulting backtest can be chartted using the related checkbox. The result is shown on Figure 15.5, “Portfolio backtesting example”.
In adition, in the textual results window, the backtesting is displayed:
-------------------------------------------------------------------------------- PORTFOLIO BACKTESTING --------------------- Portfolio Back-test - specs: Model List: Type: CVAR Optimize: maxReturn Estimator: covEstimator Tail Risk: list() Params: alpha = 0.05 a = 1 Portfolio List: Portfolio Weights: NA Target Return: NA Target Risk: 0.02925016 Risk-Free Rate: 0 Number of Frontier Points: 50 Status: NA Optim List: Solver: solveRglpk Objective: list() Options: meq = 2 Control: list() Trace: FALSE Message List: List: NULL Portfolio Back-test - constraints: "LongOnly" "maxW[\\"AAPL\\"] = NA" "minW[\\"AAPL\\"] = NA" "maxW[\\"ABB\\"] = NA" "minW[\\"ABB\\"] = NA" "maxW[\\"CS\\"] = NA" "minW[\\"CS\\"] = NA" "maxW[\\"HMC\\"] = NA" "minW[\\"HMC\\"] = NA" "maxW[\\"HPQ\\"] = NA" "minW[\\"HPQ\\"] = NA" "maxW[\\"IBM\\"] = NA" "minW[\\"IBM\\"] = NA" "maxW[\\"MS\\"] = NA" "minW[\\"MS\\"] = NA" "maxW[\\"SI\\"] = NA" "minW[\\"SI\\"] = NA" "maxW[\\"SNE\\"] = NA" "minW[\\"SNE\\"] = NA" "maxW[\\"UBS\\"] = NA" "minW[\\"UBS\\"] = NA" "maxW[\\"YHOO\\"] = NA" "minW[\\"YHOO\\"] = NA" Portfolio Back-test - specifications: Backtest Specification: Windows Function: equidistWindows Windows Params: - horizon 18m Strategy Function: maxreturnStrategy Strategy Params: Smoother Function: emaSmoother Smoother Params: - doubleSmoothing TRUE - lambda 4m - skip 0 - initialWeights 0.090 0.090 0.090 0.090 0.090 0.090 0.090 0.090 0.090 0.090 0.090 Messages: Portfolio Back-test - benchmark name: "bench" Portfolio Back-test - asset names: "AAPL" "ABB" "CS" "HMC" "HPQ" "IBM" "MS" "SI" "SNE" "UBS" "YHOO" Portfolio Back-test - weights head : AAPL ABB CS HMC HPQ IBM 2002-09-30 0.02296009 0.02332558 0.02535847 0.2467281 0.06571699 0.2824776 2002-10-31 0.02466763 0.01220238 0.02837879 0.2577551 0.09897073 0.2995721 2002-11-30 0.01961186 0.00000000 0.00000000 0.2251096 0.00000000 0.2471409 2002-12-31 0.01961186 0.00000000 0.00000000 0.2251096 0.00000000 0.2471409 2003-01-31 0.03455937 0.00000000 0.00000000 0.2147919 0.00000000 0.2475617 2003-02-28 0.03455937 0.00000000 0.00000000 0.2147919 0.00000000 0.2475617 MS SI SNE UBS YHOO 2002-09-30 0.0147636 0.03338133 0.2600091 0.02527917 0 2002-10-31 0.0000000 0.04144408 0.2095620 0.02744724 0 2002-11-30 0.0000000 0.00000000 0.2569992 0.25113849 0 2002-12-31 0.0000000 0.00000000 0.2569992 0.25113849 0 2003-01-31 0.0000000 0.00000000 0.2590124 0.24407464 0 2003-02-28 0.0000000 0.00000000 0.2590124 0.24407464 0 Portfolio Back-test - weights tail : AAPL ABB CS HMC HPQ IBM MS SI SNE UBS YHOO 2011-11-30 0.2920445 0 0 0.02565682 0 0.5999402 0 0 0 0 0.08235847 2011-12-31 0.2944144 0 0 0.06190774 0 0.5396281 0 0 0 0 0.10404975 2012-01-31 0.2944144 0 0 0.06190774 0 0.5396281 0 0 0 0 0.10404975 2012-02-29 0.3484549 0 0 0.02749320 0 0.4641493 0 0 0 0 0.15990266 2012-03-31 0.3484549 0 0 0.02749320 0 0.4641493 0 0 0 0 0.15990266 2012-04-30 0.3243516 0 0 0.01870868 0 0.4966401 0 0 0 0 0.16029959 Portfolio Back-test - smooth-Weights head : AAPL ABB CS HMC HPQ IBM 2002-09-30 0.09090909 0.09090909 0.09090909 0.09090909 0.09090909 0.09090909 2002-10-31 0.08031046 0.07831602 0.08090424 0.11760445 0.09219895 0.12429518 2002-11-30 0.06678317 0.06125195 0.06435782 0.14441560 0.07791147 0.15596948 2002-12-31 0.05436594 0.04530857 0.04810385 0.16697865 0.06030214 0.18195965 2003-01-31 0.04672669 0.03231958 0.03455581 0.18275147 0.04431444 0.20181244 2003-02-28 0.04202978 0.02247242 0.02414959 0.19355615 0.03146856 0.21627932 MS SI SNE UBS YHOO 2002-09-30 0.09090909 0.09090909 0.09090909 0.09090909 0.09090909 2002-10-31 0.07636364 0.08299469 0.10989355 0.08075519 0.07636364 2002-11-30 0.05890909 0.06686635 0.14026486 0.10436112 0.05890909 2002-12-31 0.04320000 0.05036154 0.16987602 0.13634363 0.04320000 2003-01-31 0.03063273 0.03636196 0.19479786 0.16509429 0.03063273 2003-02-28 0.02120727 0.02550419 0.21404406 0.18808139 0.02120727 Portfolio Back-test - smooth-Weights tail : AAPL ABB CS HMC HPQ IBM 2011-11-30 0.1312886 1.903126e-15 7.173486e-13 0.03874068 0.020047315 0.7238668 2011-12-31 0.1748905 1.158519e-15 4.379652e-13 0.04003042 0.013792779 0.6833972 2012-01-31 0.2097111 7.050979e-16 2.673128e-13 0.04399510 0.009334302 0.6458251 2012-02-29 0.2444455 4.290505e-16 1.631079e-13 0.04278208 0.006235762 0.6032310 2012-03-31 0.2735914 2.610253e-16 9.949685e-14 0.03989917 0.004122565 0.5656441 2012-04-30 0.2922055 1.587722e-16 6.067738e-14 0.03547084 0.002702204 0.5410721 MS SI SNE UBS YHOO 2011-11-30 2.839639e-11 4.948800e-09 0.06772726 2.005366e-11 0.01832943 2011-12-31 1.743915e-11 3.043044e-09 0.05111445 1.226762e-11 0.03677463 2012-01-31 1.070428e-11 1.870085e-09 0.03695553 7.501827e-12 0.05417893 2012-02-29 6.567043e-12 1.148606e-09 0.02594543 4.585849e-12 0.07736027 2012-03-31 4.026910e-12 7.050968e-10 0.01783053 2.802361e-12 0.09891233 2012-04-30 2.468157e-12 4.326179e-10 0.01205628 1.711928e-12 0.11649304 ... ... ... ... Portfolio Back-test - statistics: Portfolio Benchmark Total Return 1.19925503 0.964008542 Mean Return 0.01042830 0.008382683 StandardDev Return 0.05415594 0.066536889 Maximum Loss -0.25290984 -0.240140032