Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
personal:portfolio:portopt [2014/06/06 10:22] antonello [Usage] |
personal:portfolio:portopt [2016/02/15 11:19] antonello |
||
---|---|---|---|
Line 21: | Line 21: | ||
In portfolio theory agents attempts to maximise portfolio expected return for a given amount of portfolio risk, or equivalently to minimise risk for a given level of expected return. | In portfolio theory agents attempts to maximise portfolio expected return for a given amount of portfolio risk, or equivalently to minimise risk for a given level of expected return. | ||
- | {{ : | + | {{ : |
The portfolio management can be portrayed graphically as in the above Figure, where the feasible set of variance-profitability combinations in enclosed by the blue curve and the B-D segment represents the efficient frontier, where no variance can be lowered at productivity' | The portfolio management can be portrayed graphically as in the above Figure, where the feasible set of variance-profitability combinations in enclosed by the blue curve and the B-D segment represents the efficient frontier, where no variance can be lowered at productivity' | ||
Line 54: | Line 54: | ||
\end{equation} | \end{equation} | ||
- | where $x_i$ is the share of the asset $i$, $p_i$ is its productivity and hence $\sum_i {x_i p_i}$ is the overall portfolio productivity and $\sum_i { \sum_j { x_i x_j \sigma_{i, | + | where $x_i$ is the share of the asset $i$, $p_i$ is its productivity, $\sigma_{i, |
As the only quadratic term arises when $i=j$ and $\sigma_{i, | As the only quadratic term arises when $i=j$ and $\sigma_{i, | ||
Line 81: | Line 81: | ||
g++ -std=c++0x -O -shared -Wl, | g++ -std=c++0x -O -shared -Wl, | ||
(then please refer to the python example for usage) | (then please refer to the python example for usage) | ||
+ | |||
+ | If you want to change the output library name (e.g. you want to create _portopt_p3.so for python3 alongside _portopt.so for python2), do it in the %module variable of portopt.i and in the -soname and -o options of the linking command (and don't forget to use the right python included directory in the compilation command).\\ | ||
+ | You can then load the correct module in your script with something like: | ||
+ | import sys | ||
+ | if sys.version_info < (3, 0): | ||
+ | import portopt | ||
+ | else: | ||
+ | import portopt_p3 as portopt | ||
===== Usage ===== | ===== Usage ===== | ||
+ | |||
+ | :!: Please notice that the API changed from version 1.1, with the introduction of the '' | ||
+ | |||
+ | |||
== Linux == | == Linux == | ||
./portopt [options] | ./portopt [options] | ||
Line 93: | Line 105: | ||
Call: | Call: | ||
- | double solveport (const vector< vector < | + | double solveport (const vector< vector < |
| | ||
== As a lib using Python: == | == As a lib using Python: == | ||
import portopt | import portopt | ||
- | results = portopt.solveport(var, | + | results = portopt.solveport(var, |
functioncost = results[0] | functioncost = results[0] | ||
shares | shares | ||
errorcode | errorcode | ||
errormessage = results[3] | errormessage = results[3] | ||
+ | opt_mean | ||
+ | opt_var | ||
=== Options === | === Options === | ||
< | < | ||
- | -h --help | + | -h --help |
-v --var-file [input_var_file_name] | -v --var-file [input_var_file_name] | ||
-m --means-file [input_means_file_name] | -m --means-file [input_means_file_name] | ||
Line 120: | Line 134: | ||
* Set alpha to zero to retrieve the portfolio with the highest mean, independently from variance (solution not guaranteed to be unique); | * Set alpha to zero to retrieve the portfolio with the highest mean, independently from variance (solution not guaranteed to be unique); | ||
* Assets shares are returned in the x_h vector, eventual error code (0: all fine, 1: input data error, 2: no solutions, 3: didn't solve, 4: solver internal error) in the errorcode parameter. | * Assets shares are returned in the x_h vector, eventual error code (0: all fine, 1: input data error, 2: no solutions, 3: didn't solve, 4: solver internal error) in the errorcode parameter. | ||
- | * Use option " | + | * Use option " |
| | ||
| | ||
Line 133: | Line 147: | ||
You should have received a copy of the GNU Lesser General Public License along with PortOpt. | You should have received a copy of the GNU Lesser General Public License along with PortOpt. | ||
+ | |||
+ | ===== Citations ===== | ||
+ | If you use this program or a derivative of it in an academic framework, please cite it!\\ | ||
+ | Please cite as: | ||
+ | * A. Dragicevic, A. Lobianco, | ||
===== Acknowledgements ===== | ===== Acknowledgements ===== |