Class GenericTaxModel
java.lang.Object
neqsim.process.fielddevelopment.economics.GenericTaxModel
- All Implemented Interfaces:
Serializable, 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:
-
Nested Class Summary
Nested classes/interfaces inherited from interface TaxModel
TaxModel.TaxResult -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate final FiscalParametersprivate doubleprivate static final long -
Constructor Summary
ConstructorsConstructorDescriptionGenericTaxModel(FiscalParameters parameters) Creates a new tax model with the specified parameters. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateDepreciation(double capex, int year) Calculates annual depreciation.doublecalculateEffectiveTaxRate(double grossRevenue, double opex, double depreciation, double uplift) Calculates the effective tax rate.double[]calculateProfitSharing(double grossRevenue, double costRecovery) Calculates PSC-style profit sharing.doublecalculateRoyalty(double grossRevenue) Calculates royalty on gross revenue.doublecalculateStateParticipation(double netRevenue) Calculates state/government participation share of revenue.calculateTax(double grossRevenue, double opex, double depreciation, double uplift) Calculates tax for a single year.doublecalculateUplift(double capex, int year) Calculates uplift/investment incentive deduction.static GenericTaxModelforCountry(String countryCode) Creates a tax model for a country using the registry.doubleGets the corporate tax loss carry-forward.Gets the country code.Gets the country name.doubleGets the current loss carry-forward balance.Gets the fiscal parameters for this model.doubleGets the resource tax loss carry-forward.doubleGets the total marginal tax rate.voidreset()Resets any accumulated state (loss carry-forward, etc.).voidsetCorporateTaxLossCarryForward(double lossCarryForward) Sets the corporate tax loss carry-forward.voidsetResourceTaxLossCarryForward(double lossCarryForward) Sets the resource tax loss carry-forward.toString()
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
parameters
-
corporateTaxLossCarryForward
private double corporateTaxLossCarryForward -
resourceTaxLossCarryForward
private double resourceTaxLossCarryForward
-
-
Constructor Details
-
GenericTaxModel
Creates a new tax model with the specified parameters.- Parameters:
parameters- fiscal parameters for this model
-
-
Method Details
-
forCountry
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
Description copied from interface:TaxModelGets the fiscal parameters for this model.- Specified by:
getParametersin interfaceTaxModel- Returns:
- fiscal parameters
-
getCountryCode
Description copied from interface:TaxModelGets the country code.- Specified by:
getCountryCodein interfaceTaxModel- Returns:
- country code
-
getCountryName
Description copied from interface:TaxModelGets the country name.- Specified by:
getCountryNamein interfaceTaxModel- Returns:
- country name
-
calculateTax
public TaxModel.TaxResult calculateTax(double grossRevenue, double opex, double depreciation, double uplift) Description copied from interface:TaxModelCalculates tax for a single year.- Specified by:
calculateTaxin interfaceTaxModel- Parameters:
grossRevenue- total revenue for the yearopex- operating expenditure for the yeardepreciation- depreciation deduction for the yearuplift- uplift/incentive deduction for the year- Returns:
- tax calculation result
-
calculateDepreciation
public double calculateDepreciation(double capex, int year) Description copied from interface:TaxModelCalculates annual depreciation.- Specified by:
calculateDepreciationin interfaceTaxModel- Parameters:
capex- total capital expenditureyear- 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:TaxModelCalculates uplift/investment incentive deduction.- Specified by:
calculateUpliftin interfaceTaxModel- Parameters:
capex- total capital expenditureyear- year number (1 = first year of eligibility)- Returns:
- uplift amount for the specified year
-
calculateRoyalty
public double calculateRoyalty(double grossRevenue) Description copied from interface:TaxModelCalculates royalty on gross revenue.- Specified by:
calculateRoyaltyin interfaceTaxModel- 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:TaxModelCalculates the effective tax rate.- Specified by:
calculateEffectiveTaxRatein interfaceTaxModel- Parameters:
grossRevenue- total revenueopex- operating expendituredepreciation- depreciation deductionuplift- uplift deduction- Returns:
- effective tax rate (0-1)
-
getTotalMarginalTaxRate
public double getTotalMarginalTaxRate()Description copied from interface:TaxModelGets the total marginal tax rate.- Specified by:
getTotalMarginalTaxRatein interfaceTaxModel- Returns:
- sum of all tax rates (0-1)
-
reset
-
getLossCarryForward
public double getLossCarryForward()Description copied from interface:TaxModelGets the current loss carry-forward balance.- Specified by:
getLossCarryForwardin interfaceTaxModel- 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 revenuecostRecovery- recoverable costs- Returns:
- array with [governmentShare, contractorShare]
-
toString
-