larsbadke / portfolio-selector
Portfolio-Selector是一个PHP库,可以帮助您优化您的股票投资组合。
v1.0.0
2016-08-10 08:30 UTC
Requires
- php: ^5.3.3|^7.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-14 19:25:43 UTC
README
Portfolio-Selector是一个PHP库,可以帮助您优化您的股票投资组合。
Portfolio-Selector需要PHP >= 5.3.3。
目录
安装
composer require larsbadke/portfolio-selector
基本用法
首先创建一些股票对象并将表现提交给它们。
<?php // Create Apple stock object and set performances in percent. $apple = new Stock('Apple'); $apple->setPerformances([0, 3, 0, 3]); // Create Google stock object. $google = new Stock('Google'); $google->setPerformances([0, 3, 0, 3]); // Create a new portfolio instance and add your stocks to it $portfolio = new Portfolio(); $portfolio->add($apple); $portfolio->add($google);
现在您可以访问所有典型关键指标。
<?php // Get the expectation value of your portfolio $portfolio->expectation(); // Get the variance of your portfolio $portfolio->variance();
要优化您的投资组合,只需创建一个Selector实例 $selector = new Selector($portfolio)
并运行 $selector->run()
。
<?php $selector = new Selector($portfolio); $selector->run();
完整示例
<?php // create portfolio $portfolio = new Portfolio(); // create stock with performances $intel = new Stock('Intel'); $intel->setPerformances([38.4, -11.6, 2.9]); $nike = new Stock('Nike'); $nike->setPerformances([20.2, 33.3, -6.8]); $visa = new Stock('Visa'); $visa->setPerformances([18.2, 15.4, 6.7]); // add stocks to portfolio $portfolio->add($intel); $portfolio->add($nike); $portfolio->add($visa); // create portfolio selector $selector = new Selector($portfolio); // run portfolio selection $selector->setInterval(1); $selector->run(); foreach ($selector->results() as $result) { $variance = round($result['variance'] * 100, 2); $expectation = round($result['expectation'] * 100, 2); echo "{$variance};{$expectation}<br>"; } // 4.9;13.43 // 4.99;13.45 // 5.08;13.48 // 5.18;13.5 // 5.28;13.52 // 5.38;13.54 // 5.48;13.56 // 5.58;13.58 // 5.68;13.6 // 5.78;13.63 // 5.89;13.65 // 5.99;13.67 // 6.1;13.69 // 6.21;13.71 // 6.31;13.73 // 6.42;13.75 // 6.53;13.77 // 6.64;13.8 // 6.75;13.82 // 6.86;13.84 // 6.97;13.86 // 7.09;13.88 // 7.2;13.9 // 7.31;13.92 // 7.43;13.95 // 7.54;13.97 // 7.65;13.99 // 7.77;14.01 // 7.89;14.03 // 8;14.05 // 8.12;14.07 // ...
####获取风险最低的分配
<?php $portfolio = new Portfolio(); $apple = new Stock('apple'); $google = new Stock('google'); $apple->setPerformances([0, 3, 0, 3]); $google->setPerformances([6, 0, 6, 0]); $portfolio->add($apple); $portfolio->add($google); $selector = new Selector($portfolio); $selector->setInterval(10); $selector->run(); print_r($selector->lowestRisk()); // returns [ { expectation: "0.0195", variance: "0.0015", allocation: { apple: "0.7", google: "0.3" } } ]
注意
大量股票或低分配间隔可能会极大地增加执行时间。如果您想要优化包含许多股票的投资组合,请使用更高的分配间隔。
更多
更多关于投资组合选择的信息:维基百科
许可证
Portfolio-Selector在MIT许可证下发布。有关详细信息,请参阅附带LICENSE文件。