Link.FYI

Pastebin

Create New My Pastes

Code (PHP) pasted on 2019-04-15, 20:40 Raw Source

  1. <?php
  2.     public function getAssetAllocation(Depot $depot)
  3.     {
  4.         $stocks = $depot->getStocks();
  5.         $stockCount = count($stocks);
  6.         $step = 0.01;
  7.         $maxIterations = ($stockCount - $step) / $step;
  8.  
  9.         for ($i = 0; $i <= $maxIterations; $i++) {
  10.             // 3 possible values: +$step -$step and 0
  11.             for ($t = 0; $t <= 17; $t++) {
  12.                 $depots[$t] = clone $depot;
  13.  
  14.                 /**
  15.                  * build variants with depots
  16.                  */
  17.                 /** @var Stock $stock */
  18.                 foreach ($depots[$t]->getStocks() as $stock) {
  19.                     $stock->setAmount();
  20.                 }
  21.  
  22.                 /**
  23.                  * get current yield/volatility
  24.                  */
  25.                 $currentYield = $this->getDepotExpectedYield($depot);
  26.                 $currentVola = $this->getDepotStandardDeviation($depot);
  27.                
  28.                 /**
  29.                  * get the depot with best yield/volatility ratio
  30.                  */
  31.                 foreach($depots as $key => $d){
  32.                     $yield = $this->getDepotExpectedYield($d);
  33.                     $vola = $this->getDepotStandardDeviation($d);
  34.                    
  35.                     if($vola <= $currentVola && $yield >= $currentYield){
  36.                         // better match found. change $depot to new one.
  37.                         $depot = $d;
  38.                     }
  39.                 }
  40.                
  41.             }
  42.         }
  43.     }