Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
| personal:portfolio:portopt [2014/05/28 12:55] – [Acknowledgements] antonello | personal:portfolio:portopt [2016/02/15 10: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 xi is the share of the asset i, pi is its productivity and hence ∑ixipi is the overall portfolio productivity and ∑i∑jxixjσi,j its variance. | + | where xi is the share of the asset i, pi is its productivity, σi,j is the covariance between assets i and j and hence ∑ixipi is the overall portfolio productivity and ∑i∑jxixjσi,j |
| As the only quadratic term arises when i=j and σi,j being the variance is always positive, the problem is convex and hence easily numerically solved. | As the only quadratic term arises when i=j and σi,j being the variance is always positive, the problem is convex and hence easily numerically solved. | ||
| 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 ising Python: == | + | == As a lib using Python: == |
| import portopt | import portopt | ||
| - | results = portopt.solveport(var, | + | results = portopt.solveport(var, |
| + | functioncost = results[0] | ||
| + | shares | ||
| + | errorcode | ||
| + | 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] | ||
| -a --alpha [alpha_coefficient] | -a --alpha [alpha_coefficient] | ||
| -f --field-delimiter [field_delimiter] | -f --field-delimiter [field_delimiter] | ||
| - | -s --decimal-separator [decimal-separator] | + | -s --decimal-separator [decimal-separator] |
| + | -t --tollerance [tolerance] | ||
| </ | </ | ||
| Line 113: | Line 132: | ||
| * Higher the alpha, lower the agent risk aversion; | * Higher the alpha, lower the agent risk aversion; | ||
| * Set a negative alpha to retrieve the portfolio with the lowest possible variance; | * Set a negative alpha to retrieve the portfolio with the lowest possible variance; | ||
| - | * Set alpha to zero to retrieve the portfolio with the highest mean, indipendently | + | * Set alpha to zero to retrieve the portfolio with the highest mean, independently |
| - | * Assets shares are returned in the x_h vector, eventual error code (0: all fine, 1: input data error, 2: problem has no solutions, 3: internal | + | * 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 |
| + | * Use option " | ||
| | | ||
| | | ||
| Line 127: | 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 ===== | ||
