larsbadke/portfolio-selector

Portfolio-Selector是一个PHP库,可以帮助您优化您的股票投资组合。

v1.0.0 2016-08-10 08:30 UTC

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
// ...

####性能-风险图(5051分配) 示例

####获取风险最低的分配

<?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文件。