Class GenericTaxModel

java.lang.Object
neqsim.process.fielddevelopment.economics.GenericTaxModel
All Implemented Interfaces:
Serializable, TaxModel

public class GenericTaxModel extends Object implements TaxModel
Generic tax model implementation driven by FiscalParameters.

This class provides a parameter-driven implementation of the TaxModel interface that can model any concessionary or PSC-type fiscal system based on the provided FiscalParameters.

Supported Features

  • Corporate and resource/petroleum tax
  • Royalties on gross revenue
  • Investment incentives (uplift, tax credits)
  • Multiple depreciation methods
  • Loss carry-forward with optional interest
  • Windfall/excess profit tax
  • PSC-style cost recovery and profit sharing

Example Usage

// Using predefined country parameters
FiscalParameters params = TaxModelRegistry.getParameters("UK");
TaxModel model = new GenericTaxModel(params);

// Calculate tax
TaxModel.TaxResult result = model.calculateTax(500.0, 100.0, 80.0, 0.0);
System.out.println("Total tax: " + result.getTotalTax());
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • parameters

      private final FiscalParameters parameters
    • corporateTaxLossCarryForward

      private double corporateTaxLossCarryForward
    • resourceTaxLossCarryForward

      private double resourceTaxLossCarryForward
  • Constructor Details

    • GenericTaxModel

      public GenericTaxModel(FiscalParameters parameters)
      Creates a new tax model with the specified parameters.
      Parameters:
      parameters - fiscal parameters for this model
  • Method Details

    • forCountry

      public static GenericTaxModel forCountry(String countryCode)
      Creates a tax model for a country using the registry.
      Parameters:
      countryCode - country code (e.g., "NO", "UK", "US-GOM")
      Returns:
      tax model for the country
      Throws:
      IllegalArgumentException - if country not found
    • getParameters

      public FiscalParameters getParameters()
      Description copied from interface: TaxModel
      Gets the fiscal parameters for this model.
      Specified by:
      getParameters in interface TaxModel
      Returns:
      fiscal parameters
    • getCountryCode

      public String getCountryCode()
      Description copied from interface: TaxModel
      Gets the country code.
      Specified by:
      getCountryCode in interface TaxModel
      Returns:
      country code
    • getCountryName

      public String getCountryName()
      Description copied from interface: TaxModel
      Gets the country name.
      Specified by:
      getCountryName in interface TaxModel
      Returns:
      country name
    • calculateTax

      public TaxModel.TaxResult calculateTax(double grossRevenue, double opex, double depreciation, double uplift)
      Description copied from interface: TaxModel
      Calculates tax for a single year.
      Specified by:
      calculateTax in interface TaxModel
      Parameters:
      grossRevenue - total revenue for the year
      opex - operating expenditure for the year
      depreciation - depreciation deduction for the year
      uplift - uplift/incentive deduction for the year
      Returns:
      tax calculation result
    • calculateDepreciation

      public double calculateDepreciation(double capex, int year)
      Description copied from interface: TaxModel
      Calculates annual depreciation.
      Specified by:
      calculateDepreciation in interface TaxModel
      Parameters:
      capex - total capital expenditure
      year - year number (1 = first year of depreciation)
      Returns:
      depreciation amount for the specified year
    • calculateUplift

      public double calculateUplift(double capex, int year)
      Description copied from interface: TaxModel
      Calculates uplift/investment incentive deduction.
      Specified by:
      calculateUplift in interface TaxModel
      Parameters:
      capex - total capital expenditure
      year - year number (1 = first year of eligibility)
      Returns:
      uplift amount for the specified year
    • calculateRoyalty

      public double calculateRoyalty(double grossRevenue)
      Description copied from interface: TaxModel
      Calculates royalty on gross revenue.
      Specified by:
      calculateRoyalty in interface TaxModel
      Parameters:
      grossRevenue - total revenue for the year
      Returns:
      royalty amount
    • calculateEffectiveTaxRate

      public double calculateEffectiveTaxRate(double grossRevenue, double opex, double depreciation, double uplift)
      Description copied from interface: TaxModel
      Calculates the effective tax rate.
      Specified by:
      calculateEffectiveTaxRate in interface TaxModel
      Parameters:
      grossRevenue - total revenue
      opex - operating expenditure
      depreciation - depreciation deduction
      uplift - uplift deduction
      Returns:
      effective tax rate (0-1)
    • getTotalMarginalTaxRate

      public double getTotalMarginalTaxRate()
      Description copied from interface: TaxModel
      Gets the total marginal tax rate.
      Specified by:
      getTotalMarginalTaxRate in interface TaxModel
      Returns:
      sum of all tax rates (0-1)
    • reset

      public void reset()
      Description copied from interface: TaxModel
      Resets any accumulated state (loss carry-forward, etc.).
      Specified by:
      reset in interface TaxModel
    • getLossCarryForward

      public double getLossCarryForward()
      Description copied from interface: TaxModel
      Gets the current loss carry-forward balance.
      Specified by:
      getLossCarryForward in interface TaxModel
      Returns:
      loss carry-forward amount
    • getCorporateTaxLossCarryForward

      public double getCorporateTaxLossCarryForward()
      Gets the corporate tax loss carry-forward.
      Returns:
      corporate tax loss carry-forward
    • getResourceTaxLossCarryForward

      public double getResourceTaxLossCarryForward()
      Gets the resource tax loss carry-forward.
      Returns:
      resource tax loss carry-forward
    • setCorporateTaxLossCarryForward

      public void setCorporateTaxLossCarryForward(double lossCarryForward)
      Sets the corporate tax loss carry-forward.
      Parameters:
      lossCarryForward - loss carry-forward amount
    • setResourceTaxLossCarryForward

      public void setResourceTaxLossCarryForward(double lossCarryForward)
      Sets the resource tax loss carry-forward.
      Parameters:
      lossCarryForward - loss carry-forward amount
    • calculateStateParticipation

      public double calculateStateParticipation(double netRevenue)
      Calculates state/government participation share of revenue.
      Parameters:
      netRevenue - net revenue after costs
      Returns:
      government participation share
    • calculateProfitSharing

      public double[] calculateProfitSharing(double grossRevenue, double costRecovery)
      Calculates PSC-style profit sharing.

      For PSC systems, after cost recovery, the profit oil/gas is split between the government and contractor according to the profit sharing terms.

      Parameters:
      grossRevenue - total revenue
      costRecovery - recoverable costs
      Returns:
      array with [governmentShare, contractorShare]
    • toString

      public String toString()
      Overrides:
      toString in class Object