DOI: 10.5281/zenodo.17260242
title: The Opportunity Cost Problem: Why Volunteer Service Programs Struggle to Generate Positive Social Returns

description:  

Comparative Cost–Benefit Analysis of Volunteer Service Programs

Code & Reproducible Monte Carlo Simulations (Google Colab-ready)

Abstract

This repository provides a reproducible Monte Carlo framework to compare institutional net benefits of three large-scale volunteer/service pathways: Peace Corps, Teach For America (TFA), and LDS Missions. The code models program costs (institutional, volunteer, opportunity, psychological), completion dynamics, shirking and fraud risks, and program-specific impact mechanisms (development outcomes, education value added, and religious outreach value). Results include comparative summary statistics, distributional diagnostics, and a CSV export suitable for further analysis or replication.

What this code does





Runs 10,000 simulations per program (default; configurable).




Computes, per synthetic participant:





Months served, completion outcome, and monitoring/friction events (shirking, psychological distress).




Costs borne by the institution, volunteer, and opportunity costs (forgone earnings).




Impact value via program-specific outcome models:





Peace Corps: “lives improved × value per life”




TFA: “students taught × value added per student”




LDS: “retained converts × lifetime value per convert (by sub-region)”






Net Benefit = Impact Value − (Institutional + Volunteer + Opportunity + Psych costs)






Prints a cross-program comparison table, detailed breakdowns, an LDS sub-region analysis, and saves all rows to a CSV.



Key modeling components





Distribution classes (Normal, Beta) with .draw() for transparent sampling.




Program simulators:





run_peace_corps_simulation(n_sims=10000)




run_tfa_simulation(n_sims=10000)




run_lds_simulation(n_sims=10000)






Comparator & reporting:





print_program_comparison(all_results)




main() orchestrates all runs, prints analyses, and saves volunteer_program_comparison.csv.





Assumptions (editable)





Completion: Program-specific Beta priors (e.g., Peace Corps ~89–90%; TFA ~90%; LDS high).




Shirking: Program-specific Beta priors (lower for TFA due to coaching/visibility; higher where monitoring is diffuse).




Fraud: Rare event placeholder (very low probability).




Costs:





Institutional: Monthly support/salary/training overhead (program-dependent).




Volunteer: Self-funding (notably for LDS missions).




Opportunity: Forgone weekly earnings × months served × 4.33 (weeks/month).




Psychological distress: Bernoulli draw via Beta risk and threshold → fixed cost if event occurs.






Impact:





Peace Corps: lives_improved ~ Normal(50,20) × value_per_life (fixed, default 1000)




TFA: students_taught ~ Normal(120,20) × value_per_student ~ Normal(800,200)




LDS: baptisms/year (developed vs. developing) × retention (Beta) × value_per_convert (region-specific Normal)







⚠️ Important: Impact valuations (e.g., “value per life,” “value per student,” “lifetime value per convert”) are illustrative placeholders for economic valuation. Replace with your defensible ranges/sources for your intended analysis and audience.


How to run it in Google Colab





Open https://colab.research.google.com.




Click File → New notebook.




Copy–paste your entire Python script (the code block from your prompt) into one cell.




(Optional) Edit assumptions inside the three functions to reflect your priors (costs, impact values, completion, etc.).




Run the cell.





The notebook prints:





A comparative table (mean/median net benefit, P(positive), mean opp. cost).




Program breakdowns with cost categories and impact.




LDS regional breakdown (Europe, Latin America, Africa).






It also writes volunteer_program_comparison.csv to the Colab working directory.






Download outputs: In the left file browser (folder icon), right-click volunteer_program_comparison.csv → Download.



Quick customization guide (typical edits)





Change institutional costs: monthly_cost_institution = Normal(MEAN, SD)




Adjust opportunity cost by age/cohort: weekly_earnings_forgone = Normal(MEAN, SD)




Tune impact:





Peace Corps: lives_improved = Normal(...); value_per_life = ...




TFA: students_taught = Normal(...); value_per_student = Normal(...);




LDS: lifetime_value_per_convert dict per region (means & stds)






Stress test completion, shirking, retention with alternative Betas.



Outputs





Console: Summary statistics, percent positive ROI, and narrative “Key Insights”.




CSV: volunteer_program_comparison.csv with one row per simulated individual:





program, months_served, cost_institution, cost_volunteer, opp_cost, psych_cost, impact_value, net_benefit, completion_rate, shirking, psych_distress, sub_region (LDS only)





Reproducibility





Deterministic seeding: random.seed(42) and np.random.seed(42).




All distributions and parameters are defined in code; modifying a parameter is a single-line change.




Exported CSV enables exact replication of your tables/figures downstream.



FAIR data & code





Findable: Descriptive filename; parameters embedded in code; README/this record documents methods and variables.




Accessible: Pure-Python, no proprietary dependencies; CSV output.




Interoperable: UTF-8 CSV with explicit variable names; easy import to R/Stata/Julia.




Reusable: Modular functions, clear defaults, and comments support adaptation; include a clear license (below).



Ethical notes & limitations





The model uses stylized impact valuations that can be ethically sensitive (e.g., “value per life,” “lifetime value per convert”). These are placeholders to explore contract/incentive design under uncertainty; they must be replaced or justified with context-appropriate scholarship and sensitivity to dignity, culture, and religion.




Psychological distress is modeled as a simplified Bernoulli event with a fixed cost. Real impacts are heterogeneous and multi-dimensional.




The model focuses on financial/institutional net benefit; many externalities (diplomacy, community effects, social cohesion) are only captured if you explicitly quantify them.



File manifest





volunteer_program_comparison.py (your script; same content as in the record)




volunteer_program_comparison.csv (generated on run; not stored in Zenodo unless you upload it)



Software & requirements





Python 3.10+ (Google Colab default works)




Packages: numpy, pandas (preinstalled in Colab). No additional libraries required.



How to cite

If you use this code or derived results, please cite as:



Anon 2025). Comparative Cost–Benefit Analysis of Volunteer Service Programs (Peace Corps, Teach For America, LDS Missions): Monte Carlo Code and Colab Workflow (v1.0) [Code and data]. Zenodo. https://doi.org/10.5281/zenodo.XXXXXXX


(Replace DOI with your Zenodo DOI after deposition.)

License

Recommend MIT License (permissive) or Apache-2.0 (patent grant). Example:

MIT License

Copyright (c) 2025 Scott M. Brown

Permission is hereby granted, free of charge, to any person obtaining a copy…


Versioning & provenance





v1.0: Initial release with three program simulators, comparator, LDS regional module, CSV export.




Parameter provenance: Defaults are illustrative; please see code comments and adapt to your empirical sources.





Frequently asked questions

Q: Can I change the number of simulations?Yes. Pass a new n_sims to each runner or edit the calls in main().

Q: Can I add another program (e.g., AmeriCorps)?Add a new run_americorps_simulation mirroring the structure: define costs, completion, risks, impact, assemble a result dict, and append to all_results.

Q: How do I include non-monetary externalities?Quantify them (e.g., soft power indices, long-horizon benefits) and add to impact_value or as a separate column if you want to report net-of-externalities vs. financial net benefit.