@@ -379,6 +379,10 @@ def _calculate_phased_capex_costs(
379379 """
380380 Calculates the true capitalized cost and interest during pre-revenue years (exploration/permitting/appraisal,
381381 construction) by simulating a year-by-year phased expenditure with inflation.
382+
383+ Per GEOPHIRES convention, financing begins to accrue in Year 0:
384+ - Inflation for Year 0 spending is applied in Year 0.
385+ - Interest on debt for Year 0 spending is accrued in Year 0.
382386 """
383387
384388 logger .info (f"Using Phased CAPEX Schedule: { phased_capex_schedule } " )
@@ -392,17 +396,20 @@ def _calculate_phased_capex_costs(
392396 # Calculate base (overnight) CAPEX for this year
393397 base_capex_this_year_usd = total_overnight_capex_usd * phased_capex_schedule [year_index ]
394398
399+ # Calculate inflation adjustment for this year
395400 inflation_factor = (1.0 + inflation_rate ) ** (year_index + 1 )
396401 inflation_cost_this_year_usd = base_capex_this_year_usd * (inflation_factor - 1.0 )
397402
398403 # Total CAPEX spent this year (including inflation)
399404 capex_this_year_usd = base_capex_this_year_usd + inflation_cost_this_year_usd
400405
401- # Interest is calculated on the opening balance (from previous years' draws)
402- interest_this_year_usd = current_debt_balance_usd * pre_revenue_bond_interest_rate
403-
406+ # Debt drawn to cover this year's spending
404407 new_debt_draw_usd = capex_this_year_usd * debt_fraction
405408
409+ # Interest is calculated on the opening balance PLUS the new draw for this year.
410+ # This aligns with the convention of costs (inflation) being incurred at the start of the year.
411+ interest_this_year_usd = (current_debt_balance_usd + new_debt_draw_usd ) * pre_revenue_bond_interest_rate
412+
406413 # Add this year's direct cost AND capitalized interest to the total project cost basis
407414 total_capitalized_cost_usd += capex_this_year_usd + interest_this_year_usd
408415 total_interest_accrued_usd += interest_this_year_usd
@@ -485,7 +492,11 @@ def _get_single_owner_parameters(model: Model) -> dict[str, Any]:
485492
486493 # TODO/WIP align/adjust for all pre-revenue years (e.g. permitting/exploration, not just construction)
487494 econ .accrued_financing_during_construction_percentage .value = (
488- quantity (construction_financing_cost_usd / total_overnight_capex_usd , 'dimensionless' )
495+ quantity (
496+ # construction_financing_cost_usd / total_overnight_capex_usd,
497+ construction_financing_cost_usd / total_installed_cost_usd ,
498+ 'dimensionless' ,
499+ )
489500 .to (convertible_unit (econ .accrued_financing_during_construction_percentage .CurrentUnits ))
490501 .magnitude
491502 )
0 commit comments