diff --git a/data/notebooks/TNC_BlueCarbonTool_prototype.ipynb b/data/notebooks/TNC_BlueCarbonTool_prototype.ipynb
index baf4a516..ad063aaa 100644
--- a/data/notebooks/TNC_BlueCarbonTool_prototype.ipynb
+++ b/data/notebooks/TNC_BlueCarbonTool_prototype.ipynb
@@ -10,6 +10,7 @@
},
{
"cell_type": "code",
+ "execution_count": null,
"id": "f18e62b8",
"metadata": {
"ExecuteTime": {
@@ -17,19 +18,22 @@
"start_time": "2024-10-31T08:16:58.777775Z"
}
},
+ "outputs": [],
"source": [
"import sys\n",
"\n",
- "sys.path.append(\"../src/bcc_model/\")\n",
+ "sys.path.append(\"./src/bcc_model/\")\n",
"\n",
"# import libraries\n",
- "import pandas as pd # noqa: I001\n"
- ],
- "outputs": [],
- "execution_count": 3
+ "import pandas as pd # noqa: I001\n",
+ "from blue_carbon_project import BlueCarbonProject\n",
+ "from cost_calculator import CostCalculator\n",
+ "import json"
+ ]
},
{
"cell_type": "code",
+ "execution_count": null,
"id": "69a08c51",
"metadata": {
"ExecuteTime": {
@@ -37,9 +41,10 @@
"start_time": "2024-10-31T08:17:35.168082Z"
}
},
+ "outputs": [],
"source": [
"# Import excel with the import datai\n",
- "data_path = \"../raw_data/data_ingestion.xlsm\"\n",
+ "data_path = \"./raw_data/data_ingestion.xlsm\"\n",
"\n",
"# Open the excel file - tab 'master_table'\n",
"master_table = pd.read_excel(data_path, sheet_name=\"master_table\")\n",
@@ -51,247 +56,124 @@
"base_increase = pd.read_excel(data_path, sheet_name=\"base_increase\")\n",
"\n",
"base_size.head()"
- ],
- "outputs": [
- {
- "data": {
- "text/plain": [
- " base_size_id activity ecosystem \\\n",
- "0 23f00d7a-bc73-4bdc-8da6-71a48e57c07a Restoration Mangrove \n",
- "1 02ccaf4a-4f25-4180-bf8e-8b08659b4039 Conservation Mangrove \n",
- "2 a7d5b3c5-3489-4eb9-aa4d-263dd1e2f498 Restoration Seagrass \n",
- "3 e800d66e-fdb7-467e-9c4d-5f2e7223111f Conservation Seagrass \n",
- "4 64334920-3e7b-4da9-b4e9-4e8a2c37b55c Restoration Salt marsh \n",
- "\n",
- " feasibility_analysis conservation_planning_and_admin \\\n",
- "0 500 2500 \n",
- "1 20000 20000 \n",
- "2 500 2500 \n",
- "3 20000 20000 \n",
- "4 500 2500 \n",
- "\n",
- " data_collection_and_field_cost community_representation \\\n",
- "0 500 2500 \n",
- "1 20000 20000 \n",
- "2 500 2500 \n",
- "3 20000 20000 \n",
- "4 500 2500 \n",
- "\n",
- " blue_carbon_project_planning establishing_carbon_rights financing_cost \\\n",
- "0 500 500 500 \n",
- "1 20000 20000 20000 \n",
- "2 500 500 500 \n",
- "3 20000 20000 20000 \n",
- "4 500 500 500 \n",
- "\n",
- " validation implementation_labor_planting implementation_labor_hybrid \\\n",
- "0 500 Unit: Unit: \n",
- "1 20000 $/ha $/ha \n",
- "2 500 Unit: Unit: \n",
- "3 20000 $/ha $/ha \n",
- "4 500 Unit: Unit: \n",
- "\n",
- " implementation_labor_hydrology monitoring baseline_reassessment MRV \\\n",
- "0 Unit: 2500 500 500 \n",
- "1 $/ha 20000 20000 20000 \n",
- "2 Unit: 2500 500 500 \n",
- "3 $/ha 20000 20000 20000 \n",
- "4 Unit: 2500 500 500 \n",
- "\n",
- " long_term_project_operating_cost \n",
- "0 2500 \n",
- "1 20000 \n",
- "2 2500 \n",
- "3 20000 \n",
- "4 2500 "
- ],
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " base_size_id | \n",
- " activity | \n",
- " ecosystem | \n",
- " feasibility_analysis | \n",
- " conservation_planning_and_admin | \n",
- " data_collection_and_field_cost | \n",
- " community_representation | \n",
- " blue_carbon_project_planning | \n",
- " establishing_carbon_rights | \n",
- " financing_cost | \n",
- " validation | \n",
- " implementation_labor_planting | \n",
- " implementation_labor_hybrid | \n",
- " implementation_labor_hydrology | \n",
- " monitoring | \n",
- " baseline_reassessment | \n",
- " MRV | \n",
- " long_term_project_operating_cost | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 23f00d7a-bc73-4bdc-8da6-71a48e57c07a | \n",
- " Restoration | \n",
- " Mangrove | \n",
- " 500 | \n",
- " 2500 | \n",
- " 500 | \n",
- " 2500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 500 | \n",
- " Unit: | \n",
- " Unit: | \n",
- " Unit: | \n",
- " 2500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 2500 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 02ccaf4a-4f25-4180-bf8e-8b08659b4039 | \n",
- " Conservation | \n",
- " Mangrove | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " $/ha | \n",
- " $/ha | \n",
- " $/ha | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " a7d5b3c5-3489-4eb9-aa4d-263dd1e2f498 | \n",
- " Restoration | \n",
- " Seagrass | \n",
- " 500 | \n",
- " 2500 | \n",
- " 500 | \n",
- " 2500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 500 | \n",
- " Unit: | \n",
- " Unit: | \n",
- " Unit: | \n",
- " 2500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 2500 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " e800d66e-fdb7-467e-9c4d-5f2e7223111f | \n",
- " Conservation | \n",
- " Seagrass | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " $/ha | \n",
- " $/ha | \n",
- " $/ha | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- " 20000 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 64334920-3e7b-4da9-b4e9-4e8a2c37b55c | \n",
- " Restoration | \n",
- " Salt marsh | \n",
- " 500 | \n",
- " 2500 | \n",
- " 500 | \n",
- " 2500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 500 | \n",
- " Unit: | \n",
- " Unit: | \n",
- " Unit: | \n",
- " 2500 | \n",
- " 500 | \n",
- " 500 | \n",
- " 2500 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 5
+ ]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "cd4823f8",
"metadata": {},
"outputs": [],
"source": [
- "from data.src.restored_code.blue_carbon_project import BlueCarbonProject\n",
+ "## EXAMPLE 1\n",
+ "\n",
+ "# project_name = \"Conservation_Mangrove_Indonesia\"\n",
+ "# loss_rate_used = \"project-specific\"\n",
+ "# # Example usage for a restoration project\n",
+ "# Project = BlueCarbonProject(\n",
+ "# activity=\"Conservation\", # ['Restoration', 'Conservation']\n",
+ "# ecosystem=\"Mangrove\", # ['Mangrove', 'Seagrass', 'Salt marsh']\n",
+ "# country=\"Indonesia\", # [\n",
+ "# #'United States', 'Indonesia', 'Australia', 'The Bahamas', 'Kenya', 'Mexico',\n",
+ "# # 'Colombia', 'India', 'China']\n",
+ "# master_table=master_table,\n",
+ "# base_size=base_size,\n",
+ "# base_increase=base_increase,\n",
+ "# carbon_price=20, # Default value 30\n",
+ "# carbon_revenues_to_cover=\"Opex\", # ['Opex', 'capex+Opex']\n",
+ "# project_size_ha=10000,\n",
+ "# # restoration_activity='Planting', # ['Planting', 'Hybrid', 'Hydrology']\n",
+ "# # sequestration_rate_used='Tier 1 - IPCC default value', # ['Tier 1 - IPCC default value',\n",
+ "# # 'Tier 2 - Country-specific rate', 'Tier 3 - Project-specific rate']\n",
+ "# # project_specific_sequestration_rate=None,\n",
+ "# # planting_success_rate=0.8, # Default value 0.8\n",
+ "# loss_rate_used=\"project-specific\", # ['National average', 'project-specific']\n",
+ "# project_specific_loss_rate=-0.001, # -0.10% loss rate\n",
+ "# emission_factor_used=\"Tier 2 - Country-specific emission factor\",\n",
+ "# # ['Tier 1 - Global emission factor', 'Tier 2 - Country-specific emission factor',\n",
+ "# # 'Tier 3 - Project specific emission factor']\n",
+ "# # tier_3_project_specific_emission=\"AGB and SOC separately\",\n",
+ "# # ['One emission factor', 'AGB and SOC separately']\n",
+ "# # tier_3_project_specific_emission_one_factor=0.5,\n",
+ "# # tier_3_emission_factor_AGB=0.5,\n",
+ "# # tier_3_emission_factor_SOC=0.5\n",
+ "# )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "fd7164aa",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# ### EXAMPLE 2\n",
+ "\n",
+ "# project_name = \"Restoration__China_Salt_marsh\"\n",
+ "# loss_rate_used = \"project-specific\"\n",
+ "# # Example usage for a restoration project\n",
+ "# Project = BlueCarbonProject(\n",
+ "# activity=\"Restoration\", # ['Restoration', 'Conservation']\n",
+ "# ecosystem=\"Salt marsh\", # ['Mangrove', 'Seagrass', 'Salt marsh']\n",
+ "# country=\"China\", # [\n",
+ "# #'United States', 'Indonesia', 'Australia', 'The Bahamas', 'Kenya', 'Mexico',\n",
+ "# # 'Colombia', 'India', 'China']\n",
+ "# master_table=master_table,\n",
+ "# base_size=base_size,\n",
+ "# base_increase=base_increase,\n",
+ "# carbon_price=30, # Default value 30\n",
+ "# carbon_revenues_to_cover=\"Opex\", # ['Opex', 'capex+Opex']\n",
+ "# project_size_ha=500,\n",
+ "# restoration_activity='Hydrology', # ['Planting', 'Hybrid', 'Hydrology']\n",
+ "# sequestration_rate_used='Tier 1 - IPCC default value', # ['Tier 1 - IPCC default value',\n",
+ "# # 'Tier 2 - Country-specific rate', 'Tier 3 - Project-specific rate']\n",
+ "# # project_specific_sequestration_rate=None,\n",
+ "# planting_success_rate=0.8, # Default value 0.8\n",
+ "# # loss_rate_used=\"project-specific\", # ['National average', 'project-specific']\n",
+ "# # project_specific_loss_rate=-0.001, # -0.10% loss rate\n",
+ "# # emission_factor_used=\"Tier 2 - Country-specific emission factor\",\n",
+ "# # ['Tier 1 - Global emission factor', 'Tier 2 - Country-specific emission factor',\n",
+ "# # 'Tier 3 - Project specific emission factor']\n",
+ "# # tier_3_project_specific_emission=\"AGB and SOC separately\",\n",
+ "# # ['One emission factor', 'AGB and SOC separately']\n",
+ "# # tier_3_project_specific_emission_one_factor=0.5,\n",
+ "# # tier_3_emission_factor_AGB=0.5,\n",
+ "# # tier_3_emission_factor_SOC=0.5\n",
+ "# )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e876fda0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### EXAMPLE 3\n",
"\n",
+ "project_name = \"Restoration_Mexico_Mangrove\"\n",
+ "# loss_rate_used = \"project-specific\"\n",
"# Example usage for a restoration project\n",
"Project = BlueCarbonProject(\n",
- " activity=\"Conservation\", # ['Restoration', 'Conservation']\n",
+ " activity=\"Restoration\", # ['Restoration', 'Conservation']\n",
" ecosystem=\"Mangrove\", # ['Mangrove', 'Seagrass', 'Salt marsh']\n",
- " country=\"Indonesia\", # [\n",
- " #'United States', 'Indonesia', 'Australia', 'Caribbean', 'Kenya', 'Mexico',\n",
+ " country=\"Mexico\", # [\n",
+ " #'United States', 'Indonesia', 'Australia', 'The Bahamas', 'Kenya', 'Mexico',\n",
" # 'Colombia', 'India', 'China']\n",
" master_table=master_table,\n",
" base_size=base_size,\n",
" base_increase=base_increase,\n",
- " carbon_price=20, # Default value 30\n",
- " carbon_revenues_to_cover=\"Opex\", # ['Opex', 'capex+Opex']\n",
- " project_size_ha=10000,\n",
- " # restoration_activity='Planting', # ['Planting', 'Hybrid', 'Hydrology']\n",
- " # sequestration_rate_used='Tier 1 - IPCC default value', # ['Tier 1 - IPCC default value',\n",
+ " carbon_price=30, # Default value 30\n",
+ " carbon_revenues_to_cover=\"capex+Opex\", # ['Opex', 'capex+Opex']\n",
+ " project_size_ha=500,\n",
+ " restoration_activity=\"Planting\", # ['Planting', 'Hybrid', 'Hydrology']\n",
+ " sequestration_rate_used=\"Tier 2 - Country-specific rate\", # ['Tier 1 - IPCC default value',\n",
" # 'Tier 2 - Country-specific rate', 'Tier 3 - Project-specific rate']\n",
" # project_specific_sequestration_rate=None,\n",
- " # planting_success_rate=0.8, # Default value 0.8\n",
- " loss_rate_used=\"project-specific\", # ['National average', 'project-specific']\n",
- " project_specific_loss_rate=-0.001,\n",
- " emission_factor_used=\"Tier 2 - Country-specific emission factor\",\n",
+ " planting_success_rate=0.8, # Default value 0.8\n",
+ " # loss_rate_used=\"project-specific\", # ['National average', 'project-specific']\n",
+ " # project_specific_loss_rate=-0.001, # -0.10% loss rate\n",
+ " # emission_factor_used=\"Tier 2 - Country-specific emission factor\",\n",
" # ['Tier 1 - Global emission factor', 'Tier 2 - Country-specific emission factor',\n",
" # 'Tier 3 - Project specific emission factor']\n",
" # tier_3_project_specific_emission=\"AGB and SOC separately\",\n",
@@ -304,1261 +186,78 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "b9257143",
"metadata": {},
"outputs": [],
"source": [
- "Project.set_additional_assumptions(\n",
- " # verification_frequency,\n",
- " # discount_rate,\n",
- " # carbon_price_increase,\n",
- " buffer=0.28,\n",
- " # baseline_reassessment_frequency,\n",
- " conservation_project_length=30,\n",
- " # restoration_project_length,\n",
- " # restoration_rate\n",
- ")\n",
+ "# Project.set_additional_assumptions(\n",
+ "# # verification_frequency,\n",
+ "# # discount_rate,\n",
+ "# # carbon_price_increase,\n",
+ "# buffer=0.28,\n",
+ "# # baseline_reassessment_frequency,\n",
+ "# conservation_project_length=30,\n",
+ "# # restoration_project_length,\n",
+ "# # restoration_rate\n",
+ "# )\n",
"\n",
- "Project.override_cost_input(\n",
- " feasibility_analysis=30000\n",
- " # conservation_planning_and_admin,\n",
- " # data_collection_and_field_cost,\n",
- " # community_representation,\n",
- " # blue_carbon_project_planning,\n",
- " # establishing_carbon_rights,\n",
- " # validation,\n",
- " # implementation_labor,\n",
- " # monitoring,\n",
- " # maintenance,\n",
- " # community_benefit_sharing_fund,\n",
- " # carbon_standard_fees,\n",
- " # baseline_reassessment,\n",
- " # MRV,\n",
- " # long_term_project_operating,\n",
- " # financing_cost\n",
- ")"
+ "# Project.override_cost_input(\n",
+ "# feasibility_analysis=30000\n",
+ "# # conservation_planning_and_admin,\n",
+ "# # data_collection_and_field_cost,\n",
+ "# # community_representation,\n",
+ "# # blue_carbon_project_planning,\n",
+ "# # establishing_carbon_rights,\n",
+ "# # validation,\n",
+ "# # implementation_labor,\n",
+ "# # monitoring,\n",
+ "# # maintenance,\n",
+ "# # community_benefit_sharing_fund,\n",
+ "# # carbon_standard_fees,\n",
+ "# # baseline_reassessment,\n",
+ "# # MRV,\n",
+ "# # long_term_project_operating,\n",
+ "# # financing_cost\n",
+ "# )"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "ae61fc4c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{'Activity': 'Conservation',\n",
- " 'Ecosystem': 'Mangrove',\n",
- " 'Country': 'Indonesia',\n",
- " 'Country codee': 'IDN',\n",
- " 'Project size (ha)': 10000,\n",
- " 'Initial carbon price assumption ($)': 20,\n",
- " 'Carbon revenues to cover': 'Opex',\n",
- " 'Carbon revenues will not cover': 'Capex',\n",
- " 'Conservation additional parameters': {'Loss rate used': 'project-specific',\n",
- " 'project-specific': -0.001,\n",
- " 'Emission factor used': 'Tier 2 - Country-specific emission factor',\n",
- " 'Global emission factor': None,\n",
- " 'Country-specific emission factors': {'Emission factor AGB': 355.398393765212,\n",
- " 'Emission factor SOC': 71.8766416255784},\n",
- " 'Tier 3 - Project-specific emissions - one emission factor or separate AGB and SOC': None,\n",
- " 'Tier 3 - Emission factor (One)': None,\n",
- " 'Tier 3 - AGB and SOC separately': None},\n",
- " 'Additional assumptions': {'Verification frequency (years)': 5,\n",
- " 'Discount rate (%)': 4.0,\n",
- " 'Carbon price increase (%)': 1.5,\n",
- " 'Buffer (%)': 28,\n",
- " 'Baseline reassessment frequency (years)': 10,\n",
- " 'For Conservation projects only': {'Conservation project length (yr)': 30}},\n",
- " 'Cost inputs': {'CAPEX': {'Blue carbon project planning ($/project): 100,000',\n",
- " 'Community representation ($/yr): 71,183',\n",
- " 'Conservation planning and admin ($/yr): 166,767',\n",
- " 'Data collection and field cost ($/yr): 26,667',\n",
- " 'Establishing carbon rights ($/yr): 46,667',\n",
- " 'Feasibility analysis ($/project): 30,000',\n",
- " 'Implementation labor ($/ha): 0',\n",
- " 'Validation ($/project): 50,000'},\n",
- " 'OPEX': {'Baseline reassessment ($/event): 40,000',\n",
- " 'Carbon standard fees ($/credit): 0.20',\n",
- " 'Community benefit sharing fund (prc of revenue): 50',\n",
- " 'Long-term project operating ($/yr): 26,400',\n",
- " 'MRV ($/event): 75,000',\n",
- " 'Maintenance (prc of implementation labor): 8',\n",
- " 'Monitoring ($/yr): 15,000'},\n",
- " 'Other': {'Financing cost (prc of capex) 5'}}}"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "Project.get_project_parameters()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "597009ef",
- "metadata": {},
"outputs": [],
"source": [
- "from data.src.restored_code.cost_calculator import CostCalculator\n",
+ "project_params = Project.get_project_parameters()\n",
+ "cost_calculator = CostCalculator(Project)\n",
+ "cost_summary = cost_calculator.get_summary()\n",
+ "cost_estimates = cost_calculator.get_cost_estimates()\n",
"\n",
- "cost_calculator = CostCalculator(Project)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "9d8e8055",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{'Project': 'Indonesia Mangrove\\n Conservation (10000 ha)',\n",
- " '$/tCO2e (total cost, NPV)': '$16',\n",
- " '$/ha': '$358',\n",
- " 'NPV covering cost': '$392,807',\n",
- " 'IRR when priced to cover opex': '18.5%',\n",
- " 'IRR when priced to cover total costs': '-1.1%',\n",
- " 'Total cost (NPV)': '$3,576,251',\n",
- " 'Capital expenditure (NPV)': '$1,268,099',\n",
- " 'Operating expenditure (NPV)': '$2,308,151',\n",
- " 'Credits issued': '225,700',\n",
- " 'Total revenue (NPV)': '$2,700,959',\n",
- " 'Total revenue (non-discounted)': '$5,862,020',\n",
- " 'Financing cost': '$67,590',\n",
- " 'Funding gap (NPV)': '$0',\n",
- " 'Funding gap per tCO2e (NPV)': '$0.0',\n",
- " 'Community benefit sharing fund % of revenue': '\\n 50%'}"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "cost_calculator.get_summary()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "a30d90be",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " Cost estimates (USD) | \n",
- " Total cost | \n",
- " NPV | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " Capital expenditure | \n",
- " $1,351,800 | \n",
- " $1,268,099 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " Feasibility analysis | \n",
- " $30,000 | \n",
- " $30,000 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " Conservation planning and admin | \n",
- " $667,067 | \n",
- " $629,559 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " Data collection and field costs | \n",
- " $80,000 | \n",
- " $76,963 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " Community representation / liaison | \n",
- " $284,733 | \n",
- " $268,724 | \n",
- "
\n",
- " \n",
- " 5 | \n",
- " Blue carbon project planning | \n",
- " $100,000 | \n",
- " $88,900 | \n",
- "
\n",
- " \n",
- " 6 | \n",
- " Establishing carbon rights | \n",
- " $140,000 | \n",
- " $129,504 | \n",
- "
\n",
- " \n",
- " 7 | \n",
- " Validation | \n",
- " $50,000 | \n",
- " $44,450 | \n",
- "
\n",
- " \n",
- " 8 | \n",
- " Implementation labor | \n",
- " $0 | \n",
- " $0 | \n",
- "
\n",
- " \n",
- " 9 | \n",
- " Operating expenditure | \n",
- " $4,828,150 | \n",
- " $2,308,151 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " Monitoring | \n",
- " $450,000 | \n",
- " $230,588 | \n",
- "
\n",
- " \n",
- " 11 | \n",
- " Maintenance | \n",
- " $0 | \n",
- " $0 | \n",
- "
\n",
- " \n",
- " 12 | \n",
- " Community benefit sharing fund | \n",
- " $2,931,010 | \n",
- " $1,350,479 | \n",
- "
\n",
- " \n",
- " 13 | \n",
- " Carbon standard fees | \n",
- " $45,140 | \n",
- " $21,608 | \n",
- "
\n",
- " \n",
- " 14 | \n",
- " Baseline reassessment | \n",
- " $160,000 | \n",
- " $86,776 | \n",
- "
\n",
- " \n",
- " 15 | \n",
- " MRV | \n",
- " $450,000 | \n",
- " $212,864 | \n",
- "
\n",
- " \n",
- " 16 | \n",
- " Long-term project operating | \n",
- " $792,000 | \n",
- " $405,835 | \n",
- "
\n",
- " \n",
- " 17 | \n",
- " Total cost | \n",
- " $6,179,950 | \n",
- " $3,576,251 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " Cost estimates (USD) Total cost NPV\n",
- "0 Capital expenditure $1,351,800 $1,268,099\n",
- "1 Feasibility analysis $30,000 $30,000\n",
- "2 Conservation planning and admin $667,067 $629,559\n",
- "3 Data collection and field costs $80,000 $76,963\n",
- "4 Community representation / liaison $284,733 $268,724\n",
- "5 Blue carbon project planning $100,000 $88,900\n",
- "6 Establishing carbon rights $140,000 $129,504\n",
- "7 Validation $50,000 $44,450\n",
- "8 Implementation labor $0 $0\n",
- "9 Operating expenditure $4,828,150 $2,308,151\n",
- "10 Monitoring $450,000 $230,588\n",
- "11 Maintenance $0 $0\n",
- "12 Community benefit sharing fund $2,931,010 $1,350,479\n",
- "13 Carbon standard fees $45,140 $21,608\n",
- "14 Baseline reassessment $160,000 $86,776\n",
- "15 MRV $450,000 $212,864\n",
- "16 Long-term project operating $792,000 $405,835\n",
- "17 Total cost $6,179,950 $3,576,251"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "cost_calculator.get_cost_estimates()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "id": "6a83b4c1",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " -4 | \n",
- " -3 | \n",
- " -2 | \n",
- " -1 | \n",
- " 1 | \n",
- " 2 | \n",
- " 3 | \n",
- " 4 | \n",
- " 5 | \n",
- " 6 | \n",
- " ... | \n",
- " 23 | \n",
- " 24 | \n",
- " 25 | \n",
- " 26 | \n",
- " 27 | \n",
- " 28 | \n",
- " 29 | \n",
- " 30 | \n",
- " Total | \n",
- " NPV | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Feasibility analysis | \n",
- " -30000.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -30000.00 | \n",
- " -30000.0 | \n",
- "
\n",
- " \n",
- " Conservation planning and admin | \n",
- " -166767.0 | \n",
- " -166767.0 | \n",
- " -166767.0 | \n",
- " -166767.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -667067.00 | \n",
- " -629559.0 | \n",
- "
\n",
- " \n",
- " Data collection and field costs | \n",
- " -26667.0 | \n",
- " -26667.0 | \n",
- " -26667.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -80000.00 | \n",
- " -76963.0 | \n",
- "
\n",
- " \n",
- " Community representation / liaison | \n",
- " -71183.0 | \n",
- " -71183.0 | \n",
- " -71183.0 | \n",
- " -71183.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -284733.00 | \n",
- " -268724.0 | \n",
- "
\n",
- " \n",
- " Blue carbon project planning | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -100000.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -100000.00 | \n",
- " -88900.0 | \n",
- "
\n",
- " \n",
- " Establishing carbon rights | \n",
- " 0.0 | \n",
- " -46667.0 | \n",
- " -46667.0 | \n",
- " -46667.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -140000.00 | \n",
- " -129504.0 | \n",
- "
\n",
- " \n",
- " Validation | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -50000.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -50000.00 | \n",
- " -44450.0 | \n",
- "
\n",
- " \n",
- " Implementation labor | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -0.0 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " ... | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " 0.00 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " Total capex | \n",
- " -294617.0 | \n",
- " -311283.0 | \n",
- " -311283.0 | \n",
- " -434617.0 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " ... | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -1351800.00 | \n",
- " -1268099.0 | \n",
- "
\n",
- " \n",
- " Monitoring | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " ... | \n",
- " -15000.0 | \n",
- " -15000.0 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -15000.00 | \n",
- " -450000.00 | \n",
- " -230588.0 | \n",
- "
\n",
- " \n",
- " Maintenance | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " ... | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " -0.00 | \n",
- " 0.00 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " Community benefit sharing fund | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -31659.00 | \n",
- " -37874.00 | \n",
- " -44263.00 | \n",
- " -50828.00 | \n",
- " -57575.00 | \n",
- " -64506.00 | \n",
- " ... | \n",
- " -120577.0 | \n",
- " -122874.0 | \n",
- " -125213.00 | \n",
- " -127594.00 | \n",
- " -130018.00 | \n",
- " -132485.00 | \n",
- " -134997.00 | \n",
- " -137553.00 | \n",
- " -2931010.00 | \n",
- " -1350479.0 | \n",
- "
\n",
- " \n",
- " Carbon standard fees | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -624.00 | \n",
- " -735.00 | \n",
- " -847.00 | \n",
- " -958.00 | \n",
- " -1069.00 | \n",
- " -1180.00 | \n",
- " ... | \n",
- " -1712.0 | \n",
- " -1719.0 | \n",
- " -1726.00 | \n",
- " -1733.00 | \n",
- " -1740.00 | \n",
- " -1746.00 | \n",
- " -1753.00 | \n",
- " -1760.00 | \n",
- " -45140.00 | \n",
- " -21608.0 | \n",
- "
\n",
- " \n",
- " Baseline reassessment | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -40000.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -40000.00 | \n",
- " -160000.00 | \n",
- " -86776.0 | \n",
- "
\n",
- " \n",
- " MRV | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -75000.00 | \n",
- " 0.00 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -75000.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " 0.00 | \n",
- " -75000.00 | \n",
- " -450000.00 | \n",
- " -212864.0 | \n",
- "
\n",
- " \n",
- " Long-term project operating | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " ... | \n",
- " -26400.0 | \n",
- " -26400.0 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -26400.00 | \n",
- " -792000.00 | \n",
- " -405835.0 | \n",
- "
\n",
- " \n",
- " Total opex | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -0.0 | \n",
- " -40000.0 | \n",
- " -73683.00 | \n",
- " -80010.00 | \n",
- " -86509.00 | \n",
- " -93186.00 | \n",
- " -175044.00 | \n",
- " -107086.00 | \n",
- " ... | \n",
- " -163689.0 | \n",
- " -165994.0 | \n",
- " -243339.00 | \n",
- " -170727.00 | \n",
- " -173158.00 | \n",
- " -175632.00 | \n",
- " -178150.00 | \n",
- " -295713.00 | \n",
- " -4828150.00 | \n",
- " -2308151.0 | \n",
- "
\n",
- " \n",
- " Total cost | \n",
- " -294617.0 | \n",
- " -311283.0 | \n",
- " -311283.0 | \n",
- " -474617.0 | \n",
- " -73683.00 | \n",
- " -80010.00 | \n",
- " -86509.00 | \n",
- " -93186.00 | \n",
- " -175044.00 | \n",
- " -107086.00 | \n",
- " ... | \n",
- " -163689.0 | \n",
- " -165994.0 | \n",
- " -243339.00 | \n",
- " -170727.00 | \n",
- " -173158.00 | \n",
- " -175632.00 | \n",
- " -178150.00 | \n",
- " -295713.00 | \n",
- " -6179950.00 | \n",
- " -3576251.0 | \n",
- "
\n",
- " \n",
- " Est. credits issued | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 3119.15 | \n",
- " 3676.31 | \n",
- " 4232.91 | \n",
- " 4788.96 | \n",
- " 5344.45 | \n",
- " 5899.39 | \n",
- " ... | \n",
- " 8561.4 | \n",
- " 8595.6 | \n",
- " 8629.78 | \n",
- " 8663.91 | \n",
- " 8698.02 | \n",
- " 8732.09 | \n",
- " 8766.12 | \n",
- " 8800.13 | \n",
- " 225700.18 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " Est. revenue | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 63319.00 | \n",
- " 75749.00 | \n",
- " 88525.00 | \n",
- " 101657.00 | \n",
- " 115150.00 | \n",
- " 129013.00 | \n",
- " ... | \n",
- " 241154.0 | \n",
- " 245749.0 | \n",
- " 250427.00 | \n",
- " 255189.00 | \n",
- " 260036.00 | \n",
- " 264970.00 | \n",
- " 269993.00 | \n",
- " 275106.00 | \n",
- " 5862020.00 | \n",
- " 2700959.0 | \n",
- "
\n",
- " \n",
- " Annual net cash flow | \n",
- " -294617.0 | \n",
- " -311283.0 | \n",
- " -311283.0 | \n",
- " -474617.0 | \n",
- " -10364.00 | \n",
- " -4261.00 | \n",
- " 2016.00 | \n",
- " 8470.00 | \n",
- " -59894.00 | \n",
- " 21927.00 | \n",
- " ... | \n",
- " 77464.0 | \n",
- " 79755.0 | \n",
- " 7087.00 | \n",
- " 84462.00 | \n",
- " 86878.00 | \n",
- " 89339.00 | \n",
- " 91843.00 | \n",
- " -20607.00 | \n",
- " -317930.00 | \n",
- " -875292.0 | \n",
- "
\n",
- " \n",
- " Annual net income (revenue – OPEX) | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -40000.0 | \n",
- " -10364.00 | \n",
- " -4261.00 | \n",
- " 2016.00 | \n",
- " 8470.00 | \n",
- " -59894.00 | \n",
- " 21927.00 | \n",
- " ... | \n",
- " 77464.0 | \n",
- " 79755.0 | \n",
- " 7087.00 | \n",
- " 84462.00 | \n",
- " 86878.00 | \n",
- " 89339.00 | \n",
- " 91843.00 | \n",
- " -20607.00 | \n",
- " 1033870.00 | \n",
- " 392807.0 | \n",
- "
\n",
- " \n",
- " Cumulative net income (revenue - OPEX) | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " -35560.0 | \n",
- " -44419.00 | \n",
- " -47922.00 | \n",
- " -46328.00 | \n",
- " -39891.00 | \n",
- " -83655.00 | \n",
- " -68250.00 | \n",
- " ... | \n",
- " 261896.0 | \n",
- " 289557.0 | \n",
- " 291920.00 | \n",
- " 319003.00 | \n",
- " 345789.00 | \n",
- " 372275.00 | \n",
- " 398455.00 | \n",
- " 392807.00 | \n",
- " 0.00 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " Cumulative net income (revenue - CAPEX - OPEX) | \n",
- " -294617.0 | \n",
- " -593928.0 | \n",
- " -881727.0 | \n",
- " -1303659.0 | \n",
- " -1312519.00 | \n",
- " -1316021.00 | \n",
- " -1314427.00 | \n",
- " -1307991.00 | \n",
- " -1351755.00 | \n",
- " -1336349.00 | \n",
- " ... | \n",
- " -1006203.0 | \n",
- " -978542.0 | \n",
- " -976179.00 | \n",
- " -949096.00 | \n",
- " -922310.00 | \n",
- " -895824.00 | \n",
- " -869644.00 | \n",
- " -875292.00 | \n",
- " 0.00 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
24 rows × 36 columns
\n",
- "
"
- ],
- "text/plain": [
- " -4 -3 -2 \\\n",
- "Feasibility analysis -30000.0 0.0 0.0 \n",
- "Conservation planning and admin -166767.0 -166767.0 -166767.0 \n",
- "Data collection and field costs -26667.0 -26667.0 -26667.0 \n",
- "Community representation / liaison -71183.0 -71183.0 -71183.0 \n",
- "Blue carbon project planning 0.0 0.0 0.0 \n",
- "Establishing carbon rights 0.0 -46667.0 -46667.0 \n",
- "Validation 0.0 0.0 0.0 \n",
- "Implementation labor 0.0 0.0 0.0 \n",
- "Total capex -294617.0 -311283.0 -311283.0 \n",
- "Monitoring 0.0 0.0 0.0 \n",
- "Maintenance 0.0 0.0 0.0 \n",
- "Community benefit sharing fund -0.0 -0.0 -0.0 \n",
- "Carbon standard fees 0.0 0.0 0.0 \n",
- "Baseline reassessment 0.0 0.0 0.0 \n",
- "MRV 0.0 0.0 0.0 \n",
- "Long-term project operating 0.0 0.0 0.0 \n",
- "Total opex -0.0 -0.0 -0.0 \n",
- "Total cost -294617.0 -311283.0 -311283.0 \n",
- "Est. credits issued 0.0 0.0 0.0 \n",
- "Est. revenue 0.0 0.0 0.0 \n",
- "Annual net cash flow -294617.0 -311283.0 -311283.0 \n",
- "Annual net income (revenue – OPEX) 0.0 0.0 0.0 \n",
- "Cumulative net income (revenue - OPEX) 0.0 0.0 0.0 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -294617.0 -593928.0 -881727.0 \n",
- "\n",
- " -1 1 \\\n",
- "Feasibility analysis 0.0 0.00 \n",
- "Conservation planning and admin -166767.0 0.00 \n",
- "Data collection and field costs 0.0 0.00 \n",
- "Community representation / liaison -71183.0 0.00 \n",
- "Blue carbon project planning -100000.0 0.00 \n",
- "Establishing carbon rights -46667.0 0.00 \n",
- "Validation -50000.0 0.00 \n",
- "Implementation labor -0.0 -0.00 \n",
- "Total capex -434617.0 -0.00 \n",
- "Monitoring 0.0 -15000.00 \n",
- "Maintenance 0.0 -0.00 \n",
- "Community benefit sharing fund -0.0 -31659.00 \n",
- "Carbon standard fees 0.0 -624.00 \n",
- "Baseline reassessment -40000.0 0.00 \n",
- "MRV 0.0 0.00 \n",
- "Long-term project operating 0.0 -26400.00 \n",
- "Total opex -40000.0 -73683.00 \n",
- "Total cost -474617.0 -73683.00 \n",
- "Est. credits issued 0.0 3119.15 \n",
- "Est. revenue 0.0 63319.00 \n",
- "Annual net cash flow -474617.0 -10364.00 \n",
- "Annual net income (revenue – OPEX) -40000.0 -10364.00 \n",
- "Cumulative net income (revenue - OPEX) -35560.0 -44419.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -1303659.0 -1312519.00 \n",
- "\n",
- " 2 3 \\\n",
- "Feasibility analysis 0.00 0.00 \n",
- "Conservation planning and admin 0.00 0.00 \n",
- "Data collection and field costs 0.00 0.00 \n",
- "Community representation / liaison 0.00 0.00 \n",
- "Blue carbon project planning 0.00 0.00 \n",
- "Establishing carbon rights 0.00 0.00 \n",
- "Validation 0.00 0.00 \n",
- "Implementation labor -0.00 -0.00 \n",
- "Total capex -0.00 -0.00 \n",
- "Monitoring -15000.00 -15000.00 \n",
- "Maintenance -0.00 -0.00 \n",
- "Community benefit sharing fund -37874.00 -44263.00 \n",
- "Carbon standard fees -735.00 -847.00 \n",
- "Baseline reassessment 0.00 0.00 \n",
- "MRV 0.00 0.00 \n",
- "Long-term project operating -26400.00 -26400.00 \n",
- "Total opex -80010.00 -86509.00 \n",
- "Total cost -80010.00 -86509.00 \n",
- "Est. credits issued 3676.31 4232.91 \n",
- "Est. revenue 75749.00 88525.00 \n",
- "Annual net cash flow -4261.00 2016.00 \n",
- "Annual net income (revenue – OPEX) -4261.00 2016.00 \n",
- "Cumulative net income (revenue - OPEX) -47922.00 -46328.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -1316021.00 -1314427.00 \n",
- "\n",
- " 4 5 \\\n",
- "Feasibility analysis 0.00 0.00 \n",
- "Conservation planning and admin 0.00 0.00 \n",
- "Data collection and field costs 0.00 0.00 \n",
- "Community representation / liaison 0.00 0.00 \n",
- "Blue carbon project planning 0.00 0.00 \n",
- "Establishing carbon rights 0.00 0.00 \n",
- "Validation 0.00 0.00 \n",
- "Implementation labor -0.00 -0.00 \n",
- "Total capex -0.00 -0.00 \n",
- "Monitoring -15000.00 -15000.00 \n",
- "Maintenance -0.00 -0.00 \n",
- "Community benefit sharing fund -50828.00 -57575.00 \n",
- "Carbon standard fees -958.00 -1069.00 \n",
- "Baseline reassessment 0.00 0.00 \n",
- "MRV 0.00 -75000.00 \n",
- "Long-term project operating -26400.00 -26400.00 \n",
- "Total opex -93186.00 -175044.00 \n",
- "Total cost -93186.00 -175044.00 \n",
- "Est. credits issued 4788.96 5344.45 \n",
- "Est. revenue 101657.00 115150.00 \n",
- "Annual net cash flow 8470.00 -59894.00 \n",
- "Annual net income (revenue – OPEX) 8470.00 -59894.00 \n",
- "Cumulative net income (revenue - OPEX) -39891.00 -83655.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -1307991.00 -1351755.00 \n",
- "\n",
- " 6 ... 23 \\\n",
- "Feasibility analysis 0.00 ... 0.0 \n",
- "Conservation planning and admin 0.00 ... 0.0 \n",
- "Data collection and field costs 0.00 ... 0.0 \n",
- "Community representation / liaison 0.00 ... 0.0 \n",
- "Blue carbon project planning 0.00 ... 0.0 \n",
- "Establishing carbon rights 0.00 ... 0.0 \n",
- "Validation 0.00 ... 0.0 \n",
- "Implementation labor -0.00 ... -0.0 \n",
- "Total capex -0.00 ... -0.0 \n",
- "Monitoring -15000.00 ... -15000.0 \n",
- "Maintenance -0.00 ... -0.0 \n",
- "Community benefit sharing fund -64506.00 ... -120577.0 \n",
- "Carbon standard fees -1180.00 ... -1712.0 \n",
- "Baseline reassessment 0.00 ... 0.0 \n",
- "MRV 0.00 ... 0.0 \n",
- "Long-term project operating -26400.00 ... -26400.0 \n",
- "Total opex -107086.00 ... -163689.0 \n",
- "Total cost -107086.00 ... -163689.0 \n",
- "Est. credits issued 5899.39 ... 8561.4 \n",
- "Est. revenue 129013.00 ... 241154.0 \n",
- "Annual net cash flow 21927.00 ... 77464.0 \n",
- "Annual net income (revenue – OPEX) 21927.00 ... 77464.0 \n",
- "Cumulative net income (revenue - OPEX) -68250.00 ... 261896.0 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -1336349.00 ... -1006203.0 \n",
- "\n",
- " 24 25 \\\n",
- "Feasibility analysis 0.0 0.00 \n",
- "Conservation planning and admin 0.0 0.00 \n",
- "Data collection and field costs 0.0 0.00 \n",
- "Community representation / liaison 0.0 0.00 \n",
- "Blue carbon project planning 0.0 0.00 \n",
- "Establishing carbon rights 0.0 0.00 \n",
- "Validation 0.0 0.00 \n",
- "Implementation labor -0.0 -0.00 \n",
- "Total capex -0.0 -0.00 \n",
- "Monitoring -15000.0 -15000.00 \n",
- "Maintenance -0.0 -0.00 \n",
- "Community benefit sharing fund -122874.0 -125213.00 \n",
- "Carbon standard fees -1719.0 -1726.00 \n",
- "Baseline reassessment 0.0 0.00 \n",
- "MRV 0.0 -75000.00 \n",
- "Long-term project operating -26400.0 -26400.00 \n",
- "Total opex -165994.0 -243339.00 \n",
- "Total cost -165994.0 -243339.00 \n",
- "Est. credits issued 8595.6 8629.78 \n",
- "Est. revenue 245749.0 250427.00 \n",
- "Annual net cash flow 79755.0 7087.00 \n",
- "Annual net income (revenue – OPEX) 79755.0 7087.00 \n",
- "Cumulative net income (revenue - OPEX) 289557.0 291920.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -978542.0 -976179.00 \n",
- "\n",
- " 26 27 \\\n",
- "Feasibility analysis 0.00 0.00 \n",
- "Conservation planning and admin 0.00 0.00 \n",
- "Data collection and field costs 0.00 0.00 \n",
- "Community representation / liaison 0.00 0.00 \n",
- "Blue carbon project planning 0.00 0.00 \n",
- "Establishing carbon rights 0.00 0.00 \n",
- "Validation 0.00 0.00 \n",
- "Implementation labor -0.00 -0.00 \n",
- "Total capex -0.00 -0.00 \n",
- "Monitoring -15000.00 -15000.00 \n",
- "Maintenance -0.00 -0.00 \n",
- "Community benefit sharing fund -127594.00 -130018.00 \n",
- "Carbon standard fees -1733.00 -1740.00 \n",
- "Baseline reassessment 0.00 0.00 \n",
- "MRV 0.00 0.00 \n",
- "Long-term project operating -26400.00 -26400.00 \n",
- "Total opex -170727.00 -173158.00 \n",
- "Total cost -170727.00 -173158.00 \n",
- "Est. credits issued 8663.91 8698.02 \n",
- "Est. revenue 255189.00 260036.00 \n",
- "Annual net cash flow 84462.00 86878.00 \n",
- "Annual net income (revenue – OPEX) 84462.00 86878.00 \n",
- "Cumulative net income (revenue - OPEX) 319003.00 345789.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -949096.00 -922310.00 \n",
- "\n",
- " 28 29 \\\n",
- "Feasibility analysis 0.00 0.00 \n",
- "Conservation planning and admin 0.00 0.00 \n",
- "Data collection and field costs 0.00 0.00 \n",
- "Community representation / liaison 0.00 0.00 \n",
- "Blue carbon project planning 0.00 0.00 \n",
- "Establishing carbon rights 0.00 0.00 \n",
- "Validation 0.00 0.00 \n",
- "Implementation labor -0.00 -0.00 \n",
- "Total capex -0.00 -0.00 \n",
- "Monitoring -15000.00 -15000.00 \n",
- "Maintenance -0.00 -0.00 \n",
- "Community benefit sharing fund -132485.00 -134997.00 \n",
- "Carbon standard fees -1746.00 -1753.00 \n",
- "Baseline reassessment 0.00 0.00 \n",
- "MRV 0.00 0.00 \n",
- "Long-term project operating -26400.00 -26400.00 \n",
- "Total opex -175632.00 -178150.00 \n",
- "Total cost -175632.00 -178150.00 \n",
- "Est. credits issued 8732.09 8766.12 \n",
- "Est. revenue 264970.00 269993.00 \n",
- "Annual net cash flow 89339.00 91843.00 \n",
- "Annual net income (revenue – OPEX) 89339.00 91843.00 \n",
- "Cumulative net income (revenue - OPEX) 372275.00 398455.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -895824.00 -869644.00 \n",
- "\n",
- " 30 Total \\\n",
- "Feasibility analysis 0.00 -30000.00 \n",
- "Conservation planning and admin 0.00 -667067.00 \n",
- "Data collection and field costs 0.00 -80000.00 \n",
- "Community representation / liaison 0.00 -284733.00 \n",
- "Blue carbon project planning 0.00 -100000.00 \n",
- "Establishing carbon rights 0.00 -140000.00 \n",
- "Validation 0.00 -50000.00 \n",
- "Implementation labor -0.00 0.00 \n",
- "Total capex -0.00 -1351800.00 \n",
- "Monitoring -15000.00 -450000.00 \n",
- "Maintenance -0.00 0.00 \n",
- "Community benefit sharing fund -137553.00 -2931010.00 \n",
- "Carbon standard fees -1760.00 -45140.00 \n",
- "Baseline reassessment -40000.00 -160000.00 \n",
- "MRV -75000.00 -450000.00 \n",
- "Long-term project operating -26400.00 -792000.00 \n",
- "Total opex -295713.00 -4828150.00 \n",
- "Total cost -295713.00 -6179950.00 \n",
- "Est. credits issued 8800.13 225700.18 \n",
- "Est. revenue 275106.00 5862020.00 \n",
- "Annual net cash flow -20607.00 -317930.00 \n",
- "Annual net income (revenue – OPEX) -20607.00 1033870.00 \n",
- "Cumulative net income (revenue - OPEX) 392807.00 0.00 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) -875292.00 0.00 \n",
- "\n",
- " NPV \n",
- "Feasibility analysis -30000.0 \n",
- "Conservation planning and admin -629559.0 \n",
- "Data collection and field costs -76963.0 \n",
- "Community representation / liaison -268724.0 \n",
- "Blue carbon project planning -88900.0 \n",
- "Establishing carbon rights -129504.0 \n",
- "Validation -44450.0 \n",
- "Implementation labor 0.0 \n",
- "Total capex -1268099.0 \n",
- "Monitoring -230588.0 \n",
- "Maintenance 0.0 \n",
- "Community benefit sharing fund -1350479.0 \n",
- "Carbon standard fees -21608.0 \n",
- "Baseline reassessment -86776.0 \n",
- "MRV -212864.0 \n",
- "Long-term project operating -405835.0 \n",
- "Total opex -2308151.0 \n",
- "Total cost -3576251.0 \n",
- "Est. credits issued 0.0 \n",
- "Est. revenue 2700959.0 \n",
- "Annual net cash flow -875292.0 \n",
- "Annual net income (revenue – OPEX) 392807.0 \n",
- "Cumulative net income (revenue - OPEX) 0.0 \n",
- "Cumulative net income (revenue - CAPEX - OPEX) 0.0 \n",
- "\n",
- "[24 rows x 36 columns]"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
"df = cost_calculator.get_yearly_cost_breakdown()\n",
"df"
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "624f0216",
"metadata": {},
"outputs": [],
"source": [
"# Export to test_data to compare calculated results with expected ones\n",
- "df.to_csv(\"../test_data/Pro_forma_calculated_data.csv\", index=False)"
+ "# df.to_csv(\"./test_data/Pro_forma_calculated_data.csv\", index=False)"
]
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "47f55f8c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3yN5//H8ddJRGRIIoTYMRIzVpQaEbNRoVVb1aoqLbVK0arVqmrt1aoqvkprtr+Witpb7VEzRVDEloiRkNy/P46c5kiQIIv38/E4j+S+7uu+rs+5z8r55Lqu22QYhoGIiIiIiIiIiEgqsknrAERERERERERE5MWjpJSIiIiIiIiIiKQ6JaVERERERERERCTVKSklIiIiIiIiIiKpTkkpERERERERERFJdUpKiYiIiIiIiIhIqlNSSkREREREREREUp2SUiIiIiIiIiIikuqUlBIRERERERERkVSnpJSICBAaGorJZGLWrFlpHUqSrVu3DpPJxLp165J97NChQzGZTM8+qHSqZs2a1KxZM63DEBFJlg4dOuDs7JyifTzNZ4k8Xkp83uoxE5HniZJSIvJCmDVrFiaTKdHbgAED0jq8dG/p0qXUr1+f7NmzkyVLFnx8fOjbty9XrlxJ69CeCxEREQwbNoyyZcvi7OyMg4MDpUuXpn///pw7dy6tw0tRmzdv5o033iBXrlzY29vj5eVFly5dOH36dFqH9kTivoDG3ezs7PDy8qJHjx5cv349rcPLUOLet7NkycLZs2cT7K9ZsyalS5d+orbnzZvH+PHjk3VMTEwMM2fOpGbNmri7u1uerx07dmTnzp1PFEdKq1mz5kM/+44cOZLW4SXZhQsX6Nu3L8WLF8fR0REnJyf8/Pz4/PPPn+vX1dSpU9PVP8vikmGLFi1K61BE5DmSKa0DEBFJTcOHD6dQoUJWZaVLl6ZgwYLcvn0bOzu7NIos+WrUqMHt27fJnDlzivbTt29fxowZQ9myZenfvz/u7u7s3r2byZMn8/PPP7N69WqKFSuWojE8rT///DOtQ3ioEydOULduXU6fPk3z5s159913yZw5M/v372fGjBn88ssvHDt2LK3DTBGTJk2iZ8+eFC5cmA8++IDcuXNz+PBhvv/+e+bPn88ff/xB1apV0zrMJ/LNN9/g7OzMzZs3Wb16NZMmTWL37t1s2rQprUPLcKKiovjyyy+ZNGnSM2tz3rx5/P333/Tq1StJ9W/fvk2TJk0IDg6mRo0afPzxx7i7uxMaGsqCBQuYPXs2p0+fJl++fM8sxmclX758jBw5MkF5njx50iCa5NuxYwcNGjQgMjKSt956Cz8/PwB27tzJl19+yYYNG9L1e/zTmDp1Kjly5KBDhw5W5an1+S8ikhqUlBKRF8qrr75KxYoVE92XJUuWVI7m6djY2KR4zD/99BNjxoyhZcuWzJ07F1tbW8u+Dh06UKtWLZo3b87u3bvJlCn1PlJu3ryJk5NTkuun1z/c7927R5MmTbhw4QLr1q2jevXqVvtHjBjBqFGj0ii6lLV582Z69epF9erVCQ4OxtHR0bLvvffeo1q1ajRr1oyDBw+SLVu2NIz0yTRr1owcOXIA0KVLF1q1asX8+fPZvn07lSpVSuPoMpZy5coxffp0Bg4cmGaJlH79+hEcHMy4ceMSJLKGDBnCuHHj0iSupHB1deWtt95K6zCeyPXr13njjTewtbVlz549FC9e3Gr/iBEjmD59ehpFl3ZS4/NfRCS1aPqeiAiJrykVt5bH2bNnady4Mc7Oznh4eNC3b19iYmKsjh89ejRVq1Yle/bsODg44Ofnl+jwdpPJRPfu3fn1118pXbo09vb2lCpViuDg4AR1z549S6dOnciTJw/29vYUKlSI9957j+joaCDxNSU2btxI8+bNKVCgAPb29uTPn5/evXtz+/btJzovw4YNI1u2bHz33XdWCSmASpUq0b9/fw4cOGC5r927d8fZ2Zlbt24laKt169Z4enpanbvly5fj7++Pk5MTWbNmJSgoiIMHD1odF/c4HD9+nAYNGpA1a1batGmTrL4SW1MqKiqKIUOGULRoUcu5+uijj4iKirLUadKkCRUqVLA6rlGjRphMJn777TdL2V9//YXJZGL58uUAnD59OklTYxYvXsy+ffv45JNPEiSkAFxcXBgxYoRlO6mPb9w5O3HiBIGBgTg5OZEnTx6GDx+OYRhWdWNjYxk/fjylSpUiS5Ys5MqViy5dunDt2jVLnSFDhmBjY8Pq1autjo0b1bVv377H3tcHffbZZ5hMJmbPnm2VkAIoUqQIX331FefPn2fatGkZ6n49jL+/PwDHjx+3Kv/rr7+oX78+rq6uODo6EhAQwObNmy37Fy1ahMlkYv369QnanDZtGiaTib///ttSduTIEZo1a4a7uztZsmShYsWKVs9V+G9a3ObNm+nTpw8eHh44OTnxxhtvcOnSJau6JpOJoUOHJujby8srweiN69ev06tXL/Lnz4+9vT1FixZl1KhRxMbGJukcPczHH39MTEwMX375ZZLq//jjj/j5+eHg4IC7uzutWrXizJkzlv01a9Zk2bJlnDp1yjKVzcvL66Ht/fvvv0ybNo169eolOrLK1taWvn37WkZJnTp1ivfff59ixYrh4OBA9uzZad68OaGhoVbH3b17l2HDhuHt7U2WLFnInj071atXZ+XKlQn6SMrn0LO2cOFCy3nMkSMHb731ltU0yt9++w2TycT+/fstZYsXL8ZkMtGkSROrtkqUKEHLli2THcO0adM4e/YsY8eOTZCQAsiVKxeDBg2ybCf1+Rr3Gti0aRM9evTAw8MDNzc3unTpQnR0NNevX6ddu3Zky5aNbNmy8dFHH1m9xzxsTaekrk85c+ZMateuTc6cObG3t6dkyZJ88803CWI+ePAg69evtzxP4z7HHuw/JT57kypuyvI///xDhw4dcHNzw9XVlY4dOyYaz48//kilSpVwdHQkW7Zs1KhRI8FIt6lTp1KqVCns7e3JkycP3bp1SzBNM2767v79+wkICMDR0ZGiRYta/h5Zv349lStXxsHBgWLFirFq1aoEsZw9e5a3337bMn28VKlS/PDDD090HkTkySkpJSIvlPDwcC5fvmx1e5SYmBgCAwPJnj07o0ePJiAggDFjxvDdd99Z1ZswYQLly5dn+PDhfPHFF2TKlInmzZuzbNmyBG1u2rSJ999/n1atWvHVV19x584dmjZtarU+07lz56hUqRI///wzLVu2ZOLEibRt25b169cn+kdenIULF3Lr1i3ee+89Jk2aRGBgIJMmTaJdu3bJPFMQEhLC0aNHef3113FxcUm0Tly7S5cuBaBly5bcvHkzwf2+desWv//+O82aNbMkt+bMmUNQUBDOzs6MGjWKTz/9lEOHDlG9evUEX97u3btHYGAgOXPmZPTo0TRt2jRZfT0oNjaW1157jdGjR9OoUSMmTZpE48aNGTdunNUXJ39/f/bt20dERAQAhmGwefNmbGxs2Lhxo6Xexo0bsbGxoVq1apbzUqJEiUeeX8CSLGjbtu1j60LyHt+YmBjq169Prly5+Oqrr/Dz82PIkCEMGTLEql6XLl3o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0IFFixYlOi0sJd24cQN3d3fGjx9Pt27dnnn7z+v9etHkypWLdu3a8fXXX6d1KJJGKlWqRMGCBVm4cGFahyIiImlM0/dERETkmdiwYQN58+alc+fOaR3KM/W83q+0cPDgQW7fvk3//v3TOhRJIxEREezbt4/Zs2endSgiIpIOaKFzEREReSaCgoIIDQ19qku3p0fP6/1KC6VKlSIiIuKZr/EjGYeLiwtRUVGUKFEirUMREZF0QEkpERERERERERFJdVpTSkREREREREREUp1GSomIiIiIiIiISKpTUkpERERERERERFKdrr6XTsXGxnLu3DmyZs2KyWRK63BERERERERERJLEMAxu3LhBnjx5sLF5+HgoJaXSqXPnzpE/f/60DkNERERERERE5ImcOXOGfPnyPXS/klLpVNasWQHzA+ji4pLG0YiIiIiIiIiIJE1ERAT58+e35DYeRkmpdCpuyp6Li4uSUiIiIiIiIiKS4TxuOSItdC4iIiIiIiIiIqlOSSkREREREREREUl1SkqJiIiIiIiIiEiq05pSGVxMTAx3795N6zBERNI1Ozs7bG1t0zoMERERERGJR0mpDMowDMLCwrh+/XpahyIikiG4ubnh6en52MUWRUREREQkdSgplUHFJaRy5syJo6OjvmSJiDyEYRjcunWLixcvApA7d+40jkhEREREREBJqQwpJibGkpDKnj17WocjIpLuOTg4AHDx4kVy5sypqXwiIiIiIumAFjrPgOLWkHJ0dEzjSEREMo6490ytwyciIiIikj4oKZWBacqeiEjS6T1TRERERCR9UVJKRERERERERERSnZJSIg8wmUz8+uuv6aad9MLLy4vx48endRgp5sqVK+TMmZPQ0NC0DkWeQHBwMOXKlSM2NjatQxERERERkSRSUuqFFwOsA366/zMmxXsMCwvjgw8+oHDhwtjb25M/f34aNWrE6tWrU7zvlDB06FDKlSuXoPz8+fO8+uqrqR9QMtWsWZNevXo9tt6OHTt49913Uz6gNDJixAhef/11vLy80jqUDOHgwYO0aNECDw8P7O3t8fHxYfDgwdy6dcuqnpeXFyaTCZPJhJOTExUqVGDhwoWW/UOHDrXsj38rXrw4ADdv3qRIkSL06dPHqt3Q0FBcXFyYPn06APXr18fOzo65c+em8D0XEREREZFnRUmpF9oSwAuoBbx5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wNXVlfDwcFxcXKz23blzh5MnT1KoUCGyZMmSRhG+mLy8vOjVqxe9evVK61BEJJn03ikiIiIZzxKgJ/BvvLKcgB1w9v52d2AU4Ji6oYk8wqNyGvFpTSkRERERERGRdGcJ0AzzIubxXbz/0w34GfNoKZGMSdP3RERERERERNKVGMwjpB41sckJqJs64YikEI2UEkmG0NDQtA5BRERERESeexuxnrKXmLP369VM8WhEUopGSomIiIiIiIikK+efcT2R9ElJKREREREREZF0JanJptwpGoVISlNSSkRERERERCRdiAL6Ah8+pp4JyA/4p3hEIilJSSkRERERERGRNHcQqAyMub9dD3PyyfRAvbjt8YBtqkQmklKUlBIRERERERFJMwYwCagI7ANyAP8H/AksAvI+UD/f/fImqRijSMrQ1fdERERERERE0sR54G0g+P72q8APgOf97SbA65ivsnce8xpS/miElDwvNFJKMrxZs2bh5uaW1mEkS0aMWUREREREnqX/A8pgTkhlASYDy/gvIRXHFqgJtL7/UwkpeX5opNRzpsvvXVK1v2mNpiWrfocOHZg9e3aC8sDAQIKDgxM5wpqXlxe9evWiV69elrKWLVvSoEGDZMXxJGbNmkWvXr24fv16ivcFYDL9N3c8a9asFCtWjEGDBvH666+nSv8iIiIiIpISbgK9gen3t8sBc4GSaRWQSJrRSClJdfXr1+f8+fNWt59++umJ23NwcCBnzpzPMML0Y+bMmZw/f56dO3dSrVo1mjVrxoEDB9I6LBEREREReSI7gPKYE1Im4CNgG0pIyYtKSSlJdfb29nh6elrdsmXLBoBhGAwdOpQCBQpgb29Pnjx56NGjBwA1a9bk1KlT9O7dG5PJZBlJ9OBUuKFDh1KuXDl++OEHChQogLOzM++//z4xMTF89dVXeHp6kjNnTkaMGGEV19ixY/H19cXJyYn8+fPz/vvvExkZCcC6devo2LEj4eHhlr6HDh0KQFRUFH379iVv3rw4OTlRuXJl1q1bZ9X2rFmzKFCgAI6OjrzxxhtcuXIlSefKzc0NT09PfHx8+Oyzz7h37x5r16617D9z5gwtWrTAzc0Nd3d3Xn/9dUJDQwH4888/yZIlS4KRXT179qR27dqW7U2bNuHv74+DgwP58+enR48e3Lx507Lfy8uLL774grfffpusWbNSoEAB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1113HcuXL293u2EYmEwmXC6Xz4ITkYGlLSmVoqSUiIiIiIhIf9fjpNQPfvADwsLCeO+990hPT8dkMvkjLhEZgPLK8gAYP3h8kCMRERERERERf+txUmrt2rWsXr2aMWPG+CMeERmg3IabzWWbAbXviYiIiIiIDAQ9HnQ+btw4ysvL/RGLiAxgu6t209DSgNViZYRtRLDDERERERERET/zKilVU1PT9vbggw/yq1/9iqVLl1JRUdHuvpqaGn/HKyL9VGvr3piUMYSZe72DQURERERERPoIr575JSYmtpsdZRgGp512WrtjNOhcRI6ENu+JiIiIiIgMLF4lpZYsWeLvOERkgNPmPemtBQuCHYGIiIiIiPSGV0mpWbNm+TsOERngWpNS2rwnIiIiIiIyMPR40PlHH33EF1980fb5M888w+TJk7niiiuw2+0+DU5EBga34Vb7noiIiIiIyADT46TU7bff3jbQfMOGDdx6662cc845FBQUcOutt/o8QBHp//ZW78XR7CDcHM5I28hghyMiIiIiIiIB0OMVVwUFBYwb56lkeOONNzjvvPO47777WLNmDeecc47PAxSR/q+1Smp08mjCLeFBjkZEREREREQCocdJKavVSn19PQAff/wxV199NQBJSUltFVQiIj2RV5YHaJ6U9A0arC4iIiIi4hs9TkqddNJJ3HrrrZx44ol88803LFy4EIBt27aRmZnp8wBFpP/T5j0REREREZGBp8czpZ5++mnCwsJ4/fXXefbZZxkyZAgAH374IWeddZbPAxSR/k9DzkVERERERAaeHldKDRs2jPfee6/D7Y8//rhPAhKRgcUwjLaklNr3REREREREBo4eJ6UO1tjYiNPpbHdbfHz8EQUkIgPLvpp91DprCTOHMSppVLDDERERERERkQDpcfuew+HgpptuYvDgwcTExGCz2dq9iYj0RGuVVE5SDlaLNcjRiIiIiIiISKD0uFLqV7/6FUuWLOHZZ5/l+9//Ps888wyFhYUsWLCABx54wB8xikg/pnlSIt3Ttj8RERER6a96nJR69913efHFF5k9ezbXXnstM2fOZNSoUWRlZfHyyy9z5ZVX+iNOEemn8sryABg/SPOkREREREREBpIet+9VVlYyYsQIwDM/qrKyEoCTTjqJzz//3LfRiUi/p0opERERERGRganHSakRI0ZQUFAAwJgxY1i0aBHgqaBKTEz0aXAi0r8dvHlPSSkREREREZGBpcdJqWuvvZZ169YBMH/+fJ555hkiIyO55ZZbuP32230eoIj0X8V1xVQ3VWMxWRidPDrY4YiIiIiIiEgA9Xim1C233NL28emnn86WLVtYvXo1o0aNYuLEiT4NTkT6t7z9nnlSo5JGEREWEeRoRAQ0WF1EREREAqfHSalDZWVlkZWV5YtYRGSAUeueiIiIiIjIwOV1+96nn37KuHHjqKmp6XBfdXU148ePZ9myZT4NTkT6NyWlREREREREBi6vk1JPPPEEN9xwA/Hx8R3uS0hIYN68eTz22GM+DU5E+re8Mk/73vhB44MciYiIiIiIiASa10mpdevWcdZZZ3V5/xlnnMHq1at9EpSI9H/avCciIiIiIjKweZ2UKi0tJTw8vMv7w8LCKCsr80lQItL/lTpKsTfaMZvMHJVyVLDDERERERERkQDzOik1ZMgQNm7c2OX969evJz093SdBiUj/11olNdI2ksiwyCBHIyIiIiIiIoHmdVLqnHPO4Xe/+x2NjY0d7mtoaODuu+/m3HPP9WlwItJ/5e33zJNS656IiIiIiMjAFObtgb/97W958803GT16NDfddBNHHeVpt9myZQvPPPMMLpeL3/zmN34LVET6F82TEpFgWLAg2BGIiIiISCuvk1KpqaksX76cH//4x9xxxx0YhgGAyWTizDPP5JlnniE1NdVvgYpI/7Kp3JOU0uY9EenPlAQTERER6ZrXSSmArKwsPvjgA+x2O9u3b8cwDHJycrDZbP6KT0T6IcMw1L4nIuIHSoKJiIhIX9KjpFQrm83G9OnTfR2LiAwQZfVlVDRUYMKkzXsiIiIiIiIDVK+SUiIiR6J1nlS2LZvo8OggRyMiIkdC1VkiIiLSW15v3xMR8ZXWpJTmSYmIiIiIiAxcSkqJSMBpnpSIiIiIiIiofU9EAq51856SUiIiEurUnigiIuI/SkqJSMCpfU9ERKRzSoKJiMhAovY9EQmo8vpy9jv2AzAmZUyQoxEREREREZFgUaWUiARUa5XU8MThxFhjghyNiIjIwKbKLBERCSYlpUQkoFqTUponJSIiMvAoCSYiIgdT+56IBJTmSYmIiIiIiAgoKSUiAZZXlgeoUkpERERERGSgU/ueiASU2vdERESkv1J7oohIz6hSSkQCprKhkpK6EgDGpowNcjQiIiIiIiISTKqUEpGAaa2SGpYwjLiIuCBHIyIiItL3qTpLRPoyVUqJSMCodU9ERERERERaqVJKRAKmLSmVoqSUiIiISF+kyiwR8SUlpUQkYFo3740fPD7IkYiIiIhIX6AkmEj/pvY9EQkYte+JiIiIiIhIKyWlRCQgqhqrKKotArR5T0RERERERJSUEpEA2Vy2GYDM+EwSIhOCHI2IiIiIiIgEm2ZKiUhAtM6TUuueiIiIiIiHZmbJQKdKKREJCG3eExERERERkYOpUkpEAkJDzkVEREREgkuVWRJqlJQSkYBobd8bP3h8kCMRf9IfOiIiIiLSSn8byuGofU9E/K6mqYZ9NfsAbd4TERERERERD1VKiYjftW7eS49NxxZlC3I0IiIiIiLSH6kyq+9RpZSI+F3rPCm17omIiIiIiEgrJaVExO9a50lp856IiIiIiIi0UlJKRPxOm/dERERERETkUEpKiYjfqX1PREREREREDqWklIj4VZ2zjt3VuwFt3hMREREREZFvKSklIn7VunkvNSaV5OjkIEcjIiIiIiIioUJJKRHxK82TEhERERERkc4oKSUiftU2T2qQ5kmJiIiIiIjIt5SUEhG/yivLA1QpJSIiIiIiIu0pKSUifqX2PREREREREemMklIi4jcOp4NdVbsAGD9Y7XsiIiIiIiLyrT6RlNq1axfXX3892dnZREVFMXLkSO6++26cTme749avX8/MmTOJjIxk6NChPPTQQx3O9dprrzFmzBgiIyM5+uij+eCDD9rdbxgGd911F+np6URFRXH66aeTn5/f7pjKykquvPJK4uPjSUxM5Prrr6eurq7HsYj0d1vKt2BgMCh6ECnRKcEOR0REREREREJIn0hKbdmyBbfbzYIFC8jLy+Pxxx/nueee484772w7pqamhjPOOIOsrCxWr17Nww8/zO9//3uef/75tmOWL1/O5ZdfzvXXX09ubi4XXnghF154IRs3bmw75qGHHuLPf/4zzz33HCtWrCAmJoYzzzyTxsbGtmOuvPJK8vLyWLx4Me+99x6ff/45P/rRj3oUi8hAoNY9ERERERER6UpYsAPwxllnncVZZ53V9vmIESPYunUrzz77LI888ggAL7/8Mk6nk7///e9YrVbGjx/P2rVreeyxx9oSRk8++SRnnXUWt99+OwD33HMPixcv5umnn+a5557DMAyeeOIJfvvb33LBBRcA8OKLL5Kamspbb73F9773PTZv3sxHH33EypUrmTZtGgBPPfUU55xzDo888ggZGRlexSIyECgpJSIiIiIiIl3pE5VSnamuriYpKant86+++oqTTz4Zq9XadtuZZ57J1q1bsdvtbcecfvrp7c5z5pln8tVXXwFQUFBASUlJu2MSEhI47rjj2o756quvSExMbEtIAZx++umYzWZWrFjhdSyHampqoqampt2bSF+3qdyTlBo/SPOkREREREREpL0+mZTavn07Tz31FPPmzWu7raSkhNTU1HbHtX5eUlLS7TEH33/w47o6ZvDgwe3uDwsLIykp6bDXOfgah7r//vtJSEhoexs6dGh3/wQifULe/jxAlVIiIiIiIiLSUVCTUvPnz8dkMnX7tmXLlnaPKSws5KyzzuKSSy7hhhtuCFLkvnfHHXdQXV3d9rZ3795ghyRyRBqaG9hp3wkoKSUiIiIiIiIdBXWm1G233cYPfvCDbo8ZMWJE28dFRUWccsopzJgxo8PQ8LS0NEpLS9vd1vp5Wlpat8ccfH/rbenp6e2OmTx5ctsx+/fvb3eOlpYWKisrD3udg69xqIiICCIiIjq9T6Qv2lqxFQOD5KhkBscMPvwDREREREREZEAJaqXUoEGDGDNmTLdvrXOZCgsLmT17NlOnTuUf//gHZnP70E844QQ+//xzmpub225bvHgxRx11FDabre2YTz75pN3jFi9ezAknnABAdnY2aWlp7Y6pqalhxYoVbceccMIJVFVVsXr16rZjPv30U9xuN8cdd5zXsYj0dwe37plMpiBHIyIiIiIiIqGmT8yUak1IDRs2jEceeYSysjJKSkrazWe64oorsFqtXH/99eTl5bFw4UKefPJJbr311rZjbr75Zj766CMeffRRtmzZwu9//3tWrVrFTTfdBIDJZOIXv/gFf/rTn3jnnXfYsGEDV199NRkZGVx44YUAjB07lrPOOosbbriBb775hi+//JKbbrqJ733ve2RkZHgdi0h/p817IiIiIiIi0p2gtu95a/HixWzfvp3t27eTmZnZ7j7DMADPlrz//e9//PSnP2Xq1KmkpKRw11138aMf/ajt2BkzZvDKK6/w29/+ljvvvJOcnBzeeustJkyY0HbMxj5H6QAAL6RJREFUr371KxwOBz/60Y+oqqripJNO4qOPPiIyMrLtmJdffpmbbrqJ0047DbPZzEUXXcSf//zntvu9iUWkv2vdvKeklIiIiIiIiHSmTySlfvCDHxx29hTAxIkTWbZsWbfHXHLJJVxyySVd3m8ymfjjH//IH//4xy6PSUpK4pVXXjniWET6s9ZKqfGDxgc5EhEREREREQlFfaJ9T0T6lsaWRrZXbgdUKSUiIiIiIiKdU1JKRHxuW8U23IabxMhE0mI73zgpIiIiIiIiA5uSUiLicwe37mnznoiIiIiIiHRGSSkR8bm8/XmAWvdERERERESka0pKiYjPafOeiIiIiIiIHI6SUiLic9q8JyIiIiIiIoejpJSI+JTT5SS/Ih9QpZSIiIiIiIh0TUkpEfGpbRXbcBku4iPiyYjLCHY4IiIiIiIiEqKUlBIRn2pt3Rs3aJw274mIiIiIiEiXwoIdgIj0L5onJSIi/rRgQbAjEBEREV9RpZSI+FReWR6geVIiIiIiIiLSPSWlRMSnDm7fExEREREREemKklIi4jPNrma2VWwD1L4nIiIiIiIi3VNSSkR8ZnvldlrcLcRaY8mMzwx2OCIiIiIiIhLClJQSEZ85eJ6UNu+JiIiIiIhId5SUEhGf0TwpERERERER8ZaSUiLiM61JKc2TEhERERERkcNRUkpEfObg9j0RERERERGR7igpJSI+0eJuYWv5VkBJKRERERERETk8JaVExCd2VO6g2d1MTHgMwxKGBTscERERERERCXFKSomIT7S27o0dNBazST9aREREREREpHt65igiPqHNeyIiIiIiItITSkqJiE+0JaVSlJQSERERERGRw1NSSkR8ojUpNX7w+CBHIiIiIiIiIn2BklIicsRcbhdbyrcAat8TERERERER74QFOwAR6ft22nfS5GoiKiyK4YnDgx2OiIiIiEivLFgQ7AhEBhZVSonIEWtt3dPmPREREREREfGWnj2KyBHLK8sD1LonIiIiIiIi3lNSSkSOmDbviYiIiIiISE8pKSUiR6wtKaVKKREREREREfGSklIickRcbhebyzcDMH7w+CBHIyIiIiIiIn2FklIickR2Ve2isaWRCEsE2YnZwQ5HRERERERE+oiwYAcgIn1ba+vemJQxWMyWIEcjIn2NVm+LiIiIDFyqlBKRI9KalFLrnoiIiIiIiPSEklIickTyyvIAbd4TERERERGRnlFSSkSOiDbv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5Xuvv/66cnJyFBoaqvT0dD3++ONeNezfv19jxoxReHi4MjIy9PLLL3udNwxD8+fPV1pamkJDQ5WcnKxbb721pf83AACAIEIoBQAAYKI//elPiouL0/r16zVz5kzdcsstuvbaazV48GB99tlnGjlypH7xi1/oyJEjkqTKykpdccUVuvjii/Xpp5/q3XffVXl5ua677rpWjRseHi5JqqurU2FhoW688Ubddttt+vLLL7V48WItWbJEDz/8sNd35s+fr5/97GfavHmzfvnLXza554YNG3TddddpwoQJ2rx5s+bPn697773Xa8ni5MmTtWfPHn344Ydavny5nn32We3fv99z/vXXX9cf/vAHLV68WNu3b9eKFSvUt2/fVv3eAABAcGD5HgAAgIkuvPBC3XPPPZKkuXPn6tFHH1VcXJymTp0qSZo3b56ee+45bdq0SZdeeqmefvppXXzxxfrtb3/rucdLL72k1NRUffXVV+rdu/dZxywtLdXvf/97devWTZmZmbrqqqt09913a9KkSZKkHj166MEHH9ScOXN03333eb53/fXX66abbvL8fGpPqieeeELDhw/XvffeK0nq3bu3vvzySy1YsECTJ0/WV199pXfeeUfr16/XoEGDJEn/8z//o+zsbM89du/ercTERI0YMUIhISFKS0vTJZdc0qo/UwAAEByYKQUAAGCifv36eX5ts9nUpUsXr5lBCQkJkuSZTfTFF1/oww8/9PSoioiIUFZWliRp586dZxwrJSVFnTt3VnJysmpra/X666/L4XDoiy++0AMPPOB1z6lTp6q0tNQzQ0uSBg4ceMb7b926VUOGDPE6NmTIEG3fvl2NjY3aunWr7Ha7BgwY4DmflZWl6Ohoz8/XXnutjh49qh49emjq1Kl68803vZYRAgCA9oOZUgAAACYKCQnx+tlisXgds1gskiSXyyVJqqmp0ZgxY/S73/2uyb2SkpLOOFZhYaGcTqfi4+MVGRnpOV5TU6P7779fBQUFTb4TFhbm+XXnzp1b8Ds6P6mpqSopKdG//vUvrVy5Ur/+9a+1YMECrV69usmfFQAACG6EUgAAAEGkf//+ev3115Weni67vXV/lcvIyPCalXTyPUtKStSrV6/zqi07O1tr1qzxOrZmzRr17t1bNptNWVlZamho0IYNGzzL90pKSrwapUsn+l2NGTNGY8aM0fTp05WVlaXNmzerf//+51UfAAAILIRSAAAAQWT69Ol64YUXNHHiRM2ZM0exsbHasWOHli1bphdffFE2m63V95w3b55+8pOfKC0tTePGjZPVatUXX3yhLVu26KGHHmrxfe644w4NGjRIDz74oMaPH6+ioiI9/fTTevbZZyVJmZmZGj16tH71q1/pueeek91u16xZszxN1yVpyZIlamxsVG5urjp16qS//OUvCg8PV/fu3Vv9+wIAAIGNnlIAAABBJDk5WWvWrFFjY6NGjhypvn37atasWYqOjpbVem5/tRs1apTefvttvffeexo0aJAuvfRS/eEPf2h1ENS/f3+99tprWrZsmfr06aN58+bpgQce0OTJkz3X/PGPf1RycrJ+/OMfq6CgQNOmTVN8fLznfHR0tF544QUNGTJE/fr107/+9S/9/e9/V5cuXc7p9wYAAAKXxTAMw+wiAAAAAAAA0LEwUwoAAAAAAAB+RygFAAAAAAAAvyOUAgAAAAAAgN8RSgEAAAAAAMDvCKUAAAAAAADgd4RSAAAAAAAA8DtCKQAAAAAAAPgdoRQAAAAAAAD8jlAKAAAAAAAAfkcoBQAAAAAAAL8jlAIAAAAAAIDfEUoBAAAAAADA7/4/NiMxGOs/u+MAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
- "cost_calculator.plot_financial_data()"
+ "cost_graph = cost_calculator.plot_financial_data()\n",
+ "cost_graph"
]
},
{
@@ -1573,7 +272,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "8c3cc3bc",
"metadata": {},
"outputs": [],
@@ -1604,11 +303,14 @@
" # Retrieve additional cost estimates and summary\n",
" cost_summary = cost_calculator.get_summary() # Assuming this method exists\n",
" cost_estimates = cost_calculator.get_cost_estimates() # Assuming this method exists\n",
+ " project_params = Project.get_project_parameters() # Assuming this method exists\n",
"\n",
" return {\n",
" \"breakeven_carbon_price\": float(carbon_price),\n",
+ " \"project_params\": project_params,\n",
" \"cost_summary\": cost_summary,\n",
" \"cost_estimates\": cost_estimates,\n",
+ " \"cost_pro_forma\": cost_calculator.get_yearly_cost_breakdown(),\n",
" }\n",
"\n",
" # Ensure credits_issued is not zero to avoid division errors\n",
@@ -1623,189 +325,1676 @@
" print(\"Warning: Max iterations reached without convergence.\")\n",
" return {\n",
" \"breakeven_carbon_price\": float(carbon_price),\n",
+ " \"project_params\": Project.get_project_parameters(),\n",
" \"cost_summary\": cost_calculator.get_summary(),\n",
" \"cost_estimates\": cost_calculator.get_cost_estimates(),\n",
+ " \"cost_pro_forma\": cost_calculator.get_yearly_cost_breakdown(),\n",
" }"
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "711fdc63",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Iteration 0: NPV covering cost = 392807.1407714435,\n",
- " Carbon price = 20\n",
- "Iteration 1: NPV covering cost = 275288.8675036202,\n",
- " Carbon price = 18.259606428551695\n",
- "Iteration 2: NPV covering cost = 192929.18255659007,\n",
- " Carbon price = 17.039895976359695\n",
- "Iteration 3: NPV covering cost = 135209.4976432866,\n",
- " Carbon price = 16.185093010184403\n",
- "Iteration 4: NPV covering cost = 94758.12840075488,\n",
- " Carbon price = 15.586026149956291\n",
- "Iteration 5: NPV covering cost = 66408.81783099822,\n",
- " Carbon price = 15.166185417969436\n",
- "Iteration 6: NPV covering cost = 46540.92646342027,\n",
- " Carbon price = 14.871950747455134\n",
- "Iteration 7: NPV covering cost = 32617.021456182934,\n",
- " Carbon price = 14.665743882001752\n",
- "Iteration 8: NPV covering cost = 22858.807710011257,\n",
- " Carbon price = 14.521229058898875\n",
- "Iteration 9: NPV covering cost = 16020.012453474803,\n",
- " Carbon price = 14.41994953044798\n",
- "Iteration 10: NPV covering cost = 11227.21719633136,\n",
- " Carbon price = 14.348970355696235\n",
- "Iteration 11: NPV covering cost = 7868.308863034239,\n",
- " Carbon price = 14.299226411135109\n",
- "Iteration 12: NPV covering cost = 5514.303614286473,\n",
- " Carbon price = 14.264364636126384\n",
- "Iteration 13: NPV covering cost = 3864.5590659745503,\n",
- " Carbon price = 14.239932650133282\n",
- "Iteration 14: NPV covering cost = 2708.377669977257,\n",
- " Carbon price = 14.222810115798252\n",
- "Iteration 15: NPV covering cost = 1898.0974227611441,\n",
- " Carbon price = 14.21081022425701\n",
- "Iteration 16: NPV covering cost = 1330.233174726367,\n",
- " Carbon price = 14.202400406283568\n",
- "Iteration 17: NPV covering cost = 932.2599977848586,\n",
- " Carbon price = 14.196506599818456\n",
- "Iteration 18: NPV covering cost = 653.3506455754396,\n",
- " Carbon price = 14.192376075857316\n",
- "Iteration 19: NPV covering cost = 457.8841386381537,\n",
- " Carbon price = 14.189481303473016\n",
- "Iteration 20: NPV covering cost = 320.89642190770246,\n",
- " Carbon price = 14.187452576068038\n",
- "Iteration 21: NPV covering cost = 224.8920740080066,\n",
- " Carbon price = 14.186030794201518\n",
- "Iteration 22: NPV covering cost = 157.60987502033822,\n",
- " Carbon price = 14.185034374637697\n",
- "Iteration 23: NPV covering cost = 110.4568616466131,\n",
- " Carbon price = 14.184336059396422\n",
- "Iteration 24: NPV covering cost = 77.41087468713522,\n",
- " Carbon price = 14.183846662967541\n",
- "Iteration 25: NPV covering cost = 54.251437444007024,\n",
- " Carbon price = 14.183503681960625\n",
- "Iteration 26: NPV covering cost = 38.020736447302625,\n",
- " Carbon price = 14.1832633124684\n",
- "Iteration 27: NPV covering cost = 26.645863561192527,\n",
- " Carbon price = 14.183094855639522\n",
- "Iteration 28: NPV covering cost = 18.674073971342295,\n",
- " Carbon price = 14.182976796966871\n",
- "Iteration 29: NPV covering cost = 13.087248529074714,\n",
- " Carbon price = 14.1828940585568\n",
- "Iteration 30: NPV covering cost = 9.171864389674738,\n",
- " Carbon price = 14.18283607345204\n",
- "Iteration 31: NPV covering cost = 6.427867262624204,\n",
- " Carbon price = 14.182795436070064\n",
- "Iteration 32: NPV covering cost = 4.504806851036847,\n",
- " Carbon price = 14.182766956397215\n",
- "Iteration 33: NPV covering cost = 3.1570790032856166,\n",
- " Carbon price = 14.182746997144772\n",
- "Iteration 34: NPV covering cost = 2.2125583093147725,\n",
- " Carbon price = 14.182733009211683\n",
- "Iteration 35: NPV covering cost = 1.5506150687579066,\n",
- " Carbon price = 14.182723206125491\n",
- "Iteration 36: NPV covering cost = 1.0867090276442468,\n",
- " Carbon price = 14.182716335882521\n",
- "Iteration 37: NPV covering cost = 0.7615923101548105,\n",
- " Carbon price = 14.182711521047938\n",
- "Iteration 38: NPV covering cost = 0.5337425488978624,\n",
- " Carbon price = 14.182708146693903\n",
- "Iteration 39: NPV covering cost = 0.37405985430814326,\n",
- " Carbon price = 14.182705781863929\n",
- "Iteration 40: NPV covering cost = 0.26215031021274626,\n",
- " Carbon price = 14.182704124533146\n",
- "Iteration 41: NPV covering cost = 0.18372135842218995,\n",
- " Carbon price = 14.18270296303513\n",
- "Iteration 42: NPV covering cost = 0.12875642953440547,\n",
- " Carbon price = 14.18270214902887\n",
- "Iteration 43: NPV covering cost = 0.09023566055111587,\n",
- " Carbon price = 14.182701578553338\n",
- "Iteration 44: NPV covering cost = 0.06323936046101153,\n",
- " Carbon price = 14.182701178750108\n",
- "Iteration 45: NPV covering cost = 0.04431969299912453,\n",
- " Carbon price = 14.182700898558215\n",
- "Iteration 46: NPV covering cost = 0.0310603273101151,\n",
- " Carbon price = 14.182700702192873\n",
- "Iteration 47: NPV covering cost = 0.02176783815957606,\n",
- " Carbon price = 14.182700564575228\n",
- "Iteration 48: NPV covering cost = 0.015255434671416879,\n",
- " Carbon price = 14.182700468129411\n",
- "Iteration 49: NPV covering cost = 0.01069138222374022,\n",
- " Carbon price = 14.182700400537819\n",
- "Iteration 50: NPV covering cost = 0.007492782548069954,\n",
- " Carbon price = 14.182700353167975\n",
- "Iteration 51: NPV covering cost = 0.0052511251997202635,\n",
- " Carbon price = 14.182700319970028\n",
- "Iteration 52: NPV covering cost = 0.003680117893964052,\n",
- " Carbon price = 14.182700296704095\n",
- "Iteration 53: NPV covering cost = 0.0025791164953261614,\n",
- " Carbon price = 14.182700280398755\n",
- "Iteration 54: NPV covering cost = 0.0018075075931847095,\n",
- " Carbon price = 14.182700268971576\n",
- "Iteration 55: NPV covering cost = 0.0012667463161051273,\n",
- " Carbon price = 14.18270026096313\n",
- "Iteration 56: NPV covering cost = 0.0008877671789377928,\n",
- " Carbon price = 14.182700255350612\n",
- "Iteration 57: NPV covering cost = 0.0006221686489880085,\n",
- " Carbon price = 14.18270025141722\n",
- "Iteration 58: NPV covering cost = 0.0004360303282737732,\n",
- " Carbon price = 14.182700248660604\n",
- "Iteration 59: NPV covering cost = 0.0003055816050618887,\n",
- " Carbon price = 14.182700246728704\n",
- "Iteration 60: NPV covering cost = 0.00021415785886347294,\n",
- " Carbon price = 14.182700245374777\n",
- "Iteration 61: NPV covering cost = 0.0001500879880040884,\n",
- " Carbon price = 14.182700244425916\n",
- "Iteration 62: NPV covering cost = 0.00010518543422222137,\n",
- " Carbon price = 14.182700243760928\n",
- "Iteration 63: NPV covering cost = 7.37158115953207e-05,\n",
- " Carbon price = 14.182700243294887\n",
- "Iteration 64: NPV covering cost = 5.1662325859069824e-05,\n",
- " Carbon price = 14.182700242968277\n",
- "Iteration 65: NPV covering cost = 3.620702773332596e-05,\n",
- " Carbon price = 14.18270024273938\n",
- "Iteration 66: NPV covering cost = 2.5374116376042366e-05,\n",
- " Carbon price = 14.182700242578958\n",
- "Iteration 67: NPV covering cost = 1.7782440409064293e-05,\n",
- " Carbon price = 14.182700242466534\n",
- "Iteration 68: NPV covering cost = 1.2461794540286064e-05,\n",
- " Carbon price = 14.182700242387746\n",
- "Iteration 69: NPV covering cost = 8.733244612812996e-06,\n",
- " Carbon price = 14.182700242332531\n",
- "Converged successfully.\n",
- "The breakeven cost is: {'breakeven_carbon_price': 14.182700242332531, 'cost_summary': {'Project': 'Indonesia Mangrove\\n Conservation (10000 ha)', '$/tCO2e (total cost, NPV)': '$14', '$/ha': '$318', 'NPV covering cost': '$0', 'IRR when priced to cover opex': '4.0%', 'IRR when priced to cover total costs': '-6.1%', 'Total cost (NPV)': '$3,183,443', 'Capital expenditure (NPV)': '$1,268,099', 'Operating expenditure (NPV)': '$1,915,344', 'Credits issued': '225,700', 'Total revenue (NPV)': '$1,915,344', 'Total revenue (non-discounted)': '$4,156,964', 'Financing cost': '$67,590', 'Funding gap (NPV)': '$0', 'Funding gap per tCO2e (NPV)': '$0.0', 'Community benefit sharing fund % of revenue': '\\n 50%'}, 'cost_estimates': Cost estimates (USD) Total cost NPV\n",
- "0 Capital expenditure $1,351,800 $1,268,099\n",
- "1 Feasibility analysis $30,000 $30,000\n",
- "2 Conservation planning and admin $667,067 $629,559\n",
- "3 Data collection and field costs $80,000 $76,963\n",
- "4 Community representation / liaison $284,733 $268,724\n",
- "5 Blue carbon project planning $100,000 $88,900\n",
- "6 Establishing carbon rights $140,000 $129,504\n",
- "7 Validation $50,000 $44,450\n",
- "8 Implementation labor $0 $0\n",
- "9 Operating expenditure $3,975,622 $1,915,344\n",
- "10 Monitoring $450,000 $230,588\n",
- "11 Maintenance $0 $0\n",
- "12 Community benefit sharing fund $2,078,482 $957,672\n",
- "13 Carbon standard fees $45,140 $21,608\n",
- "14 Baseline reassessment $160,000 $86,776\n",
- "15 MRV $450,000 $212,864\n",
- "16 Long-term project operating $792,000 $405,835\n",
- "17 Total cost $5,327,422 $3,183,443}\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Calculate the breakeven cost\n",
"breakeven_cost = calculate_breakeven_cost(Project)\n",
"print(f\"The breakeven cost is: {breakeven_cost}\")"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bc19254a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# populate json with output values\n",
+ "output = {\n",
+ " \"initialCarbonPriceComputationOutput\": {\n",
+ " # Update for restoration projects and other definitions\n",
+ " # \"lossRate\": project_params['Conservation additional parameters'][ 'project-specific'],\n",
+ " \"sequestrationRate\": project_params[\"Restoration additional parameters\"][\n",
+ " \"Tier 2 - Country-specific rate\"\n",
+ " ],\n",
+ " \"plantingSuccessRate\": 0.8,\n",
+ " \"carbonRevenuesToCover\": project_params[\"Carbon revenues to cover\"],\n",
+ " \"initialCarbonPrice\": project_params[\"Initial carbon price assumption ($)\"],\n",
+ " # \"emissionFactors\": {\n",
+ " # \"emissionFactor\": None,\n",
+ " # \"emissionFactorAgb\": project_params['Conservation additional parameters']['Country-specific emission factors']['Emission factor AGB'], # noqa: E501\n",
+ " # \"emissionFactorSoc\": project_params['Conservation additional parameters']['Country-specific emission factors']['Emission factor SOC'] # noqa: E501\n",
+ " # },\n",
+ " \"totalProjectCost\": {\n",
+ " \"total\": {\n",
+ " \"total\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"capex\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Capital expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " \"npv\": {\n",
+ " \"total\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"capex\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Capital expenditure\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " },\n",
+ " \"leftover\": {\n",
+ " # review when is OPEX + CAPEX\n",
+ " \"total\": {\n",
+ " \"total\": int(\n",
+ " cost_summary[\"Total revenue (non-discounted)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"leftover\": int(\n",
+ " cost_summary[\"Total revenue (non-discounted)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if project_params[\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " cost_summary[\"Total revenue (non-discounted)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if project_params[\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " \"npv\": {\n",
+ " \"total\": int(cost_summary[\"Total revenue (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")),\n",
+ " \"leftover\": int(\n",
+ " cost_summary[\"Total revenue (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if project_params[\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(cost_summary[\"Total revenue (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\"))\n",
+ " - int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if project_params[\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " },\n",
+ " \"summary\": {\n",
+ " \"$/tCO2e (total cost, NPV)\": int(\n",
+ " cost_summary[\"$/tCO2e (total cost, NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"$/ha\": int(cost_summary[\"$/ha\"].replace(\"$\", \"\").replace(\",\", \"\")),\n",
+ " \"NPV covering cost\": int(\n",
+ " cost_summary[\"NPV covering cost\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " # double check this attribute - this value should be the same as the NPV covering cost so how is it used? # noqa: E501\n",
+ " \"Leftover after OpEx / total cost\": int(\n",
+ " cost_summary[\"NPV covering cost\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"IRR when priced to cover OpEx\": float(\n",
+ " cost_summary[\"IRR when priced to cover opex\"].replace(\"%\", \"\")\n",
+ " )\n",
+ " / 100,\n",
+ " \"IRR when priced to cover total cost\": float(\n",
+ " cost_summary[\"IRR when priced to cover total costs\"].replace(\"%\", \"\")\n",
+ " )\n",
+ " / 100,\n",
+ " \"Total cost (NPV)\": int(\n",
+ " cost_summary[\"Total cost (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Capital expenditure (NPV)\": int(\n",
+ " cost_summary[\"Capital expenditure (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Operating expenditure (NPV)\": int(\n",
+ " cost_summary[\"Operating expenditure (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Credits issued\": int(cost_summary[\"Credits issued\"].replace(\",\", \"\")),\n",
+ " \"Total revenue (NPV)\": int(\n",
+ " cost_summary[\"Total revenue (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Total revenue (non-discounted)\": int(\n",
+ " cost_summary[\"Total revenue (non-discounted)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Financing cost\": int(cost_summary[\"Financing cost\"].replace(\"$\", \"\").replace(\",\", \"\")),\n",
+ " # dueble check - we should remove this and just show the fundin gap (NPV)\n",
+ " \"Funding gap\": int(cost_summary[\"Funding gap (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")),\n",
+ " \"Funding gap (NPV)\": int(\n",
+ " cost_summary[\"Funding gap (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Funding gap per tCO2e (NPV)\": float(\n",
+ " cost_summary[\"Funding gap per tCO2e (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Community benefit sharing fund\": int(\n",
+ " cost_summary[\"Community benefit sharing fund % of revenue\"]\n",
+ " .replace(\"%\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " / 100,\n",
+ " },\n",
+ " \"costDetails\": {\n",
+ " \"total\": {\n",
+ " \"capitalExpenditure\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Capital expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"operationalExpenditure\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"totalCost\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"feasibilityAnalysis\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Feasibility analysis\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"conservationPlanningAndAdmin\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Conservation planning and admin\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"dataCollectionAndFieldCost\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Data collection and field costs\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityRepresentation\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"]\n",
+ " == \"Community representation / liaison\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"blueCarbonProjectPlanning\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Blue carbon project planning\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"establishingCarbonRights\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Establishing carbon rights\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"validation\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Validation\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"implementationLabor\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Implementation labor\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"monitoring\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Monitoring\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"maintenance\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Maintenance\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityBenefitSharingFund\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Community benefit sharing fund\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"carbonStandardFees\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Carbon standard fees\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"baselineReassessment\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Baseline reassessment\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"mrv\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"MRV\", \"Total cost\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"longTermProjectOperatingCost\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Long-term project operating\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " \"npv\": {\n",
+ " \"capitalExpenditure\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Capital expenditure\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"operationalExpenditure\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Operating expenditure\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"totalCost\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Total cost\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"feasibilityAnalysis\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Feasibility analysis\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"conservationPlanningAndAdmin\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Conservation planning and admin\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"dataCollectionAndFieldCost\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Data collection and field costs\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityRepresentation\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"]\n",
+ " == \"Community representation / liaison\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"blueCarbonProjectPlanning\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Blue carbon project planning\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"establishingCarbonRights\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Establishing carbon rights\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"validation\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Validation\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"implementationLabor\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Implementation labor\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"monitoring\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Monitoring\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"maintenance\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Maintenance\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityBenefitSharingFund\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Community benefit sharing fund\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"carbonStandardFees\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Carbon standard fees\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"baselineReassessment\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Baseline reassessment\", \"NPV\"\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"mrv\": int(\n",
+ " cost_estimates.loc[cost_estimates[\"Cost estimates (USD)\"] == \"MRV\", \"NPV\"]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"longTermProjectOperatingCost\": int(\n",
+ " cost_estimates.loc[\n",
+ " cost_estimates[\"Cost estimates (USD)\"] == \"Long-term project operating\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " },\n",
+ " \"yearlyBreakdown\": [\n",
+ " {\n",
+ " \"costName\": \"feasibilityAnalysis\",\n",
+ " \"totalCost\": float(df.loc[\"Feasibility analysis\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Feasibility analysis\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Feasibility analysis\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"conservationPlanningAndAdmin\",\n",
+ " \"totalCost\": float(df.loc[\"Conservation planning and admin\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Conservation planning and admin\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Conservation planning and admin\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"dataCollectionAndFieldCost\",\n",
+ " \"totalCost\": float(df.loc[\"Data collection and field costs\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Data collection and field costs\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Data collection and field costs\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"blueCarbonProjectPlanning\",\n",
+ " \"totalCost\": float(df.loc[\"Blue carbon project planning\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Blue carbon project planning\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Blue carbon project planning\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"communityRepresentation\",\n",
+ " \"totalCost\": float(df.loc[\"Community representation / liaison\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Community representation / liaison\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Community representation / liaison\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"establishingCarbonRights\",\n",
+ " \"totalCost\": float(df.loc[\"Establishing carbon rights\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Establishing carbon rights\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Establishing carbon rights\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"validation\",\n",
+ " \"totalCost\": float(df.loc[\"Validation\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Validation\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Validation\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"implementationLabor\",\n",
+ " \"totalCost\": float(df.loc[\"Implementation labor\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Implementation labor\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Implementation labor\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"monitoring\",\n",
+ " \"totalCost\": float(df.loc[\"Monitoring\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Monitoring\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Monitoring\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"maintenance\",\n",
+ " \"totalCost\": float(df.loc[\"Maintenance\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Maintenance\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Maintenance\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"communityBenefitSharingFund\",\n",
+ " \"totalCost\": float(df.loc[\"Community benefit sharing fund\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Community benefit sharing fund\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Community benefit sharing fund\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"carbonStandardFees\",\n",
+ " \"totalCost\": float(df.loc[\"Carbon standard fees\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Carbon standard fees\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Carbon standard fees\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"baselineReassessment\",\n",
+ " \"totalCost\": float(df.loc[\"Baseline reassessment\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Baseline reassessment\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Baseline reassessment\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"mrv\",\n",
+ " \"totalCost\": float(df.loc[\"MRV\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"MRV\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"MRV\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"longTermProjectOperatingCost\",\n",
+ " \"totalCost\": float(df.loc[\"Long-term project operating\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Long-term project operating\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Long-term project operating\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"opexTotalCostPlan\",\n",
+ " \"totalCost\": float(df.loc[\"Total opex\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Total opex\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Total opex\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"capexTotalCostPlan\",\n",
+ " \"totalCost\": float(df.loc[\"Total capex\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Total capex\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Total capex\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"totalCostPlan\",\n",
+ " \"totalCost\": float(df.loc[\"Total cost\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Total cost\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Total cost\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"estimatedRevenuePlan\",\n",
+ " \"totalCost\": float(df.loc[\"Est. revenue\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Est. revenue\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Est. revenue\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"creditsIssuedPlan\",\n",
+ " \"totalCost\": float(df.loc[\"Est. credits issued\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Est. credits issued\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Est. credits issued\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"cumulativeNetIncomePlan\",\n",
+ " \"totalCost\": float(df.loc[\"Cumulative net income (revenue - OPEX)\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Cumulative net income (revenue - OPEX)\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Cumulative net income (revenue - OPEX)\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"cumulativeNetIncomeCapexOpex\",\n",
+ " \"totalCost\": float(\n",
+ " df.loc[\"Cumulative net income (revenue - CAPEX - OPEX)\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(df.loc[\"Cumulative net income (revenue - CAPEX - OPEX)\"][\"NPV\"]),\n",
+ " \"costValues\": dict(\n",
+ " df.loc[\"Cumulative net income (revenue - CAPEX - OPEX)\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"annualNetCashFlow\",\n",
+ " \"totalCost\": float(df.loc[\"Annual net cash flow\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Annual net cash flow\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Annual net cash flow\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"annualNetIncome\",\n",
+ " \"totalCost\": float(df.loc[\"Annual net income (revenue – OPEX)\"][\"Total\"]),\n",
+ " \"totalNPV\": float(df.loc[\"Annual net income (revenue – OPEX)\"][\"NPV\"]),\n",
+ " \"costValues\": dict(df.loc[\"Annual net income (revenue – OPEX)\"][:-2].items()),\n",
+ " },\n",
+ " ],\n",
+ " },\n",
+ " \"breakevenPriceComputationOutput\": {\n",
+ " # Update values as first element of the list\n",
+ " # \"lossRate\": breakeven_cost['project_params']['Conservation additional parameters'][ 'project-specific'], # noqa: E501\n",
+ " \"carbonRevenuesToCover\": breakeven_cost[\"project_params\"][\"Carbon revenues to cover\"],\n",
+ " \"sequestrationRate\": project_params[\"Restoration additional parameters\"][\n",
+ " \"Tier 2 - Country-specific rate\"\n",
+ " ],\n",
+ " \"plantingSuccessRate\": 0.8,\n",
+ " \"initialCarbonPrice\": float(\n",
+ " breakeven_cost[\"project_params\"][\"Initial carbon price assumption ($)\"]\n",
+ " ),\n",
+ " # \"emissionFactors\": {\n",
+ " # \"emissionFactor\": None,\n",
+ " # \"emissionFactorAgb\": breakeven_cost['project_params']['Conservation additional parameters']['Country-specific emission factors']['Emission factor AGB'], # noqa: E501\n",
+ " # \"emissionFactorSoc\": breakeven_cost['project_params']['Conservation additional parameters']['Country-specific emission factors']['Emission factor SOC'] # noqa: E501\n",
+ " # },\n",
+ " \"totalProjectCost\": {\n",
+ " \"total\": {\n",
+ " \"total\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"capex\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Capital expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " \"npv\": {\n",
+ " \"total\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"capex\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Capital expenditure\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " },\n",
+ " \"leftover\": {\n",
+ " \"total\": {\n",
+ " \"total\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (non-discounted)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"leftover\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (non-discounted)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if breakeven_cost[\"project_params\"][\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (non-discounted)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if breakeven_cost[\"project_params\"][\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " \"npv\": {\n",
+ " \"total\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"leftover\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if breakeven_cost[\"project_params\"][\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " - int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"opex\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " if breakeven_cost[\"project_params\"][\"Carbon revenues to cover\"] == \"Opex\"\n",
+ " else int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " },\n",
+ " \"summary\": {\n",
+ " \"$/tCO2e (total cost, NPV)\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"$/tCO2e (total cost, NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"$/ha\": int(breakeven_cost[\"cost_summary\"][\"$/ha\"].replace(\"$\", \"\").replace(\",\", \"\")),\n",
+ " \"NPV covering cost\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"NPV covering cost\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " # double check this attribute - this value should be the same as the NPV covering cost so how is it used? # noqa: E501\n",
+ " \"Leftover after OpEx / total cost\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"NPV covering cost\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"IRR when priced to cover OpEx\": float(\n",
+ " breakeven_cost[\"cost_summary\"][\"IRR when priced to cover opex\"].replace(\"%\", \"\")\n",
+ " )\n",
+ " / 100,\n",
+ " \"IRR when priced to cover total cost\": float(\n",
+ " breakeven_cost[\"cost_summary\"][\"IRR when priced to cover total costs\"].replace(\n",
+ " \"%\", \"\"\n",
+ " )\n",
+ " )\n",
+ " / 100,\n",
+ " \"Total cost (NPV)\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total cost (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Capital expenditure (NPV)\": int(\n",
+ " cost_summary[\"Capital expenditure (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Operating expenditure (NPV)\": int(\n",
+ " cost_summary[\"Operating expenditure (NPV)\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Credits issued\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Credits issued\"].replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Total revenue (NPV)\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Total revenue (non-discounted)\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Total revenue (non-discounted)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Financing cost\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Financing cost\"].replace(\"$\", \"\").replace(\",\", \"\")\n",
+ " ),\n",
+ " # dueble check - we should remove this and just show the fundin gap (NPV)\n",
+ " \"Funding gap\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Funding gap (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Funding gap (NPV)\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Funding gap (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Funding gap per tCO2e (NPV)\": float(\n",
+ " breakeven_cost[\"cost_summary\"][\"Funding gap per tCO2e (NPV)\"]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"Community benefit sharing fund\": int(\n",
+ " breakeven_cost[\"cost_summary\"][\"Community benefit sharing fund % of revenue\"]\n",
+ " .replace(\"%\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " )\n",
+ " / 100,\n",
+ " },\n",
+ " \"costDetails\": {\n",
+ " \"total\": {\n",
+ " \"capitalExpenditure\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Capital expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"operationalExpenditure\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"totalCost\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"feasibilityAnalysis\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Feasibility analysis\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"conservationPlanningAndAdmin\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Conservation planning and admin\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"dataCollectionAndFieldCost\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Data collection and field costs\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityRepresentation\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Community representation / liaison\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"blueCarbonProjectPlanning\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Blue carbon project planning\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"establishingCarbonRights\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Establishing carbon rights\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"validation\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Validation\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"implementationLabor\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Implementation labor\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"monitoring\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Monitoring\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"maintenance\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Maintenance\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityBenefitSharingFund\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Community benefit sharing fund\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"carbonStandardFees\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Carbon standard fees\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"baselineReassessment\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Baseline reassessment\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"mrv\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"MRV\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"longTermProjectOperatingCost\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Long-term project operating\",\n",
+ " \"Total cost\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " \"npv\": {\n",
+ " \"capitalExpenditure\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Capital expenditure\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"operationalExpenditure\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Operating expenditure\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"totalCost\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Total cost\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"feasibilityAnalysis\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Feasibility analysis\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"conservationPlanningAndAdmin\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Conservation planning and admin\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"dataCollectionAndFieldCost\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Data collection and field costs\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityRepresentation\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Community representation / liaison\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"blueCarbonProjectPlanning\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Blue carbon project planning\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"establishingCarbonRights\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Establishing carbon rights\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"validation\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Validation\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"implementationLabor\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Implementation labor\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"monitoring\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Monitoring\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"maintenance\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"Maintenance\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"communityBenefitSharingFund\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Community benefit sharing fund\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"carbonStandardFees\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Carbon standard fees\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"baselineReassessment\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Baseline reassessment\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"mrv\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"] == \"MRV\", \"NPV\"]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " \"longTermProjectOperatingCost\": int(\n",
+ " breakeven_cost[\"cost_estimates\"]\n",
+ " .loc[\n",
+ " breakeven_cost[\"cost_estimates\"][\"Cost estimates (USD)\"]\n",
+ " == \"Long-term project operating\",\n",
+ " \"NPV\",\n",
+ " ]\n",
+ " .values[0]\n",
+ " .replace(\"$\", \"\")\n",
+ " .replace(\",\", \"\")\n",
+ " ),\n",
+ " },\n",
+ " },\n",
+ " \"yearlyBreakdown\": [\n",
+ " {\n",
+ " \"costName\": \"feasibilityAnalysis\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Feasibility analysis\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Feasibility analysis\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Feasibility analysis\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"conservationPlanningAndAdmin\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Conservation planning and admin\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Conservation planning and admin\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Conservation planning and admin\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"dataCollectionAndFieldCost\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Data collection and field costs\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Data collection and field costs\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Data collection and field costs\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"blueCarbonProjectPlanning\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Blue carbon project planning\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Blue carbon project planning\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Blue carbon project planning\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"communityRepresentation\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Community representation / liaison\"][\n",
+ " \"Total\"\n",
+ " ]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Community representation / liaison\"][\n",
+ " \"NPV\"\n",
+ " ]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Community representation / liaison\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"establishingCarbonRights\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Establishing carbon rights\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Establishing carbon rights\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Establishing carbon rights\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"validation\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Validation\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Validation\"][\"NPV\"]),\n",
+ " \"costValues\": dict(breakeven_cost[\"cost_pro_forma\"].loc[\"Validation\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"implementationLabor\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Implementation labor\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Implementation labor\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Implementation labor\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"monitoring\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Monitoring\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Monitoring\"][\"NPV\"]),\n",
+ " \"costValues\": dict(breakeven_cost[\"cost_pro_forma\"].loc[\"Monitoring\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"maintenance\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Maintenance\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Maintenance\"][\"NPV\"]),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Maintenance\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"communityBenefitSharingFund\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Community benefit sharing fund\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Community benefit sharing fund\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Community benefit sharing fund\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"carbonStandardFees\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Carbon standard fees\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Carbon standard fees\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Carbon standard fees\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"baselineReassessment\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Baseline reassessment\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Baseline reassessment\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Baseline reassessment\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"mrv\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"MRV\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"MRV\"][\"NPV\"]),\n",
+ " \"costValues\": dict(breakeven_cost[\"cost_pro_forma\"].loc[\"MRV\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"longTermProjectOperatingCost\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Long-term project operating\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Long-term project operating\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Long-term project operating\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"opexTotalCostPlan\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Total opex\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Total opex\"][\"NPV\"]),\n",
+ " \"costValues\": dict(breakeven_cost[\"cost_pro_forma\"].loc[\"Total opex\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"capexTotalCostPlan\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Total capex\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Total capex\"][\"NPV\"]),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Total capex\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"totalCostPlan\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Total cost\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Total cost\"][\"NPV\"]),\n",
+ " \"costValues\": dict(breakeven_cost[\"cost_pro_forma\"].loc[\"Total cost\"][:-2].items()),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"estimatedRevenuePlan\",\n",
+ " \"totalCost\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Est. revenue\"][\"Total\"]),\n",
+ " \"totalNPV\": float(breakeven_cost[\"cost_pro_forma\"].loc[\"Est. revenue\"][\"NPV\"]),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Est. revenue\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"creditsIssuedPlan\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Est. credits issued\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Est. credits issued\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Est. credits issued\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"cumulativeNetIncomePlan\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Cumulative net income (revenue - OPEX)\"][\n",
+ " \"Total\"\n",
+ " ]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Cumulative net income (revenue - OPEX)\"][\n",
+ " \"NPV\"\n",
+ " ]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Cumulative net income (revenue - OPEX)\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " {\n",
+ " \"costName\": \"cumulativeNetIncomeCapexOpex\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\n",
+ " \"Cumulative net income (revenue - CAPEX - OPEX)\"\n",
+ " ][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\n",
+ " \"Cumulative net income (revenue - CAPEX - OPEX)\"\n",
+ " ][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Cumulative net income (revenue - CAPEX - OPEX)\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " { # sum of total cost + est revenue\n",
+ " \"costName\": \"annualNetCashFlow\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Annual net cash flow\"][\"Total\"]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Annual net cash flow\"][\"NPV\"]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Annual net cash flow\"][:-2].items()\n",
+ " ),\n",
+ " },\n",
+ " { # sum total opex + est revenue\n",
+ " \"costName\": \"annualNetIncome\",\n",
+ " \"totalCost\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Annual net income (revenue – OPEX)\"][\n",
+ " \"Total\"\n",
+ " ]\n",
+ " ),\n",
+ " \"totalNPV\": float(\n",
+ " breakeven_cost[\"cost_pro_forma\"].loc[\"Annual net income (revenue – OPEX)\"][\n",
+ " \"NPV\"\n",
+ " ]\n",
+ " ),\n",
+ " \"costValues\": dict(\n",
+ " breakeven_cost[\"cost_pro_forma\"]\n",
+ " .loc[\"Annual net income (revenue – OPEX)\"][:-2]\n",
+ " .items()\n",
+ " ),\n",
+ " },\n",
+ " ],\n",
+ " },\n",
+ "}\n",
+ "\n",
+ "output\n",
+ "\n",
+ "# export output as json file\n",
+ "with open(f\"./test_data/output_{project_name}.json\", \"w\") as f:\n",
+ " json.dump(output, f)"
+ ]
}
],
"metadata": {