Class PortfolioOptimizer

java.lang.Object
neqsim.process.fielddevelopment.economics.PortfolioOptimizer
All Implemented Interfaces:
Serializable

public class PortfolioOptimizer extends Object implements Serializable
Multi-field portfolio optimizer for capital-constrained investment decisions.

Optimizes project selection across multiple fields subject to annual capital budget constraints. Uses value-based ranking with optional risk weighting to maximize portfolio NPV while respecting budget limits for each year.

Optimization Approaches

  • Greedy NPV/CAPEX: Rank by NPV/investment ratio, select until budget exhausted
  • Risk-Weighted: Adjust ranking by probability of success
  • Balanced: Ensure mix of project types (development, IOR, exploration)

Example Usage

PortfolioOptimizer optimizer = new PortfolioOptimizer();

// Add projects
optimizer.addProject("Field A", 500.0, 850.0, ProjectType.DEVELOPMENT, 0.85);
optimizer.addProject("Field B", 300.0, 420.0, ProjectType.DEVELOPMENT, 0.90);
optimizer.addProject("Field C IOR", 100.0, 180.0, ProjectType.IOR, 0.95);
optimizer.addProject("Exploration X", 150.0, 600.0, ProjectType.EXPLORATION, 0.30);

// Set annual budget constraints
optimizer.setAnnualBudget(2025, 400.0);
optimizer.setAnnualBudget(2026, 450.0);
optimizer.setAnnualBudget(2027, 350.0);

// Optimize
PortfolioResult result = optimizer.optimize(OptimizationStrategy.GREEDY_NPV_RATIO);

// Results
System.out.println("Selected projects: " + result.getSelectedProjects());
System.out.println("Portfolio NPV: " + result.getTotalNpv() + " MUSD");
System.out.println("Capital efficiency: " + result.getCapitalEfficiency());
Version:
1.0
Author:
ESOL
See Also: