Mitigating Inequality Under Commodity-Price Shocks

An Agent-Based Model Approach

Author

Michael Bean

1. Introduction

Volatility in global commodity markets has been shown to significantly impact the livelihoods of smallholder farming households in developing areas. Unpredictable fluctuations threaten household stability, alter labor decisions and prompt a variety of smoothing behaviors surrounding economic activities (Deaton (1992); Dercon (2002); Adhvaryu, Kala, and Nyshadham (2021)). Food insecurity along with negative health and educational outcomes have all been linked to to income volatility and the differing capacities households have to effectively respond to downturns (or take advantage of upturns) speaks to broader societal issues regarding fairness and equality (Akter and Basher (2014); Bania and Leete (2022) Hardy (2014)). Crafting policy that can effectively address these issues is difficult because the ways in which households decisions under risk can be hard to disentangle (Morduch (1995)). Households employ smoothing strategies to reduce fluctuations in their consumption during periods of income instability (consumption smoothing), but they also employ strategies designed to reduce fluctuations in income altogether (income smoothing) (Pandey et al. (2000)). Operating ex-ante, income smoothing is generally thought to incur costs through less efficient production allocation but reduces perceived risk by increasing diversification or increasing flexibility (Morduch (1995); Pandey et al. (2000)). Consumption smoothing usually takes place after experiencing shocks and can include migration, loans, asset liquidation charity and short-term entrepreneurship; all of which serve to stabilize incomein these circumstances (Pandey et al. (2000); Adhvaryu, Kala, and Nyshadham (2021)).

Entrepreneurship has been shown in some contexts to function strictly as a coping mechanism, helping smooth the negative impact of shocks; however, in other circumstances, it may serves to increase household resilience or act as an avenue for upward economic mobility (Adhvaryu, Kala, and Nyshadham (2021); Blattman and Dercon (2018)). The motivations behind entrepreneurial decisions, whether as temporary shock response, risk diversification or as strategic income enhancement, can be difficult to distinguish empirically, as multiple mechanisms may operate simultaneously within the same household. Furthermore, the decision to transition from farming to other entrepreneurial activities is influenced not just by heterogeneous characteristics among household members, but also on access to functioning credit markets, the cost of capital and a variety of other factors in the broader economic and policy environments (Adhvaryu, Kala, and Nyshadham (2021)). Consequently, most household micro-enterprises never transition into the formal business sector, even in environments experiencing rapid economic growth (McCaig and Pavcnik (2015)). The stickiness of informality seems odd given the potential for wealth accumulation and economic mobility entrepreneurship offers.

Realizing that entrepreneurship tends to remain a temporary coping strategy rather than a sustained pathway for economic mobility, a set of normative questions surrounding policy making begins to emerge. Why do so many households remain specialized in traditional farming. How do structural factors such as differential access to credit, heterogenous entrepreneurial abilities, and unequal asset endowments create barriers to mobility. If innate entrepreneurial ability and structural inequalities such as uneven access to credit markets and productive assets interact, policy designed to produce better outcomes may instead just serve to reinforce existing disparities. Modern theories of justice underscore the ethical imperative societies face to correct inequalities arising from factors beyond the control of individuals, including inherent differences in ability or inherited socioeconomic status (Rawls (1971); Dworkin in Atkinson and Bourguignon (2015); Sen (2006); Roemer and Trannoy (2015)). These kinds of normative frameworks suggest policy interventions should 1) address structural constraints preventing households from generating wealth and 2) Mitigate the disparities caused by inherent differences between households. Reliance strictly on market mechanisms may fail to achieve these kinds of equitable outcomes, especially in environments where price shocks are able to disproportionately harm households already disadvantaged by fewer resources or limited entrepreneurial capability (Bowles and Gintis (2001); Piketty (2014)). Consequently, understanding how economic shocks, household characteristics, and institutional environments interact becomes important in not only informing strategies aimed at stabilizing household livelihoods but also to design interventions aimed at reducing structural inequities.

2. Research Question

This study builds on the work of Adhvaryu, Kala, and Nyshadham (2021) in “Booms, Busts, and Household Enterprise,” which examines how smallholder farmers in Tanzania respond to commodity price shocks by switching between farming and entrepreneurship based on their ability. By extending this framework, the model investigates how price volatility and policy interventions shape enterprise formation and inequality.

The central question guiding this research is:

How do global commodity price fluctuations influence entrepreneurial decisions among smallholder farming households, and to what extent can policy interventions reduce inequalities associated with differences in entrepreneurial ability?

  • H1: Commodity price volatility amplifies wealth inequality and is driven by differences in entrepreneurial ability. Sectoral switching serves as a transmission mechanism through which ability differences translate into divergent wealth accumulation patterns.

  • H2: Targeted interventions, such as expanded credit access or capital grants, can reduce ability-driven wealth inequality by facilitating entrepreneurial entry among constrained households, leading to higher wealth accumulation.

Traditional empirical methods may not have trouble capturing the complex, interactions created by overlapping policy levers. This study therefore develops an agent-based model to simulate how price shocks, individual ability, and policy design interact to shape household-level outcomes and distributional dynamics.

The agent-based model/complex adaptive system framework offers several advantages:

  • Heterogeneity and individual decision-making: Agents differ in key attributes such as ability, wealth, and credit access, allowing the model to reflect real-world variation in household responses to changing conditions.

  • Emergent outcomes: Inequality, wealth and entrepreneurship rates emerge from market interactions rather, offering insight into system level patterns that traditional analysis may miss.

  • Nonlinear dynamics: ABMs capture feedback loops and threshold effects, revealing how small differences can lead to divergent long-term outcomes.

  • Policy experimentation: ABMs allow testing of counterfactual policy scenarios, supporting the evaluation of interventions aimed at mitigating structural inequality.

By generalizing Adhvaryu, Kala, and Nyshadham (2021) and extending it through simulation, this research contributes to ongoing debates about how policy can address inequality rooted in innate traits and institutional constraints.

3. Model Architecture

The model simulates a set of decisions made by households when determining how to allocate resources: observing prices, choosing a sector, and making final allocation decisions. The diagram below (Figure 1) presents a high-level concept of operations view of the model’s architecture, demonstrating how state, economic, and institutional parameters generate aggregate outcomes and feedback loops.

At each time step, households receive updated price signals and evaluate whether to remain in farming or switch to entrepreneurship. Their decision depends on individual ability and access to capital, which in turn affect income through production functions. Income then accumulates as wealth, which feeds back into future decisions by altering household state variables such as available capital and the viability of switching sectors.

flowchart TB
  %% Nodes
  A["<b>Global Parameters</b><br/>α, β, r, L, volatility"]
  B["<b>Coffee Price</b><br/>Ornstein-Uhlenbeck Process"]
  C["<b>Households</b><br/>ability, wealth, trees, credit access"]
  D["<b>Sector Choice</b><br/>Entrepreneur vs. Farmer"]
  E["<b>Labor Allocation</b><br/>FOCs: marginal product equalization"]
  F["<b>Capital Demand</b><br/>subject to credit constraint"]
  G["<b>Income Calculation</b><br/>Cobb-Douglas production"]
  H["<b>Wealth Update</b><br/>income – consumption"]
  I["<b>Inequality</b><br/>Gini coefficient, histogram"]

  %% Connections
  A --> C
  A --> B
  B --> D
  C --> D
  D --> E
  E --> F
  F --> G
  G --> H
  H --> I
  
  %% Feedback Loop
  H -.-> C

  %% Styling
  classDef default fill:#f9f9f9,stroke:#ccc,stroke-width:0.5px,color:#000,rx:6,ry:6,font-family:Helvetica,font-size:12px;
  class A,B,C,D,E,F,G,H,I default;

Figure 1: Concept of Operations (ConOps) diagram for enterprise switching: Households switch between farming and entrepreneurship based on prices and individual characteristics, with wealth accumulation feeding back into future decisions.

4. ODD + D: Model Description

4.1 Overview

Purpose
This model explores how smallholder farming households respond to global commodity price volatility through entrepreneurship, and how differences in entrepreneurial ability, credit access, and capital constraints shape wealth inequality. Sectoral participation patterns therefore serve as the mechanism through which ability differences translate into wealth inequality. It can be used to evaluate how effective policy interventions, like credit expansion or capital grants, can be at mitigating the effects of structural inequities. It extends the framework developed by Adhvaryu, Kala, and Nyshadham (2021) into a more generic context, abstracted from Tanzania.

Entities, State Variables, and Scales

  • Agents: Smallholder farming households

  • State variables:

    • ability – innate entrepreneurial productivity
    • wealth – accumulated capital
    • credit_access – binary indicator of formal borrowing eligibility
    • trees – proxy for productive farm assets (heterogeneous across households)
    • entrepreneur? – current occupational status (boolean)
    • ever-entrepreneur? – lifetime entrepreneurship indicator
    • effective-r – actual interest rate faced (formal vs informal)
  • Global variables:

    • coffee_price – modeled via Ornstein-Uhlenbeck process
    • pf – farm-gate price (follows coffee price)
    • pe_biz – enterprise output price (affected by market saturation)
    • r – formal interest rate
    • r-informal – informal interest rate (3x formal rate)
    • credit-borrow-multiple – borrowing capacity multiplier for credit-constrained agents
    • volatility – price shock parameter
    • α, β – Cobb-Douglas coefficients
    • L – total available labor (fixed at 1 for all households)
  • Scales:

    • Temporal: model steps represent production cycles (seasonal)
    • Spatial: no geographic layout

4.2 Design Concepts

Concept Description
Basic Principles Enterprise choice follows constrained optimization based on ability and credit access, using Cobb-Douglas production. Based on Adhvaryu, Kala, and Nyshadham (2021).
Emergence Wealth, inequality and entrepreneurship patterns emerge from household decisions and interactions with market volatility.
Adaptation Agents switch to entrepreneurship when their ability exceeds an endogenously determined threshold. The threshold accounts for current prices, market saturation effects, household characteristics, and credit constraints.
Objectives Maximize household income under production and financial constraints.
Learning No learning is implemented; agents follow fixed decision rules.
Prediction Agents estimate income using current global parameters (e.g., price) and known production functions.
Sensing Agents observe global variables (coffee, or other commodity price) and their own state (wealth, ability, credit access).
Interaction Indirect via shared prices and credit availability. No direct agent-to-agent communication.
Stochasticity Price shocks are generated each tick. Policy variables vary across runs.
Collectives Not modeled. Agents act independently.
Observation The model outputs system-level metrics: Gini coefficient, mean wealth, entrepreneurship share, etc.

4.3 Details

Initialization
At model start, households are assigned random ability and credit_access from specified distributions, and trees from a normal distribution. The coffee price begins at its long-run average. Household wealth initialized uniformly at 1.0, L (labor) is held constant at 1 for all households across all runs. Production function and other variables can also be set via slider.

Input Data
No empirical input data. Variables are set by the modeler.

Submodels

  • Price Shock Process
    A soft-bounded Ornstein–Uhlenbeck (OU) process generates coffee-price dynamics:

    \[ p_{t+1} \;=\; p_t + \kappa\bigl(\bar{p} - p_t\bigr) + \varepsilon_t + \xi_t \]

    where

    • \(\varepsilon_t \sim \mathcal{N}(0,\sigma)\)  (volatility slider)
    • \(\xi_t \;=\; p_t \,\eta_t\) with probability \(1\%\),
      \(\eta_t \sim \mathcal{N}(0,0.2)\)  (rare symmetric boom / bust)
    • Soft bounds:
      • if \(p_t > 1.5\) subtract \(0.2\bigl(p_t - 1.5\bigr)\);
      • if \(p_t < 0.5\) add \(0.2\bigl(0.5 - p_t\bigr)\);
    • Hard floor at \(0.1\) prevents non-positive prices.
  • Credit-Cost Function
    Agents face a dual interest-rate regime:

    \[ r_i \;=\; \begin{cases} r & \text{if the agent has \emph{formal} credit access} \\[6pt] 3\,r & \text{otherwise (informal market)} \end{cases} \]

  • Sector Choice Logic: Agents switch to entrepreneurship if their ability exceeds a household-specific threshold computed iteratively based on optimal factor allocation and net income comparison

  • Market Saturation Function
    Enterprise output price decreases as more agents enter entrepreneurship:

    \[ p_e = 0.5 + \frac{0.5}{1 + \exp(5 \times (s - 0.6))} \]

    where \(s\) is the share of agents currently engaged in entrepreneurship. This creates negative externalities that naturally limit excessive entry into the enterprise sector.

  • Production: Cobb-Douglas output using household ability, labor, and capital

  • Capital Demand: Bounded by wealth and credit access

  • Income and Wealth Update: Income calculated and added to wealth (consumption is fixed and uniform across households)

  • Inequality Metrics: Gini coefficient and wealth distribution histogram


4.4 Decision-Making (+D)

Households choose between farming and entrepreneurship based on their individual ability relative to a threshold that changes with market conditions. Instead of comparing expected incomes each period, agents become entrepreneurs only when their ability exceeds this cutoff. The threshold depends on coffee prices, how many other households are already in business, production parameters, labor availability, and access to credit.

Formally, sector choice is governed by: \[ \theta_i > \theta^* \] where: - \(\theta_i\) is the entrepreneurial ability of agent \(i\).
- \(\theta^*\) is the minimum ability level required to make entrepreneurship more profitable than farming, computed iteratively from model parameters and production constraints.

Sector Income Equations

Income in each sector is calculated using Cobb-Douglas production functions:

  • Farming
    \[ y_f = p_f \cdot (\theta_i \cdot \phi_f) \cdot L_f^{\alpha} \cdot T_i^{1-\alpha} \] where:

  • \(p_f\) = farm-gate price (follows coffee price)

  • \(\theta_i \cdot \phi_f\) = ability-adjusted farming efficiency

  • \(L_f\) = labor allocated to farming

  • \(T_i\) = household tree stock (heterogeneous farm capital)

  • Entrepreneurship
    \[ y_e = p_e \cdot (\theta_i \cdot \phi_e) \cdot L_e^{\beta} \cdot k^{1-\beta} - r \cdot k \] where:

  • \(p_e\) = enterprise output price (decreases with market saturation)

  • \(\theta_i \cdot \phi_e\) = ability-adjusted enterprise efficiency

  • \(L_e\) = labor allocated to enterprise

  • \(k\) = capital investment (subject to credit constraints)

  • \(r\) = interest rate (higher for credit-constrained households)

Threshold Determination

To find the threshold θ*, the model tests different ability levels to see when entrepreneurship becomes profitable. For each candidate threshold, it calculates how households would split their labor between farming and business, applies borrowing limits based on credit access, accounts for differences in farm assets, and compares net incomes after subtracting capital costs.

Agents below the threshold specialize in farming, allocating all labor to agricultural production. Those above the threshold become entrepreneurs, optimally dividing labor between farming and enterprise activities while investing capital subject to their credit constraints.

Additional Constraints

Households without formal credit access face higher borrowing costs (three times the formal interest rate) and can only borrow up to 50% of their current wealth. In contrast, households with formal credit access benefit from lower interest rates and face unlimited borrowing capacity. Market saturation also shapes entrepreneurial decisions, as enterprise output prices decrease nonlinearly with increased participation, creating competitive pressures that limit excessive entry into the business sector. The model however assumes frictionless sectoral switching with no transition costs or delays when households change occupations. Finally, households operate under static expectations, following fixed decision rules based on current conditions rather than updating their strategies or learning from experience over time.

5. Coding

This section outlines the core computational logic of the model in high-level pseudocode. The agent-based model is structured around sequential processes for price updates, sector selection, production, income, and wealth updates. Each time step represents a seasonal production cycle in which households make decisions based on updated economic conditions and individual attributes.


CREATE global parameters: α, β, r, L, volatility
CREATE households with 1) initial wealth = 1.0
                       2) random ability, credit access, and trees

FOR each period:
    UPDATE coffee price using soft-bounded Ornstein-Uhlenbeck process

    FOR each household:
        COMPUTE ability threshold for entrepreneurship based on:
            - Cobb-Douglas parameters
            - current coffee price
            - available capital (wealth + credit access)
            - labor supply

        IF ability ≥ threshold:
            ASSIGN household to entrepreneurship sector
            ALLOCATE labor and compute capital demand (bounded by wealth and credit)
            CALCULATE income from enterprise production function
        
        ELSE:
            ASSIGN household to farming sector
            ALLOCATE labor
            CALCULATE income from farm production function

        UPDATE household wealth:
            wealth = wealth + income – consumption (fixed)

    RECORD model outputs:
        - Gini coefficient
        - Mean wealth
        - Entrepreneurship share
        - Distribution statistics (e.g., histograms)

6. The Model User Interface

6.1 The “World”

  • What you see
    • 100 circles on a blank background (no geographical constraints).
      • Green = farmers
      • Blue = entrepreneurs
    • Circle size grows with log-wealth so richer agents stand out without eclipsing the others.
  • Why it matters
    • Demonstrates the ability threshold: when coffee prices crash, a wave of blue dots appears as households cross θ*.
    • Dot growth/shrinkage visualize the wealth-feedback loop that may drive long-run inequality.

6.2 Input & parameter sliders

Slider group Theory hook Typical slider Why you can move it
Production Function Cobb-Douglas exponents (α, β) set marginal returns to labor. alpha beta L r Test how labor intensity shifts sector incentives and inequality.
Price Dynamics Ornstein–Uhlenbeck parameters drive shocks. volatility reversion-speed allow-large-shocks Test of H1: higher volatility ⇒ higher inequality.
Sector Returns Ability multipliers for farm vs. enterprise. ability-multiplier-b ability-multiplier-f Explore whether modern returns widen or narrow θ*.
Policy & Heterogeneity Credit access, grants, ability distribution. credit-access-rate credit-borrow-multiple gran-pct cap-grant? grant-pct ability-mean ability-sd tree-mean tree-sd consumption-rate Test H2: can policy retard inequality growth?

6.3 Simulation controls

  • Setup – resets everything.
  • Go / Go ∞ – run one tick or run continuously.
  • + / – Price Shock – inject large positive or negative shocks for stress-tests.

6.4 Key monitors

Monitor Reporter Theory link
Cum. Enterprise Share ces Long-run time spent in entrepreneurship.
Total Wealth total-wealth Aggregate welfare: is the pie growing?
Mean Wealth mean [wealth] of turtles Baseline welfare per household.

6.5 Plots

Plot Drawn from Theory item exposed
Gini gini-wealth every tick Core inequality trend (H1, H2).
Wealth Histogram 10-bin histogram Shape of wealth distribution; heavy tails under big shocks.
Lorenz Curve Redrawn every 10 ticks Visual check on the Gini trajectory.
Total Wealth vs CES plotxy ces total-wealth Interaction of sector choice and aggregate welfare.
Gini vs CES plotxy ces gini-wealth Does high participation co-move with more or less inequality?
Coffee Price OU price path Exogenous driver for the whole chain.
Coffee Price × CES scatter Tick-by-tick pairs (price, ces) Non-linear or lagged response check.
Phase: Income Composition Mean enterprise-income vs. farm-income Confirms income crossover at the ability threshold.

7 Baseline, Simulation & Scenarios

This section compares how the model behaves under a baseline realistic for an emerging economy and six policy-relevant counter-factuals.

Analysis includes:

  1. Quantitative summary – key outcome metrics at the final tick
  2. Qualitative patterns – insights from the on-screen diagnostics
  3. Complex-adaptive-system (CAS) insights – path dependence, feedback loops, lock-in

7.1 Baseline Scenario: Constraints in Emerging Economies

The baseline captures conditions common to emerging economies with limited financial infrastructure and uneven productive endowments.

Feature Justification Parameter
Medium-high volatility Global commodity dependence volatility = 0.17
Weak credit access Informal lending dominates credit-access-rate = 0.20
Modest ability spread Structural inequality, limited mobility ability-mean = 0.45, ability-sd = 0.15
Traditional agriculture returns Low productivity, labour-intensive ability-multiplier-f = 0.8
Higher enterprise returns Entrepreneurial activity offers upside ability-multiplier-b = 1.2
No capital grants No current subsidy programme cap-grant? = false, grant-pct = 0
Formal / Informal rates Dual cost of capital r = 0.15, r-informal = 3 × r
Soft price bounds Prevent runaway price dynamics Floor = 0.1, Lower soft = 0.5, Upper soft = 1.5

Initial conditions:
wealth = 1.0 for all agents; heterogeneity only through ability and assets.
Stochastic Ornstein–Uhlenbeck (OU) price shocks apply throughout the run.


7.2 Scenario Dashboard at a Glance

Scenario Key lever(s) Cum. enterprise share Total wealth Gini
Baseline None 0.482 255.4 ~0.24
Easy Credit credit-access-rate ↑ → 0.75 0.597 279.1 ~0.26
Seed-Spark Grants cap-grant? = true, grant-pct = 0.20 0.452 270.2 ~0.23
Steady Prices volatility ↓ → 0.05 0.430 266.9 ~0.22
Education & Training ability-mean ↑ → 0.60 0.604 325.3 ~0.28
Big Push (multi-lever) credit-access-rate ↑ → 0.70, r ↓ → 0.05, volatility ↓ → 0.05 0.900 406.0 ~0.34
Tight-Money Crunch credit-access-rate ↓ → 0.10, r ↑ → 0.25 0.147 241.4 ~0.18

7.3 Discussion

7.3.1 Baseline

  • Inequality builds slowly. The Gini curve rises monotonically then flattens – a sign of cumulative advantage under repeated shocks plus credit rationing.
  • Bimodal wealth distribution. A tall spike at ≈ 5.3 units alongside a subsistence‐level tail.
  • Enterprise uptake ≈ 48 %. Entry is bounded by the 20 % formal-credit ceiling.
  • CAS reading: early entrants capture compound returns and lock in advantage.

Baseline Scenario

Baseline Scenario

7.3.2 Single-lever Policies

Lever Dashboard evidence Interpretation
Easy Credit Enterprise share ↑ to 0.60; wealth +9 %; Gini ~0.26. More households qualify for loans, boosting growth with a modest rise in inequality. Credit alone is helpful but not transformative.
Seed-Spark Grants Wealth +6 %; enterprise share ↓ to 0.45; Gini ↓ slightly. One-shot boosts help borderline entrants but fade over time; credit frictions persist.
Steady Prices Wealth +4 %; share 0.43; Gini ↓. Dampening volatility protects incumbents yet reduces incentive for new entry.
Education & Training Wealth +27 %; share 0.60; Gini ~0.28. Ability uplift raises the pie but widens gaps – skill-biased growth.

Easy Credit

Easy Credit

Seed–Spark Grants

Seed–Spark Grants

Steady Prices

Steady Prices

Education & Training

Education & Training

7.3.3 Multi-lever “Big Push”

  • Combines generous credit, milder volatility, and cheap formal loans.
  • Enterprise share vaults to 0.90; Lorenz and Gini curves steepen.
  • Positive feedback: once capital crosses a threshold, returns spiral upward, forming a high-growth, high-inequality attractor.

Big Push

Big Push

7.3.4 Contractionary Counterfactual

  • Enterprise share collapses to 0.15; total wealth falls yet Gini improves to 0.18: equality through poverty.
  • Negative feedback loop: low wealth → less credit → low income, reinforcing a low-mobility equilibrium.

Contractionary Environment

Contractionary Environment

7.4 CAS Behaviours Observed

  1. Threshold effects & tipping-points – parameter changes may trigger non-linear jumps in entrepreneurship.
  2. Positive feedback & lock-in – capital accumulation accelerates returns once initial hurdles are cleared.
  3. Path dependence – early price realizations decide who first crosses the entry threshold; later interventions cannot fully unwind this hierarchy.
  4. Dampening vs amplifying loops – volatility reduction removes a harmful bust spiral but also curtails opportunity-driven switching.

7.5 Policy Takeaways

  1. Credit access helps but needs allies. Expanding formal credit yields modest welfare gains (+9 %) and a small rise in inequality; pairing with lower rates or skills policy may be worth examining.
  2. Volatility buffers are necessary but not sufficient. Price smoothing alone offers limited benefit.
  3. Human-capital interventions raise averages but widen spreads. Worth testing with inclusive finance.
  4. One-shot grants are a weak substitute for structural reform. Their impact dissipates as shocks accumulate. Entrepreneurship stays low despite lower gini.
  5. Contractionary policy yields equality through poverty. High rates suppress entrepreneurship and drag the whole distribution toward stagnation.
  6. System thinking is essential. Levers appear to interact non-linearly; sequencing and bundling is needed to determine both growth and its distribution.

8. Data Analysis of Behaviour-Space Results

The analysis is organised in four layers that map directly onto the evaluation criteria:

  1. Robustness of stochastic replications
  2. Quasi-global sensitivity via penalized GAM/BAM
  3. Equilibrium structure inspected through phase portraits
  4. Lever response surfaces shown as heat-maps

8.1 Behaviour-Space Robustness

Ten seeds per parameter tuple provide adequate precision: Monte-Carlo standard errors converge to 2-4% of the mean value scale across all outcomes, indicating reasonable uncertainty levels for policy analysis.

Figure 2: Monte Carlo standard error convergence for key outcomes showing uncertainty reduction across replications
Table 1: Replication uncertainty after 10 seeds showing 95th percentile Monte Carlo standard errors
Table 8-1 Replication uncertainty after 10 seeds
Metric 95% MC-SE Mean Value Relative MC-SE (%)
Entrepreneur Share 0.0117 0.5296 2.20
Gini 0.0074 0.1648 4.47
Total Wealth 7.5727 320.0028 2.37

8.2 Quasi-Global Sensitivity — Generalized Additive Models

Three GAM models were fit to the final-tick output (n = 30,240 simulated runs, 10 replications per parameter combination) to identify the non-linear policy effects on wealth and inequality. GAMs allow flexible modeling and avoids overfitting through penalized smoothing splines. The results show which policy levers have the strongest effects and how they interact to shape final outcomes.

The models achieve good fit across all outcomes (R² > 0.80), reflecting the systematic coverage of the parameter space through the behavior-space experimental design. All policy variables show nonlinear effects, with effective degrees of freedom (EDF) mostly above 2.5. These non-linearities emerge from model dynamics rather than strictly from the experimental design, justifying the GAM specification over linear models that would miss these relationships.

GAM Model Comparison
Effective degrees of freedom (EDF) for smooth terms, coefficients for parametric terms
Gini Total Wealth Entrepreneur Share
Interest Rate (r) [S] 4.99*** 4.84*** 4.98***
(1326.03) (924.38) (21950.07)
Volatility [S] 3.81*** 2.77*** 4.63***
(21.14) (33.75) (383.53)
Credit Access Rate [S] 5.98*** 5.97*** 5.96***
(588.61) (96.29) (3155.23)
Mean Ability [S] 4.88*** 4.92*** 4.91***
(381.27) (4156.35) (26744.43)
Capital Grant [P] -0.005*** 18.734*** 0
(0) (0.483) (0)
r × Credit Access [S]1 1 29.9*** 1 17.83*** 1 29.75***
(746.8) (491.95) (397.63)
r × Volatility [S]1 1 13.05*** 1 8.04*** 1 22.01***
(8.91) (1.9) (145.64)
Mean Ability × Credit Access [S]1 1 27.57*** 1 29.35*** 1 21.48***
(101.4) (130.71) (34.4)
(Intercept) [P] 0.17*** 315.259*** 0.527***
(0) (0.349) (0)
R²(adj) 0.806 0.793 0.965
Dev.Expl. 0.807 0.794 0.965
n 30240 30240 30240
[S] = Smooth term (EDF shown), [P] = Parametric term (coefficient shown). F-statistics in parentheses for smooth terms, standard errors for parametric terms. Total Wealth coefficients in currency units. Significance: *** p<0.001, ** p<0.01, * p<0.05, . p<0.1
1 Tensor product interactions (te) show additional variance explained beyond main effects.

Main Effects and Policy Leverage

Mean Ability has the largest impact on all outcomes. This finding is in line with the premise that ability-driven sectoral selection creates systematic wealth accumulation and differences compound over time. Higher-ability households enter entrepreneurship more readily and generate higher returns, creating wealth gaps that grow over time (Figure 3, Figure 4).

Interest Rate is the second-strongest effect, demonstrating the importance of capital costs in shaping economic outcomes. The smooth curves reveal threshold effects around 15 to 20 percent, suggesting potential threshold effects or tipping points.

Credit Access Rate also has strong nonlinear effects and interaction patterns. The partial effect curves show diminishing returns to credit expansion, with the steepest marginal effects occurring at moderate access levels. This may reflect the model’s dual credit logic, where formal credit access amplifies the advantages of households already well positiones.

Volatility creates a U-shaped relationship with wealth but monotonically increases inequality. Higher-ability households can exploit volatile conditions for entrepreneurial opportunities, while lower-ability households face greater downside risk.

Critical Policy Interactions

Three interaction terms prove statistically significant across models:

Interest Rate × Credit Access: The tensor surfaces reveal complementary effects: credit access becomes more effective under low interest rate environments, suggesting optimal policy coordination rather than substitution (Figure 3, Figure 4).

Interest Rate × Volatility: Interest rate policy works differently depending on how stable the environment is but the relationship is complex.

Mean Ability × Credit Access: This tests whether credit can reduce ability-driven inequality. Credit appears to help, but it helps high-ability households more.

Figure 3: GAM smooth and interaction effects for Gini
Figure 4: GAM smooth and interaction effects for total wealth
Figure 5: GAM smooth and interaction effects for cumulative entrepreneur share

Policy Design Implications

The GAM results reveal several critical insights for policy optimization:

  1. Nonlinear Policy Responses: All policy levers exhibit threshold effects and diminishing returns, suggesting optimal policy ranges rather than “more is better” approaches.

  2. Policy Complementarity: The interaction terms indicate that coordinated policy packages are more effective than isolated interventions.

  3. Ability-Conditional Effects: The Ability × Credit Access interaction confirms that universal policies may inadvertently increase inequality by disproportionately benefiting high-ability households.

  4. Optimal Policy Coordination: The Interest Rate × Credit Access interaction suggests that expansionary fiscal and monetary policies could be coordinated to maximize effectiveness.

These findings validate the agent-based modeling approach by revealing complex, nonlinear relationships that would be missed by traditional linear policy analysis, providing a foundation for the further analysis and policy recommendations.

8.3 Equilibrium Behavior

Phase portrait analysis reveals the dynamic pathways through which different policy regimes give way to long-term outcomes in the wealth-inequality space. Unlike static equilibrium analysis, these portraits capture the temporal evolution of system trajectories, showing where the system ends up, how it gets there and when policy effects become apparent.

The analysis examines system dynamics through temporal lenses: full 120-year patterns and first 30-year intervention windows (each tick is taken to be three months). This approach shows both the longer-term destinations of various policy trajectories as well as the early periods where differences in policies may.

Wealth-Inequality Dynamics (Figure 6) reveal a consistent pattern of trajectory divergence from common starting points, with policy differences creating distinct developmental pathways that compound over time. The portraits show clear evidence of path dependence, where early policy choices constrain long-term outcomes.

Figure 6: Comparison of full and early-stage dynamics for Gini and Total Wealth. Early-stage results reflect the first 30 years of simulation.

Entrepreneurship Dynamics with Wealth and Inequality (Figure 7, Figure 8) demonstrate complex, nonlinear patterns that vary significantly across policy regimes. Rather than simple monotonic relationships, the portraits reveal threshold effects and potential regime-dependent dynamics that support an emphasis on policy timing and sequencing.

Figure 7: Comparison of full and early-stage dynamics for Gini and Entrepreneur Share. Early-stage results reflect the first 30 years of simulation.
Figure 8: Comparison of full and early-stage dynamics for Gini and Entrepreneur Share. Early-stage results reflect the first 30 years of simulation.

Policy Gradient Effects show how different policy levers create distinct trajectory fans in the outcome space, with some policies producing tight convergent paths while others generate dispersion reflecting the underlying heterogeneity of household responses.

Figure 9: Wealth-Inequality Trajectories by Policy Over Time Period (Early, Middle, Late)
Figure 10: Wealth-Inequality Trajectories by Policy Over Time Period (Early, Middle, Late)
Figure 11: Wealth-Inequality Trajectories by Policy Over Time Period (Early, Middle, Late)
Figure 12: Wealth-Inequality Trajectories by Policy Over Time Period (Early, Middle, Late)

A set of interactive visualizations (Figure 13, Figure 14, Figure 15, Figure 16) extend the analysis into policy space, revealing how policy levels create complex surfaces that capture three-way interactions between wealth accumulation, inequality generation, and policy implementation over time. The temporal perspective continues along the lines of previous analysis by highlighting emergent system behaviors that would not be captured through static equilibrium analysis and may help to inform better policy sequencing.

Figure 13: Wealth-Inequality-Credit Access over time.
Figure 14: Wealth-Inequality-Volatility over time.
Figure 15: Wealth-Inequality-Interest Rate over time.
Figure 16: Wealth-Inequality-Ability over time.

8.4 Heat Maps of Policy Lever Sensitivity

Policy lever sensitivity analysis reveals how responsive wealth and inequality outcomes are to changes in each instrument across different ability levels. This analysis complements the phase portraits by identifying where policies have maximum leverage and which ability groups are most responsive to policy interventions.

Key Findings

Policy Sensitivity Patterns: The sensitivity strip heatmaps show a consistent pattern across all policy levers: higher-ability households are more responsive to policy changes than lower-ability households.

  • Credit Access Sensitivity Figure 17: High-ability households (0.55-0.65 range) show 2-3x higher sensitivity to credit expansion than low-ability households (0.25-0.35 range)
Figure 17: Credit access policy sensitivity by ability level. Higher values indicate greater responsiveness to credit access changes.
  • Interest Rate Sensitivity Figure 18: Similar pattern emerges where rate changes have larger effects on wealth accumulation by high-ability households.
Figure 18: Interest rate policy sensitivity by ability level. Higher values indicate greater responsiveness to interest rate changes.
  • Volatility Sensitivity Figure 19: High-ability households are more sensitive to volatility, suggesting they can better exploit volatile conditions for gains.
Figure 19: Volatility sensitivity by ability level. Higher values indicate greater vulnerability to volatility shocks.

Policy-Ability Outcome Surfaces (Figure 20, Figure 21): The 2D heatmaps reveal optimal policy combinations for different ability levels:

Wealth Outcomes (Figure 20): Higher ability consistently produces higher wealth across all policy combinations, but the policy gradients are steep** for high-ability households. This suggests policies create multiplicative rather than additive effects.

Figure 20: Policy-ability combinations and resulting wealth outcomes. Darker colors indicate higher wealth levels.

Inequality Outcomes (Figure 21): The most striking finding is that low volatility environments** produce the most egalitarian outcomes, while high credit access paradoxically increases inequality at higher ability levels.

Figure 21: Policy-ability combinations and resulting inequality outcomes. Darker colors indicate higher inequality levels.

Policy Implications

The Ability Amplification Effect: It looks as if each policy lever exhibits an amplification effect by which they help high-ability households disproportionately more than low-ability households. This suggests that universal policies may inadvertently increase ability-driven inequality rather than reduce it.

Optimal Policy Design:

  • For Equity: Low volatility + moderate credit access creates the most egalitarian outcomes.
  • Total Wealth: High credit access + low rates maximize total wealth but worsen inequality.
  • Balance: Appears to be moderate credit access (0.5-0.75) with low volatility.

Targeting Implications: Since policy sensitivity is ability-dependent, optimal policy design should consider:

  1. Targeted interventions for low-ability households (who are less policy-responsive)
  2. Progressive policy structures that limit excessive advantages for high-ability households
  3. Volatility management as the most equity-enhancing policy lever, though what this actually equates too in terms of policy may be nebulous.

9. Strategy

9.1 BehaviorSearch Optimization

Two BehaviorSearches were performed. The first search minimized wealth inequality (gini-wealth), while the second maximized total accumulated wealth (total-wealth) at step 480. Each search used a Standard Genetic Algorithm (GA) with a population size of 100, tournament size of 10, mutation rate of 0.01, and 100 evaluation limit. Each fitness value was calculated as the mean over 20 replicates.

The following table compares the optimal parameter configurations found for each objective function, using BehaviorSearch directly with the ABM code. Parameters were set to the standard baseline used so far in the paper, however only r, ability-mean credit-access and cap-grant? were varied. Volatlilty was kept at the baseline 0.17 for the search due to previous analysis suggesting the potential un-attractiveness of inducing higher volatilty in markets via policy.

Examining the results, Inequality appears to be maximized through the previously hinted at “Equality through Poverty” regime, with the highest interest rates and no formal access to credit causing massive hurdles to borrowing. Converesely, the lowest interest rates and large wide access to credit maximized total wealth. Twenty-percent capital start grants were found to both minimize gini and maximize wealth, potentialy signally a deeper look at their role. The results also show that a higher ability also contributes to minimizing ginin and maximizing wealth, highlighting the role of education or training in aggregate outcomes.

Parameter Min Gini Max Wealth
r 0.30 0.05
ability-mean 0.65 0.55
credit-access-rate 0.00 0.90
cap-grant? TRUE TRUE
volatility 0.17 0.17
Best Fitness 0.09089 544.154
Evaluations 1000 1000
Replicates 20 20

9.2 Pareto Frontier

Building on the BehaviorSearch optimization results, the Pareto frontier analysis addresses a fundamental limitation of single-objective optimization: real-world policymakers rarely face clear-cut choices between competing goals. While the genetic algorithm searches identified optimal policies for minimizing inequality (Gini = 0.09) and maximizing wealth (544.15 units), these solutions represent extreme points that may not reflect practical policy preferences.

The Pareto frontier analysis leverages the full final-tick behavior space of 30,240 simulation runs to identify the complete set of non-dominated policy combinations (those where no alternative policy can simultaneously improve both wealth and equality outcomes). This approach reveals an equity-efficiency trade-off space available to policymakers and identifies whether this trade-off can be mitigated through intelligent policy design.

Unlike the BehaviorSearch’s genetic algorithm approach, which seeks single optimal points, Pareto analysis examines the entire feasible policy space to answer three critical questions:

  1. How severe is the equity-efficiency trade-off? Do policies that increase wealth necessarily worsen inequality?
  2. Are there “win-win” policy regimes that achieve superior performance across multiple objectives?
  3. What policy combinations populate the efficient frontier, and do they cluster into distinct strategic approaches?

The analysis reveals that rather than facing a harsh binary choice between growth and equality, policymakers can select from distinct policy regime clusters that offer different combinations of outcomes. Most importantly, it identifies whether any regime can overcome the traditional equity-efficiency constraint—a finding with significant implications for policy design in developing economies facing commodity price volatility.

Figure 22: Combined Pareto analysis showing dominance status (left) and efficient policy clusters (right)

Policy Regime Analysis

The clustering reveals four policy regimes with some overlap between regimes one and three. Ability mean was dropped from the regime analysis because it did not vary across regimes.

Policy regime characteristics showing distinct strategic approaches

Policy Regime Cluster Characteristics
Average parameter values for each efficient policy cluster
Cluster Regime Type Interest Rate Credit Access Mean Ability Capital Grant Volatility
1 Inclusive Growth1 0.050 1.000 0.750 0.00 0.267
2 Austere Regime 0.287 0.025 0.750 1.00 0.225
3 Restrictive Regime 0.075 0.017 0.750 1.00 0.308
4 High-Volatility Access2 0.075 1.000 0.750 1.00 0.325
1 Cluster 2 represents the inclusive growth approach with maximum financial inclusion and stability
2 Cluster 1's high volatility strategy may leverage market uncertainty for entrepreneurial opportunities

Cluster 1 (Inclusive Growth): Features universal credit access (100%) with very low interest rates (5%) and moderate volatility (27%). This represents the classic “inclusive growth” approach that maximizes financial inclusion and maintaining macroeconomic stability.

Cluster 2 (Austerity Regime): Takes a cautious approach with very limited credit access (2.5%) but much higher interest rates (28.8%), representing the most restrictive financial regime that constrains both access and affordability of capital.

Cluster 3 (Restrictive Regime): Characterized by extremely limited credit access (1.7%) but low interest rates (7.5%), creating a constrained financial environment where only the most capable households can access capital.

Cluster 4 (High-Volatility Access): Shows the most interesting pattern - moderate credit access (75%) combined with slightly higher interest rates (7.5%) and the highest volatility (33%). This regime appears designed to enable capable households to leverage volatile conditions for entrepreneurial gains, essentially creating opportunities for those who can navigate uncertainty. The geographic separation** of this cluster in the policy space suggests it represents a fundamentally different strategic approach - one that accepts higher systemic risk in exchange for greater opportunities for entrepreneurial households to capitalize on market volatility. Spatial separation on the plot may indicate a deficiency in k-means or perhaps some sort of threshold effect.

The overlap between Clusters 1 and 4 in credit access levels, but with Cluster 4’s higher interest rates and volatility, suggests these regimes serve different household types: Cluster 1 maximizes broad-based inclusion, while Cluster 4 creates “high-risk, high-reward” conditions that may particularly benefit entrepreneurial capable households able to exploit volatile market conditions.

Trade-off Performance: which approach delivers the best balance of wealth generation and equity outcomes?

Policy Regime Performance Summary
Ordered by efficiency ratio (wealth generated per unit of inequality)
Cluster Regime Type Inequality (Gini) Total Wealth Efficiency Ratio Equity×Efficiency N Policies
1 Inclusive Growth 0.18 1,037.44 5,747.66 850.18 3
4 High-Volatility Access 0.16 798.53 4,922.83 669.00 8
2 Austere Regime 0.08 374.49 4,874.03 345.72 4
3 Restrictive Regime 0.10 467.94 4,663.36 420.98 6

Policy regime performance comparison

This reveals that Inclusive Growth is superior across multiple dimensions, generating 5,748 units of wealth per unit of inequality—significantly outperforming all other regimes. This represents a 17% efficiency advantage over the second-best regime (High-Volatility Access at 4,923).

Visualizing the Efficiency Gap

The efficiency advantage of Inclusive Growth becomes even more striking when visualized. While other regimes struggle with the classic equity-efficiency trade-off, Inclusive Growth breaks through this constraint.

Figure 23: Efficiency ratio comparison clearly shows Inclusive Growth’s superiority

This efficiency advantage isn’t just statistical noise—it represents a fundamental difference in policy approach. Inclusive Growth achieves universal financial inclusion (100% credit access) while maintaining macroeconomic stability through low interest rates.

Policy Profiles: What Makes Each Regime Distinct

Understanding why Inclusive Growth succeeds requires examining the specific policy combinations that define each regime. The heatmap below reveals the policy “DNA” of each approach.

Figure 24: Policy profiles reveal why Inclusive Growth succeeds

Key insight: Inclusive Growth’s success stems from its unique combination of maximum financial inclusion (1.0 credit access) with monetary stability (low 0.05 interest rate). This contrasts sharply with other regimes that either restrict access or create instability through high rates.

Multi-Objective Rankings Confirm Inclusive Growth’s Dominance

To ensure our conclusion is robust, we rank each regime across four key objectives: wealth generation, equity, efficiency, and overall balance.

Multi-Objective Regime Rankings
Lower ranks are better (1 = best). Inclusive Growth leads across most dimensions.
Regime Type Wealth Equity Efficiency Balance Overall
Inclusive Growth1 1 4 1 1 1.8
High-Volatility Access 2 3 2 2 2.2
Austere Regime 4 1 3 4 3.0
Restrictive Regime 3 2 4 3 3.0
1 Inclusive Growth achieves 1st place in wealth, efficiency, and balance
Figure 25: Multi-objective ranking analysis confirms Inclusive Growth as the top performer

Policy Implications

The results point clearly toward Inclusive Growth as the best approach for generating wealth while keeping inequality in check. Unlike other regimes that either restrict access or accept high inequality, inclusive growth shows that smart policy design can address both goals at once.

How Inclusive Growth Works:

The key to this reginme is removing the barriers that keep capable households from starting businesses. Universal credit access means households near the ability threshold can actually get financing, while low interest rates make borrowing affordable. This creates a virtuous cycle where more households can participate in entrepreneurship, returns spread more broadly, and wealth doesn’t just accumulate to those who started with advantages.

What Policymakers Should Do:

Based on these findings, the priorities should be expanding financial access rather than just redistributing wealth, keeping monetary policy supportive to enable broad-based growth, and focusing on removing barriers rather than providing one-time transfers. The model also suggests avoiding restrictive policies that may reduce inequality by constraining everyone’s opportunities—what we saw as “equality through poverty.”

The Bigger Picture:

This challenges the traditional view that you have to choose between growth and equality. The Pareto analysis shows that inclusive policies can beat restrictive ones on both dimensions. But there’s a catch: the ability amplification effects mean that even good policies help high-ability households more. This suggests the need for both universal access and targeted support for lower-ability households.

10. Conclusion

The agent-based model developed for this study extended the Adhvaryu et al. (2021) enterprise switching framework to examine how commodity price volatility and policy interventions shape entrepreneurial decisions, wealth, and inequality among smallholder farming households. It demonstrates that ability-driven sectoral switching serves as a transmission mechanism through which individual heterogeneity translates into system-level inequality. Additionally, the following primary interactions are captured by the model: ability amplification (high-ability households are more responsive to policy changes), policy complementarity (credit access and interest rates exhibit synergistic effects), and volatility transmission (price shocks create differential impacts based on sectoral participation).

Model Limitations and Extensions

Primary Extensions:

  1. Empirical Validation: The model requires calibration against real panel data to validate parameter values and behavioral assumptions. The Adhvaryu et al. dataset, despite its four-year span, could provide initial benchmarks for entrepreneurship rates, sectoral switching patterns, and wealth accumulation dynamics.

  2. Realistic Sectoral Switching: The current model allows costless switching between farming and entrepreneurship. Adding switching costs, learning periods, and sector-specific capital requirements would create more realistic transition dynamics and potentially alter long-term inequality outcomes.

  3. Consumption Heterogeneity: The uniform consumption rate assumption (0.99 across all households) oversimplifies saving behavior. Incorporating wealth-dependent consumption patterns and subsistence constraints would better capture poverty dynamics and wealth accumulation differences.

  4. Fixed Labor and Initial Farm capital: Households have unrealistic homogeneity among available labor under the model which is additionally constrained on the farm side by the inability to grow farm capital over time, making enterprise formation more likely.

Additional Extensions:

  1. Spatial and Network Effects: Geographic clustering of entrepreneurs and information spillovers could alter the threshold mechanism if skills are obtained socially increasing ability.

  2. Learning and Adaptation: Agents currently follow fixed decision rules. Adding adaptive expectations and learning from experience would capture behavioral evolution over time. This might be implemented as increases to sectoral returns.

  3. Multiple Commodities: Diversification across different crops and products would provide more realistic risk management options and reduce dependence on single-commodity price shocks. Switching between commodities as a coping mechanism would be an interesting extension.

Policy Insights

Regime analysis reveals that universal financial inclusion combined with monetary stability can overcome traditional equity-efficiency trade-offs. Unlike restrictive approaches that achieve equality through constraining growth, inclusive growth enables broad-based wealth accumulation and tempers excessive wealth concentration among high-ability households. One of the most important aspects of the model is that it demonstrates amplification effects based on ability are inherent to all the policy levers (these appear non-linear and are not necessarily explained away strictly by simulation logic). Credit expansion, interest rate reductions, and volatility management disproportionately benefit high-ability households, suggesting that universal policies may increase inequality without careful design considerations. The efficiency of inclusive growth suggests that policymakers should prioritize universal financial access over targeted interventions, maintain accommodative monetary policy to support broad-based growth, and focus on access rather than transfers for more efficient equity outcomes. However, it should be remembered that all pareto efficient outcomes involved the highest level of ability mean in the population. Ability amplification effects further imply that universal policies are insufficient for reducing inequality on their own. Policymakers may need a set of targeted interventions or progressive policy structures that limit excessive advantages for high-ability groups. Finally, volatility management was also shown to be a significant equity-enhancing policy lever, although translating this into practical interventions may be dubious. Overall, the model suggests that macroeconomic stability may be more important for equality than previously recognized, not by mitigating risk for the needy but by removing opportunity from the advantaged.

Appendix 1: Cluster Validation

Elbow method for determining optimal number of clusters

Appendix 2: Netlogo code

;;; ENTREPRENEURSHIP IN RESPONSE TO COFFEE PRICE SHOCKS
;;; Agent-Based Model based on Adhvaryu et al. (2013-2021) framework

;;; MODEL OVERVIEW
;;; This model simulates households' decisions to engage in entrepreneurship in response to
;;; coffee price shocks. It explores how price volatility, credit access, and individual
;;; characteristics affect sector choices and wealth distribution.

;;; THEORETICAL FRAMEWORK
;;; The model implements a household optimization problem with:
;;; * Dual sector choice (farming vs. entrepreneurship)
;;; * Heterogeneity in entrepreneurial ability (θ)
;;; * Credit market imperfections
;;; * Stochastic coffee price process
;;; * Labor allocation decisions

;;; GLOBAL VARIABLES
globals [
  coffee-price                           ; Current normalized coffee price (1 = long-run mean)
  price-history average-price            ; Historical price series and rolling mean
  pf pe_biz                              ; Farm-gate price and enterprise output price
  gini-wealth                            ; Wealth inequality measure
  long-term-average-price                ; Ornstein-Uhlenbeck mean-reversion target
  ability-farming-multiplier             ; Scalar for ability in farming sector (θf)
  ability-business-multiplier            ; Scalar for ability in enterprise sector (θe)
  total-wealth
  cum-entrepreneur-ticks   ;; running sum of entrepreneur counts
  ces                      ;; cumulative entrepreneur-share 0–1
  r-informal              ; interest rate for informal (higher) credit



  ; Production function parameters
  ; alpha = labor elasticity in farming (Cobb-Douglas exponent)
  ; beta = labor elasticity in enterprise (Cobb-Douglas exponent)
  ; r = interest rate / cost of capital
  ; L = total household labor endowment
  ;
  ;   consumption-rate = Keynesian average propensity to consume (0-1)
]

;;; AGENT PROPERTIES
turtles-own [
  wealth                                 ; Household assets (1.0 = median wealth)
  income                                 ; Current period total income
  ability                                ; Entrepreneurial talent θ (0-1 scale)
  credit-access                          ; Binary variable (1 = has credit access)
  lf                                     ; Labor allocated to farming
  le                                     ; Labor allocated to enterprise
  k                                      ; Capital invested in enterprise
  trees                                  ; Coffee-tree stock (1.0 = average farm)
  farm-output                            ; Current period farm production
  business-output                        ; Current period business production
  entrepreneur?                          ; Current entrepreneurship status
  ever-entrepreneur?                     ; Lifetime entrepreneurship indicator
  effective-r                            ; Actual interest rate applied based on credit access
]

to run-simulation
  setup
  repeat 480 [
    go
  ]
end


;;; SETUP PROCEDURES
to setup
  clear-all
  set cum-entrepreneur-ticks 0
  set ces 0
  ask patches [ set pcolor white ]
  initialize-global-parameters
  create-households
  reset-ticks
end

;;; PARAMETER INITIALIZATION
to initialize-global-parameters
  ; Normalized base values for model variables
  ; wealth = 1.0 represents median household wealth
  ; coffee-price = 1.0 represents long-term equilibrium price
  ; ability = 1.0 represents maximum entrepreneurial talent
  ; trees = 1.0 represents average farm size

  ; Price variables initialization
  set coffee-price 1.0                   ; Initial normalized coffee price
  set long-term-average-price coffee-price ; Mean-reversion target
  set pf coffee-price                    ; Farm product price (follows coffee price)
  set pe_biz 1.0                         ; Enterprise output price (competitive market)
  set price-history []                   ; Empty price history at start
  set volatility volatility              ; Price volatility from interface
  set reversion-speed reversion-speed    ; Mean reversion rate from interface

  ; Technology and endowment parameters
  set alpha alpha                        ; Cobb-Douglas shares from interface
  set beta beta                          ; Enterprise production elasticity
  set r r                                ; Interest/rental rate from interface
  set r-informal r * 3                   ; Sets the informal cost of captil to 3x formal cost
  set L L                                ; Labor endowment from interface
  set consumption-rate consumption-rate  ; Consumption parameter from interface

  ; Heterogeneity parameters
  set tree-mean tree-mean                ; Mean farm size from interface
  set tree-sd tree-sd                    ; Farm size variation from interface
  set ability-mean ability-mean          ; Mean ability from interface
  set ability-sd ability-sd              ; Ability variation from interface

  ; Sector-specific ability returns
  set ability-farming-multiplier ability-multiplier-f  ; Farming ability returns (traditional)
  set ability-business-multiplier ability-multiplier-b ; Enterprise ability returns (modern)

  ; Initialize statistics
  set gini-wealth 0                      ; Wealth inequality measure
end

;;; AGENT POPULATION CREATION
to create-households
  create-turtles 100 [
    setxy random-xcor random-ycor
    initialize-household-properties
  ]
end

;;; AGENT PROPERTY INITIALIZATION
to initialize-household-properties
  ; Initialize household wealth
  set wealth 1                           ; All households start with equal wealth
  set income 0                           ; Initial income (calculated in first period)
  set entrepreneur? false                ; No initial entrepreneurs
  set ever-entrepreneur? false           ; No prior entrepreneurship

  ; Ability (θ) bounded normal distribution [0,1]
  set ability max list 0 (min list random-normal ability-mean ability-sd 1)

  ; Binary credit access variable
  set credit-access ifelse-value (random-float 1 < credit-access-rate) [1] [0]

  ; Farm capital - coffee trees (heterogeneous across households)
  set trees max list 0 (min list random-normal tree-mean tree-sd 1)

  ; Visual representation
  set shape "circle"
  set color green                        ; Initial color (non-entrepreneur)
end

;;; MAIN SIMULATION LOOP
to go
  update-coffee-price                    ; Update price process
  update-households                      ; Update household decisions
  track-transitions                      ; Track economic transitions
  draw-lorenz                            ; Update Lorenz curve
  draw-wealth-histogram                  ; Update wealth distribution
  tick
  update-participation-metrics           ; avoids numerator/denominator tick error
end

;;; COFFEE PRICE DYNAMICS
to update-coffee-price
  ; Ornstein-Uhlenbeck price process with occasional large shocks
  ; Commonly used for commodity prices with mean reversion properties

  ; Mean reversion component pulls price toward long-term average
  let mean-reversion reversion-speed * (long-term-average-price - coffee-price)

  ; Normal random shock (Gaussian noise term)
  let shock random-normal 0 volatility

  ; Occasional large shocks (1% probability)
  ; Represents rare events like frosts, policy changes, or supply disruptions
  if allow-large-shocks [
  if random-float 1 < 0.01 [
    let rare-shock-multiplier random-normal 0 0.2
    set shock shock + (coffee-price * rare-shock-multiplier)
    ]
  ]

  ; Update price with both components
  set coffee-price coffee-price + mean-reversion + shock

  ; Apply soft resistance beyond bounds
  if coffee-price > 1.5 [
    set coffee-price coffee-price - 0.2 * (coffee-price - 1.5)
  ]
  if coffee-price < 0.5 [
    set coffee-price coffee-price + 0.2 * (0.5 - coffee-price)
  ]

; Clamp strictly to positive value to avoid math errors
set coffee-price max list 0.1 coffee-price

  ; Update farm gate price to match coffee price
  set pf coffee-price

  ; Record price history (limited to 120 periods)
  set price-history lput coffee-price price-history
  if length price-history > 120 [
    set price-history but-first price-history
  ]

  ; Update rolling average price
  set average-price mean price-history
end

;;; HOUSEHOLD DECISION MAKING
to update-households
  ; MARKET SATURATION: Reduce enterprise price when too many entrepreneurs enter
  let ent-share count turtles with [entrepreneur?] / count turtles
  set pe_biz 0.5 + 0.5 / (1 + exp (5 * (ent-share - 0.6)))  ; Price falls as more enter, with nonlinear effect

  ; Update each household's economic decisions
  ask turtles [
    ; Set informal or formal creidt rates
    set effective-r ifelse-value (credit-access = 1) [r] [r-informal]

    ; Calculate ability-adjusted productivity factors
    let farm-eff ability * ability-farming-multiplier
    let biz-eff  ability * ability-business-multiplier

    ; Calculate individual-specific ability threshold
    let household-specific-cutoff compute-household-ability-cutoff trees credit-access

    ; Determine sector participation based on ability threshold
    ifelse ability >= household-specific-cutoff [
      set entrepreneur? true
    ] [
      set entrepreneur? false
      set le 0
      set k 0
    ]



    ; Apply capital grant if policy is active and agent is new entrepreneur
    if entrepreneur? and not ever-entrepreneur? [
      if cap-grant? [
        set wealth wealth * (1 + grant-pct)  ; Apply percentage increase to wealth
      ]
      set ever-entrepreneur? true            ; Update entrepreneurship history
    ]

    ; Calculate optimal factor allocations based on sector choice
    ifelse entrepreneur? [
      ; For entrepreneurs: optimize labor across sectors
      allocate-household-labor farm-eff biz-eff

      ; Calculate optimal capital investment
      calculate-capital-demand biz-eff

      ; Calculate production outputs and income
      calculate-output-and-income farm-eff biz-eff
    ] [
      ; For non-entrepreneurs: all labor goes to farming
      set le 0
      set k 0
      set lf L

      ; Calculate farm-only production and income
      calculate-farm-only-output-and-income farm-eff
    ]

    ; Apply Keynesian consumption function
    ; C = c*Y where c is the average propensity to consume (consumption-rate)
    ; and Y is current period income
    let consumption consumption-rate * income

    ; Update wealth with savings (income minus consumption)
    ; W(t+1) = W(t) + (Y(t) - C(t))
    set wealth wealth + (income - consumption)
  ]

  ; Update visual representation of agents
  ask turtles [
    ; Size proportional to log-wealth
    set size max list 0.5 (0.5 + (ln (abs wealth + 1) / ln 10) / 2)

    ; Color indicates sector participation
    ifelse entrepreneur? [ set color blue ] [ set color green ]
  ]
end

to update-participation-metrics
   set cum-entrepreneur-ticks cum-entrepreneur-ticks +
        (entrepreneur-share * count turtles)

  ;; cumulative share (avoid /0 at tick 0)
  if ticks > 0 [
    set ces cum-entrepreneur-ticks / (ticks * count turtles)
  ]
end


;;; FARM-ONLY PRODUCTION CALCULATION
to calculate-farm-only-output-and-income [farm-eff]
  ; Calculate farm output using Cobb-Douglas function
  ; Y_f = A_f · L_f^α · T^(1-α)
  set farm-output (lf ^ alpha) * (trees ^ (1 - alpha)) * farm-eff

  ; Calculate farm income and total income
  let farm-income pf * farm-output
  set business-output 0                  ; No business output
  set income farm-income                 ; Total income equals farm income
end

;;; LABOR ALLOCATION OPTIMIZATION
to allocate-household-labor [farm-eff biz-eff]
  ; Optimal labor allocation based on equating marginal products
  ; Implements first-order conditions from theoretical model

  ; Enterprise sector marginal product components
  let ent_term beta * pe_biz * biz-eff   ; Base MPL for enterprise

  ; Optimal capital-labor ratio term (from profit maximization)
  let cap_term ((1 - beta) * pe_biz * biz-eff / effective-r) ^ ((1 - beta) / beta)

  ; Combined return to enterprise labor with optimal capital
  let ent_return ent_term * cap_term

  ; Farm sector marginal product
  let farm_term alpha * pf * (trees ^ (1 - alpha)) * farm-eff

  ; Calculate relative returns ratio between sectors
  let ratio 0
  ifelse ent_return > 0 [
    set ratio (farm_term / ent_return)
  ][
    set ratio 1000                       ; Default to farming if enterprise returns non-positive
  ]

  ; Calculate optimal enterprise labor allocation
  let computed-le 0
  ifelse ratio >= 0 [
    set computed-le L / (1 + ratio)      ; Derived from equating marginal returns
  ][
    set computed-le 0                    ; Default to zero if ratio negative
  ]

  ; Ensure allocations respect labor endowment constraint
  set le max list 0 (min list computed-le L)  ; Bounded enterprise labor
  set lf L - le                              ; Remaining labor to farming
end

;;; CAPITAL INVESTMENT DECISION  (drop-in replacement)
to calculate-capital-demand [biz-eff]
  ;; --- unconstrained optimum ---
  ifelse le > 0 [
    ;; k* = [((1-β) · pe_biz · biz-eff) / r]^(1/β)  ·  le
    let k_star ((( (1 - beta) * pe_biz * biz-eff ) / effective-r) ^ (1 / beta)) * le
    set k k_star
  ][
    set k 0
  ]

  ;; --- credit ceiling (only if no formal access) ---
  if credit-access = 0 [
    set k min list k (credit-borrow-multiple * wealth)
  ]
end



;;; PRODUCTION AND INCOME CALCULATION
to calculate-output-and-income [farm-eff biz-eff]
  ; Calculate outputs and income for dual-sector households
  ; Uses Cobb-Douglas production functions for both sectors

  ; Ensure positive inputs to avoid division errors
  let safe-lf max list lf 0.001          ; Minimum positive farm labor
  let safe-le max list le 0.001          ; Minimum positive enterprise labor
  let safe-k  max list k  0.001          ; Minimum positive capital

  ; Farm output: Y_f = A_f · L_f^α · T^(1-α)
  set farm-output (safe-lf ^ alpha) * (trees ^ (1 - alpha)) * farm-eff

  ; Enterprise output: Y_e = A_e · L_e^β · K^(1-β)
  set business-output biz-eff * (safe-le ^ beta) * (safe-k ^ (1 - beta))

  ; Calculate sector-specific and total income
  let farm-income pf * farm-output

  ; Business income accounts for capital costs
  let business-income ifelse-value (le > 0) [pe_biz * business-output - (r * k)] [0]

  ; Total income combines both income streams
  set income farm-income + business-income
end

;;; GENERAL ABILITY THRESHOLD CALCULATION
to-report compute-ability-cutoff
  ; Calculate global ability threshold that determines entrepreneurship
  ; Uses average farm size to compute general threshold

  let avg-trees mean [trees] of turtles
  let min-theta 0.01
  let max-theta 1.00
  let precision-level 0.01
  let current-theta min-theta
  let cutoff-value max-theta

  ; Iterative search for threshold value
  while [current-theta <= max-theta] [
    ; Calculate farm-only profit at current ability level
    let current-farm-ability current-theta * ability-farming-multiplier
    let farm-only-profit pf * ((L ^ alpha) * (avg-trees ^ (1 - alpha)) * current-farm-ability)

    ; Calculate enterprise sector returns at current ability
    let current-biz-ability current-theta * ability-business-multiplier

    ; Farm marginal product of labor
    let farm-mpl pf * alpha * (avg-trees ^ (1 - alpha)) * current-farm-ability * (L ^ (alpha - 1))

    ; Optimal unconstrained capital
    let optimal-k ((1 - beta) * pe_biz * current-biz-ability) / effective-r

    ; Enterprise marginal product
    let ent-mpl pe_biz * current-biz-ability * beta * (optimal-k ^ (1 - beta))

    ; Calculate optimal labor allocation
    let mpl-ratio farm-mpl / ent-mpl
    let l-f-star L * (mpl-ratio / (1 + mpl-ratio))

    ; Constrain farm labor by available trees
    let l-f-constrained min list l-f-star avg-trees
    let l-e-adjusted L - l-f-constrained

    ; Calculate optimal capital with adjusted labor
    let k-star ((( (1 - beta) * pe_biz * current-biz-ability ) / effective-r) ^ (1 / beta)) * l-e-adjusted


    ; Calculate outputs with optimal allocations
    let temp-farm-output (l-f-constrained ^ alpha) * (avg-trees ^ (1 - alpha)) * current-farm-ability
    let temp-business-output current-biz-ability * (l-e-adjusted ^ beta) * (k-star ^ (1 - beta))

    ; Calculate income from both sectors
    let farm-income pf * temp-farm-output
    let business-income pe_biz * temp-business-output - (r * k-star)
    let total-income farm-income + business-income

    ; If dual-sector income exceeds farm-only income, found threshold
    if total-income > farm-only-profit [
      set cutoff-value current-theta
      report cutoff-value
    ]

    ; Increment ability for next iteration
    set current-theta current-theta + precision-level
  ]

  ; Return highest ability level if no threshold found
  report cutoff-value
end

;;; HOUSEHOLD-SPECIFIC ABILITY THRESHOLD
to-report compute-household-ability-cutoff [household-trees household-credit-access]
  ; Calculate individual-specific ability threshold based on household characteristics
  ; Accounts for heterogeneity in tree endowment and credit access

  let min-theta 0.01
  let max-theta 1.00
  let precision-level 0.01
  let current-theta min-theta
  let cutoff-value max-theta

  ; Maximum capital available based on credit access
  let max-capital ifelse-value (household-credit-access = 1)
    [999999]                                     ; Effectively unconstrained
    [credit-borrow-multiple * wealth]            ; Constrained by wealth

  ; Iterative search for threshold value
  while [current-theta <= max-theta] [
    ; Calculate farm-only profit at current ability
    let current-farm-ability current-theta * ability-farming-multiplier
    let farm-only-profit pf * ((L ^ alpha) * (household-trees ^ (1 - alpha)) * current-farm-ability)

    ; Calculate enterprise sector returns
    let current-biz-ability current-theta * ability-business-multiplier

    ; Farm marginal product
    let farm-mpl pf * alpha * (household-trees ^ (1 - alpha)) * current-farm-ability * (L ^ (alpha - 1))

    ; Optimal unconstrained capital
    let optimal-k ((1 - beta) * pe_biz * current-biz-ability) / effective-r

    ; Enterprise marginal product
    let ent-mpl pe_biz * current-biz-ability * beta * (optimal-k ^ (1 - beta))

    ; Calculate optimal labor allocation
    let mpl-ratio farm-mpl / ent-mpl
    let l-f-star L * (mpl-ratio / (1 + mpl-ratio))

    ; Constrain farm labor by household's trees
    let l-f-constrained min list l-f-star household-trees
    let l-e-adjusted L - l-f-constrained

    ; Apply credit constraint to capital
    let k-star ((( (1 - beta) * pe_biz * current-biz-ability ) / effective-r) ^ (1 / beta)) * l-e-adjusted
    let k-constrained min list k-star max-capital

    ; Calculate outputs with constrained allocations
    let temp-farm-output (l-f-constrained ^ alpha) * (household-trees ^ (1 - alpha)) * current-farm-ability
    let temp-business-output current-biz-ability * (l-e-adjusted ^ beta) * (k-constrained ^ (1 - beta))

    ; Calculate income from both sectors
    let farm-income pf * temp-farm-output
    let business-income pe_biz * temp-business-output - (r * k-constrained)
    let total-income farm-income + business-income

    ; If dual-sector income exceeds farm-only income, found threshold
    if total-income > farm-only-profit [
      set cutoff-value current-theta
      report cutoff-value
    ]

    ; Increment ability for next iteration
    set current-theta current-theta + precision-level
  ]

  ; Return highest ability level if no threshold found
  report cutoff-value
end

;;; STATISTICAL UTILITY FUNCTIONS
to-report correlation [xs ys]
  ; Calculate Pearson correlation between two series
  if (length xs != length ys) or (length xs < 2) [
    report 0                             ; Invalid input case
  ]

  let n  length xs
  let mx mean xs
  let my mean ys

  ; Calculate covariance: Σ((xi-mx)(yi-my)) / n
  let cov 0
  let i 0
  while [ i < n ] [
    set cov cov + ((item i xs - mx) * (item i ys - my))
    set i i + 1
  ]
  set cov cov / n

  ; Get variances
  let varx variance xs
  let vary variance ys

  ; Return zero if no variation
  if (varx = 0) or (vary = 0) [
    report 0
  ]

  ; Return correlation coefficient
  report cov / sqrt (varx * vary)
end

;;; ECONOMIC TRANSITION TRACKING
to track-transitions
  ; Track wealth inequality
  set gini-wealth gini [wealth] of turtles
  set total-wealth sum [wealth] of turtles
end

;;; GINI COEFFICIENT CALCULATION
to-report gini [values]
  ; Calculate Gini coefficient for measuring inequality
  ; Gini = 0: perfect equality, Gini = 1: perfect inequality

  ; Handle edge cases
  if length values < 2 [ report 0 ]

  ; Sort values and ensure non-negative
  let vals sort values
  if min vals < 0 [
    let shift abs min vals + 0.1         ; Add buffer for positivity
    set vals map [[v] -> v + shift] vals
  ]

  ; Calculate total wealth
  let total sum vals
  if total <= 0 [ report 0 ]             ; No inequality if no wealth

  let n length vals

  ; Calculate weighted sum for Gini formula
  let weighted-sum 0
  let idx 0
  while [ idx < n ] [
    let v item idx vals                   ; Value at position
    let w (idx + 1)                       ; Position weight
    set weighted-sum weighted-sum + w * v ; Add weighted value
    set idx idx + 1
  ]

  ; Calculate Gini using relative mean difference formula
  report (2 * weighted-sum) / (n * total) - (n + 1) / n
end

;;; LORENZ CURVE VISUALIZATION
to draw-lorenz
  ; Draw Lorenz curve to visualize wealth inequality
  set-current-plot "Lorenz Curve"
  clear-plot

  ; Get sorted wealth values
  let vals sort [wealth] of turtles
  let n length vals

  ; Handle trivial cases
  if n < 2 [
    plotxy 0 0
    plotxy 1 1
    stop
  ]

  ; Shift to positive if negative values exist
  if min vals < 0 [
    let shift abs min vals + 0.1
    let i 0
    while [ i < n ] [
      set vals replace-item i vals ( item i vals + shift )
      set i i + 1
    ]
  ]

  ; Abort if all wealth is zero after shift
  let total sum vals
  if total <= 0 [
    plotxy 0 0
    plotxy 1 1
    stop
  ]

  ; Plot cumulative wealth distribution
  let cum 0
  plotxy 0 0                              ; Start at origin
  let i 0
  while [ i < n ] [
    set cum cum + item i vals
    plotxy ( (i + 1) / n ) ( cum / total ) ; % population vs % wealth
    set i i + 1
  ]

  ; Add 45° equality line for reference
  set-current-plot-pen "equality"
  plotxy 0 0
  plotxy 1 1
end

;;; WEALTH HISTOGRAM VISUALIZATION
to draw-wealth-histogram
  set-current-plot "Wealth Distribution"
  clear-plot

  ; Dynamic x-axis scaling
  let xmax max list 1 (max [wealth] of turtles)
  set-plot-x-range 0 xmax

  ; Draw current wealth distribution
  set-current-plot-pen "default"
  set-histogram-num-bars 10
  histogram [wealth] of turtles
end




;;; EXOGENOUS PRICE SHOCK FUNCTIONS
to positive-price-shock
  ; Implement positive exogenous coffee price shock
  ; Represents supply disruptions, policy changes, or weather events

  ; Random shock magnitude between 20-50%
  let shock-pct random-float 0.3 + 0.2

  ; Apply shock with reasonable bounds
  set coffee-price max list 0.2 (min list 3 (coffee-price * (1 + shock-pct)))
  set pf coffee-price                     ; Update farm price

  ; Update price history
  set price-history lput coffee-price price-history
  if length price-history > 120 [
    set price-history but-first price-history
  ]

  ; Update average price
  set average-price mean price-history
end

;;; NEGATIVE PRICE SHOCK FUNCTION
to negative-price-shock
  ; Implement negative exogenous coffee price shock
  ; Represents bumper harvests, demand drops, or trade policies

  ; Random shock magnitude between 20-50%
  let shock-pct random-float 0.3 + 0.2

  ; Apply shock
  set coffee-price coffee-price * (1 - shock-pct)

  ; Enforce price floor
  set coffee-price max list 0.2 coffee-price
  set pf coffee-price                     ; Update farm price

  ; Update price history
  set price-history lput coffee-price price-history
  if length price-history > 120 [
    set price-history but-first price-history
  ]

  ; Update average price
  set average-price mean price-history
end



;; ================= BEHAVIORSPACE REPORTERS =================


to-report entrepreneur-share
  ifelse count turtles = 0 [
    report 0
  ][
    report count turtles with [entrepreneur?] / count turtles
  ]
end

to-report std-dev [nums]
  let m mean nums
  report sqrt (mean map [x -> (x - m) ^ 2] nums)
end

to-report quantile [vals q]
  let sorted sort vals
  let n length sorted
  if n = 0 [ report 0 ]  ; fallback for empty list
  let i q * (n - 1)
  let i-low floor i
  let i-high ceiling i
  if i-low = i-high [
    report item i-low sorted
  ]
  let weight i - i-low
  report ((1 - weight) * item i-low sorted + weight * item i-high sorted)
end

References

Adhvaryu, Achyuta, Namrata Kala, and Anant Nyshadham. 2021. “Booms, Busts, and Household Enterprise: Evidence from Coffee Farmers in Tanzania.” The World Bank Economic Review 35 (3): 586–603. https://doi.org/10.1093/wber/lhz044.
Akter, Sonia, and Syed Abul Basher. 2014. “The Impacts of Food Price and Income Shocks on Household Food Security and Economic Well-Being: Evidence from Rural Bangladesh.” Global Environmental Change 25 (March): 150–62. https://doi.org/10.1016/j.gloenvcha.2014.02.003.
Atkinson, Anthony Barnes, and François Bourguignon. 2015. Handbook of Income Distribution. Handbook of Income Distribution, vol. 2A-vol. 2B. Amsterdam [u.a.].
Bania, Neil, and Laura Leete. 2022. “Monthly Income Volatility and Health Outcomes.” Contemporary Economic Policy 40 (4): 636–58. https://doi.org/10.1111/coep.12580.
Blattman, Christopher, and Stefan Dercon. 2018. “The Impacts of Industrial and Entrepreneurial Work on Income and Health: Experimental Evidence from Ethiopia.” American Economic Journal: Applied Economics 10 (3): 1–38. https://doi.org/10.1257/app.20170173.
Bowles, Samuel, and Herbert Gintis. 2001. “Intergenerational Inequality.”
Deaton, Angus. 1992. Saving and Liquidity Constraints.”
Dercon, Stefan. 2002. The Impact of Economic Reforms on Rural Households in Ethiopia: A Study from 1989 to 1995. World Bank Publications.
Hardy, Bradley. 2014. “Childhood Income Volatility and Adult Outcomes.” Demography (Springer Nature) 51 (5): 1641–65. https://doi.org/10.1007/s13524-014-0329-2.
McCaig, Brian, and Nina Pavcnik. 2015. “Informal Employment in a Growing and Globalizing Low-Income Country.” American Economic Review 105 (5): 545–50. https://doi.org/10.1257/aer.p20151051.
Morduch, Jonathan. 1995. “Income Smoothing and Consumption Smoothing.” Journal of Economic Perspectives 9 (3): 103–14. https://doi.org/10.1257/jep.9.3.103.
Pandey, Sushil, Dev Dutt Behura, Renato Villano, and Dibakar Naik, eds. 2000. Economic Cost of Drought and FarmersCoping Mechanisms: A Study of Rainfed Rice Systems in Eastern India. https://doi.org/10.22004/ag.econ.287599.
Piketty, Thomas. 2014. “Capital in the Twenty-First Century: A Multidimensional Approach to the History of Capital and Social Classes - Piketty - 2014 - The British Journal of Sociology - Wiley Online Library.” https://onlinelibrary-wiley-com.ccl.idm.oclc.org/doi/full/10.1111/1468-4446.12115.
Rawls, John. 1971. A Theory of Justice: Original Edition. Harvard University Press. https://doi.org/10.2307/j.ctvjf9z6v.
Roemer, John E., and Alain Trannoy. 2015. “Chapter 4 - Equality of Opportunity.” In Handbook of Income Distribution, edited by Anthony B. Atkinson and François Bourguignon, 2:217–300. Handbook of Income Distribution. Elsevier. https://doi.org/10.1016/B978-0-444-59428-0.00005-9.
Sen, Amartya. 2006. Inequality Reexamined. Repr. New York: Russell Sage Foundation.