The IMSL routines for quadratic programming are
qprog or dqprog (Fortran) and imsl_s_quadratic_prog
imsl_d_quadratic_prog (C).
I am currently checking on the use of IMSL on science.
With these programs
it is easy to build the efficient frontier by looping over a
grid of minimum returns.
It is often easier to make plots in S-Plus and other interactive
software, using a file of points on the efficient frontier written by a
Fortran or C program.
Here is a
sample Fortran program
to build the efficient frontier for the Michaud example, and to
write the points to a file.
An S-Plus program
can read the points on the efficient frontier and plot them.
Both the Fortran and the C libraries are available on the science cluster.
More general programs
can easily be constructed using the IMSL
Librairies.
A sample Windows (DOS) executable.
This program expects the data to be stored in files, and allows some
choices as to what kinds of computations will be performed.
Other Fortran and C routines are available through
netlib.
Some of these are from
ACM TOMS.
There are a couple user-contributed routines available through
statlib
for S-Plus.
The one called "quadratic" does not seem to work for quadratic
programming problems similar to the ones we are solving.
The one called "quadprog" is much more complicated to install.
There is one for R,
"portfolio.optim",
which I have not used.
SAS has PROC NLP in SAS/OR that has a quadratic programming option.
A problem with using SAS is that it is not clear how to use it to
build the efficient frontier.
Sample SAS program
for a single point in the Michaud example.
SAS is available in most of teh PC labs on campus, but not on the
science cluster.