Version 4: Interim release June 2008 (Windows only).
Improved efficiency.
Additional constraints: user-supplied integer constraints.
For example, between 7 and 8 assets from a particular sector are
to be in the portfolio.
Additional constraints: linear and integer constraints specific
to long-side and/or short-side.
Ability to scale the bounds of linear constraints in monetary value
and/or weights.
Additional new argument to portfolio.optimizer and random.portfolio
called "positions" that can streamline the specification of limits on the
size of positions and trades for each asset.
A new function trade.distance that gives the distance between two portfolios.
A restart mechanism that allows more exact optimization (at the
expense of more time).
The results of print and summary are more logical.
Version 3: Official release December 2005.
Greatly improved efficiency for large optimization problems.
Additional constraints: portfolio thresholds; number to close; cost limits;
lower bounds for variance, tracking error, portfolio size and number to trade
constraints; upper bounds for alpha constraints.
Forced trades are now supported.
Most warning messages can now be suppressed if desired.
The randport.eval function has been added.
Error checking has been improved.
Version 2: Official release September 2004.
Improved optimization efficiency.
Trading costs with arbitrary exponents.
Trade threshold constraints.
Bug Fixes
Fixes in version 4
Affected: random.portfolio in all previous versions
Date of change: 2008 September 02
Description: The starting spot for random portfolios were
too similar to each other.
This had an effect when there were minimal constraints.
The new behavior goes to the other extreme -- starting spots
are too dissimilar.
However, that is a much easier problem to compensate for.
Affected: portfolio.optimizer
Date of change: 2008 September 02
Description: The visible result of the bug was that forced
trades were sometimes not enforced.
Affected: portfolio.optimizer and random.portfolio in version 4.03
Date of change: 2008 July 09
Description: If there was no existing portfolio and portfolio
threshold values were given, then all threshold constraints were ignored.
Affected: portfolio.optimizer and random.portfolio in version 3.xx
Date of change: 2008 June 18
Description: Under some circumstances in a long-short portfolio
the number of shares traded in some assets could jump beyond their stated
limits.
Fixes in version 3
Affected: portfolio.optimizer and random.portfolio in version 3.03
Date of change: 2006 March 24
Description: When the maximum number of assets to trade was small
relative to the number of assets in the existing portfolio (at least
7 times smaller and often even smaller than that), then R or S-PLUS
could crash.
If a crash did not occur, then the computation was correct.
Affected: portfolio.optimizer and random.portfolio in version 3.03
Date of change: 2006 March 24
Description: R or S-PLUS would generally crash when one or more
trades were forced to have a non-integer value.
The current fix is merely to check for this and create an error
if this is requested.
The plan is to allow this (with a warning) in version 4.
Affected: portfolio.optimizer in version 3.03
Date of change: 2006 March 24
Description: (esoteric) When the output was to be a Clist, then some of the
names were not legal C variable names.
Fixes in version 2
Affected: portfolio.optimizer S code versions 004 and 005
Date of change: 2004 November 25
Description: portfolio.optimizer could sometimes have an error
when trying to add rows for benchmarks into the constraint matrix.
Affected: portfolio.optimizer S code version 004
Date of change: 2004 November 25
Description: portfolio.optimizer could sometimes have an error
in S-PLUS because of how S-PLUS and R differ
when "any" is given a zero-length argument.
The revised version also contains some more safety for the
"max.weight" argument.
Date of change: 2004 September 25
The internal random seed is now properly initialized.
In version 1 the first few random portfolios generated in a call with
exceedingly simple constraints could be not very random.
It is doubtful that this ever had any effect in practice.
"factor.model.stat" didn't compute the standard deviation correctly when
there were missing values for the variable.
A minor problem with "weight" in "factor.model.stat" has been fixed.
"factor.model.stat" now handles infinite values,
and assets with zero volatility.
More sensible behavior is exhibited when net.value=0 is declared.
Fixes in version 1
Affected: portfolio.optimizer C code version 1.01
Date of change: 2003 June 25
Description: portfolio.optimizer could sometimes get trading costs
wrong for assets that were closed out of long-short portfolios.
Affected: portfolio.optimizer C code version 1.01
Date of change: 2003 June 25
Description: Starting solutions could be degraded.
The change ensures that starting solutions are not altered unless
they violate constraints.
Affected: portfolio.optimizer S code version 001
Date of change: 2003 June 25
Description: If net.value was given as zero for a long-short portfolio
in portfolio.optimizer, it used to give the net.value range as (0, 0).
Now the range is (-b, b) where b is the allowance times the maximum
gross value.
Affected: portfolio.optimizer S code version 001
Date of change: 2003 June 25
Description: A clearer error message is now given if no monetary
values are given to portfolio.optimizer for a long-short portfolio.
Affected: pop.verify S code version 001
Date of change: 2003 June 25
Description: pop.verify now tests if the C code for random.portfolio runs.
Affected: Windows NT
Date of change: 2003 June 25
Description: The dll is now built differently to avoid an
unfortunate interaction between Windows NT and the software protection.