Skip to content

Differentiate interest rates by SSP in scenario_config#873

Open
flohump wants to merge 3 commits intomagpiemodel:developfrom
flohump:f_interestrate
Open

Differentiate interest rates by SSP in scenario_config#873
flohump wants to merge 3 commits intomagpiemodel:developfrom
flohump:f_interestrate

Conversation

@flohump
Copy link
Copy Markdown
Contributor

@flohump flohump commented Mar 18, 2026

🐦 Description of this PR 🐦

  • Add SSP-specific interest rates (s12_interest_lic, s12_interest_hic) to scenario_config.csv. Previously, all SSPs used the same default rates (LIC=10%, HIC=4%), which is inconsistent with the SSP narratives.
SSP LIC HIC Rationale
SSP1 10% 4% unchanged
SSP2 15% 6% moderate institutional barriers
SSP3 20% 8% fragmentation, restricted capital flows
SSP4 20% 6% highest inequality — LIC left behind, HIC relatively stable
SSP5 10% 4% unchanged
  • SDP and VLLO scenarios remain at SSP1 defaults.
  • Historical rates are untouched; new rates phase in linearly between 2025 and 2050 via the existing fader mechanism.
  • default.cfg updated to SSP2 values (LIC=15%, HIC=6%) since SSP2 is MAgPIE's default scenario. The noselect variants were updated accordingly.

Motivation

The interest rate is fundamental for the balance between land expansion and intensification in MAgPIE. It determines the cost of capital for agricultural investments. Low interest rates favor intensification; high rates shift the balance toward land expansion.

Previously, all SSPs used identical rates, implicitly assuming the same investment environment regardless of scenario narrative. This led to uniformly high intensification and crop yields across SSPs — inconsistent with the SSP framework and an outlier compared to other IAMs in ScenarioMIP.

The new rates are consistent with observed agricultural lending rates in Sub-Saharan Africa, where unsubsidized agribusiness loans average more than 20% (World Bank Group 2016), and with commercial lending rates in OECD countries of 3–7% (World Bank 2024, indicator FR.INR.LEND) https://data.worldbank.org/indicator/FR.INR.LEND.

Test plan

  • Compare SSP2 crop yields and land-use change against previous default
  • Verify SSP1 and SSP5 results are unchanged

Results

SSP2-NPI

Resources_Land_Cover_Cropland-154 Productivity_Landuse_Intensity_Indicator_Tau-124 Productivity_Yield_Crops_Cereals-9 Emissions_CO2_Land_Land_use_Change-127

Tables with global values. SSP1 and SSP5 are unchanged (as expected) and omitted from the table.

Cereal yields (t DM/ha)

Scenario 2050 develop 2050 thisPR Δ% 2100 develop 2100 thisPR Δ%
SSP2-NPi2025 4.31 4.20 -2.5% 4.49 4.20 -6.6%
SSP2-PkBudg1000 4.70 4.57 -2.8% 5.86 5.42 -7.4%
SSP2-PkBudg650 5.46 5.17 -5.3% 6.45 5.96 -7.7%
SSP3-NPi2025 4.36 3.98 -8.7% 4.54 3.69 -18.8%
SSP3-PkBudg1000 4.94 4.46 -9.6% 6.28 5.23 -16.7%
SSP3-rollBack 4.34 3.97 -8.6% 4.42 3.57 -19.3%
SSP4-NPi2025 4.35 4.24 -2.7% 4.59 4.10 -10.6%

Bioenergy crop yields (t DM/ha)

Scenario 2050 develop 2050 thisPR Δ% 2100 develop 2100 thisPR Δ%
SSP2-NPi2025 15.0 14.1 -6.5% 24.3 23.0 -5.3%
SSP2-PkBudg1000 18.9 17.7 -6.6% 24.6 23.3 -5.5%
SSP2-PkBudg650 20.0 19.3 -3.8% 23.6 22.9 -2.7%
SSP3-NPi2025 16.1 14.5 -10.3% 26.1 25.5 -2.3%
SSP3-PkBudg1000 20.4 18.6 -8.9% 25.0 22.5 -9.9%
SSP3-rollBack 13.7 11.8 -13.6% 27.1 26.0 -4.1%
SSP4-NPi2025 15.4 14.3 -7.2% 25.8 24.7 -4.0%

Land use intensity (Tau index)

Scenario 2050 develop 2050 thisPR Δ% 2100 develop 2100 thisPR Δ%
SSP2-NPi2025 1.64 1.55 -5.3% 1.88 1.75 -7.1%
SSP2-PkBudg1000 1.73 1.63 -6.0% 2.37 2.19 -7.9%
SSP2-PkBudg650 1.96 1.84 -6.2% 2.59 2.40 -7.4%
SSP3-NPi2025 1.69 1.50 -10.9% 1.95 1.61 -17.6%
SSP3-PkBudg1000 1.83 1.61 -12.1% 2.55 2.18 -14.6%
SSP3-rollBack 1.67 1.49 -11.1% 1.92 1.58 -17.7%
SSP4-NPi2025 1.65 1.53 -6.8% 1.91 1.70 -11.1%

Cropland (million ha)

Scenario 2050 develop 2050 thisPR Δ% 2100 develop 2100 thisPR Δ%
SSP2-NPi2025 1663 1695 +2.0% 1930 2042 +5.8%
SSP2-PkBudg1000 1573 1625 +3.3% 1691 1818 +7.5%
SSP2-PkBudg650 1582 1656 +4.7% 1674 1790 +6.9%
SSP3-NPi2025 1703 1850 +8.6% 2210 2650 +19.9%
SSP3-PkBudg1000 1597 1748 +9.5% 1876 2190 +16.7%
SSP3-rollBack 1705 1841 +8.0% 2238 2706 +20.9%
SSP4-NPi2025 1656 1707 +3.1% 2087 2295 +10.0%

LUC CO2 emissions (Mt CO2/yr)

Scenario 2050 develop 2050 thisPR Δ 2100 develop 2100 thisPR Δ
SSP2-NPi2025 182 385 +203 1286 1449 +163
SSP2-PkBudg1000 -2315 -1936 +379 -2846 -2129 +716
SSP2-PkBudg650 -3021 -2674 +348 -3001 -2393 +608
SSP3-NPi2025 1202 3719 +2517 2489 8173 +5684
SSP3-PkBudg1000 -1982 -1389 +593 -1782 -652 +1130
SSP3-rollBack 1548 3277 +1729 3513 7805 +4292
SSP4-NPi2025 210 203 -7 2797 5004 +2206

Key takeaways

  1. SSP1 and SSP5 completely unchanged — confirming the marker scenario (SSP1-VLLO) is unaffected.
  2. Yields decrease as intended: SSP2 cereal yields drop 3–8%, SSP3 drops 9–19% by 2100. The effect is stronger for SSP3, consistent with the larger rate increase.
  3. Tau (land use intensity) decreases — this is the main driver behind the lower crop yields, together with changing cropland patterns.
  4. Cropland expands to compensate for lower yields: +2–8% in SSP2, +8–21% in SSP3 by 2100. This is the expected intensification→expansion shift.
  5. LUC CO2 emissions increase substantially, especially in SSP3 baseline scenarios where the cropland expansion into forests drives large additional emissions. In mitigation scenarios the effect is moderated by carbon pricing but still significant.
  6. SSP3 effects are very large — SSP3-NPi2025 and SSP3-rollBack show cropland increases of ~440–470 Mha and LUC emissions increases of 4–6 Gt CO2/yr by 2100.

Data source: report_all.rds. Analysis created with Claude Code.

🔧 Checklist for PR creator 🔧

If a point is not applicable, check the checkbox anyway and write "non-applicable" next to the checkbox.

  • Label pull request from the label list.

    • Low risk: Simple bugfixes (missing files, updated documentation, typos) or changes in start or output scripts
    • Medium risk: Uncritical changes in the model core (e.g. moderate modifications in non-default realizations)
    • High risk: Critical changes in model core or default settings (e.g. changing a model default or adjusting a core mechanic in the model)
  • Self-review own code

    • No hard coded numbers and cluster/country/region names.
    • The new code doesn't contain declared but unused parameters or variables.
    • magpie4 R library has been updated accordingly and backwards compatible where necessary.
    • scenario_config.csv has been updated accordingly (important if default.cfg has been updated)
  • Document changes

    • Add changes to CHANGELOG.md
    • Where relevant, put In-code documentation comments
    • Properly address updates in interfaces in the module documentations
    • run goxygen::goxygen() and verify the modified code is properly documented
  • Perform test runs

    • Low risk:
      • Run a compilation check via Rscript start.R --> "compilation check"
    • Medium risk:
      • Run default run via Rscript start.R --> "default"
      • Check logs for errors/warnings
      • Fill in performance section below
    • High risk:
      • Run test runs via Rscript start.R --> "test runs"
      • Check logs for errors/warnings
      • Default run from the PR target branch for comparison
      • Provide relevant comparison plots (land-use, emissions, food prices, land-use intensity,...)
      • Fill in performance section below
  • Reporting produces no errors and no new warnings

  • Get two approving reviews (at least one from RSE)

📉 Performance 📈

  • This PR's default : 28 mins
  • Current develop default: 28 min

🚨 Checklist for reviewer 🚨

  • PR is labeled correctly
  • Code changes look reasonable
    • No hard coded numbers and cluster/country/region names.
    • No unnecessary increase in module interfaces
    • model behavior/performance is satisfactory.
  • Changes are properly documented
    • CHANGELOG is updated correctly
    • Updates in interfaces have been properly addressed in the module documentations
    • In-code documentation looks appropriate

@flohump flohump changed the title revision of interest rates for SSPs Differentiate interest rates by SSP in scenario_config Mar 18, 2026
@flohump flohump added Minor Smaller modifications High risk Higher risk labels Mar 18, 2026
@flohump flohump requested a review from tscheypidi March 19, 2026 11:09
@flohump flohump marked this pull request as ready for review March 20, 2026 08:51
@flohump flohump requested a review from georg-schroeter March 20, 2026 08:56
@flohump flohump requested a review from pvjeetze March 30, 2026 14:38
Copy link
Copy Markdown
Contributor

@pvjeetze pvjeetze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Further discussions are ongoing between @flohump, @bodirsky and me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

High risk Higher risk Minor Smaller modifications

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants