Skip to main content

Monte Carlo simulation system for software development effort estimation

Project description

Monte Carlo Project Simulator (mcprojsim)

Category Link
Package PyPI version Python 3.14+
Documentation Documentation
License License: MIT
Release GitHub release
CI/CD CI Doc build Coverage
Code Quality Code style: black Checked with mypy Linting: flake8
Repo URL GitHub

Overview

mcprojsim is a Monte Carlo simulation tool for software project estimation. Instead of producing a single deadline, it models uncertainty in task duration, dependencies, risks, and other schedule drivers to produce confidence-based forecast ranges.

It is intended for teams that want answers such as:

  • What is the likely completion range for this project?
  • What is the $P50$, $P80$, or $P90$ delivery date?
  • Which tasks most often drive schedule risk?
  • How do risks and uncertainty factors change the forecast?

Key features

  • Monte Carlo schedule simulation with configurable iteration counts
  • Range-based task estimates using triangular and log-normal distributions
  • Task dependencies and schedule-aware project duration calculation
  • Task-level and project-level risk modeling
  • Configurable uncertainty factors such as team experience and requirements maturity
  • Exported results in JSON, CSV, and HTML formats
  • Critical path and sensitivity-oriented analysis outputs
  • Reproducible runs with explicit random seeds

Recommended installation

For most end users, pipx is the simplest way to install mcprojsim as a CLI tool.

python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install mcprojsim

Then verify the installation:

mcprojsim --help
mcprojsim --version

For a first-run walkthrough, see QUICKSTART.md.

Minimal example

Create a file named project.yaml:

project:
  name: "My Project"
  description: "Sample project for estimation"
  start_date: "2025-11-01"
  confidence_levels: [50, 80, 90]

tasks:
  - id: "task_001"
    name: "Database schema design"
    estimate:
      min: 3
      most_likely: 5
      max: 10
      unit: "days"
    dependencies: []
    uncertainty_factors:
      team_experience: "high"
      requirements_maturity: "medium"
      technical_complexity: "low"

Validate the file:

mcprojsim validate project.yaml

Run a simulation:

mcprojsim simulate project.yaml --seed 12345

Typical outputs include:

  • *_results.json for full machine-readable output
  • *_results.csv for tabular summaries
  • *_results.html for a browsable report

Documentation map

Use the document that matches your goal:

Full published documentation is available at https://johan162.github.io/mcprojsim/.

Example commands

# Validate an input file
mcprojsim validate examples/sample_project.yaml

# Run a default simulation
mcprojsim simulate examples/sample_project.yaml

# Use a custom configuration
mcprojsim simulate examples/sample_project.yaml --config examples/sample_config.yaml

# Reproduce a run exactly
mcprojsim simulate examples/sample_project.yaml --seed 42

For developers

If you want to work from a source checkout, run tests, build docs, or use containers, start with:

Contributing

Contributions are welcome.

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Run the test suite
  5. Submit a pull request

Support

Citation

If you use this tool in research or project planning, please cite:

@software{mcprojsim,
  title = {Monte Carlo Project Simulator},
  author = {Johan Persson},
  year = {2026},
  url = {https://github.com/johan162/mcprojsim},
  version = {0.2.1}
}

License

MIT License - see LICENSE.

Acknowledgments

Inspired by the work of:

  • Steve McConnell - Software Estimation: Demystifying the Black Art
  • Frederick Brooks - The Mythical Man-Month
  • Douglas Hubbard - How to Measure Anything in Cybersecurity Risk

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcprojsim-0.2.1.tar.gz (34.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcprojsim-0.2.1-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file mcprojsim-0.2.1.tar.gz.

File metadata

  • Download URL: mcprojsim-0.2.1.tar.gz
  • Upload date:
  • Size: 34.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.3 Linux/6.14.0-1017-azure

File hashes

Hashes for mcprojsim-0.2.1.tar.gz
Algorithm Hash digest
SHA256 130636db6effafea00366b3ee3ae20ecff23f0df73f87e5228db2f9ade1c0f07
MD5 1bf7103c9b258378c2471b17de4e4c0d
BLAKE2b-256 639b75e7f0356b5ad94745d27eeb94ff6c15f21ac86cfeea26dc0a70cb76cccb

See more details on using hashes here.

File details

Details for the file mcprojsim-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: mcprojsim-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 43.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.3 Linux/6.14.0-1017-azure

File hashes

Hashes for mcprojsim-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 09156cd2660bc81063eec3c9afd63ccedbdf644e1ddf6d879f31f9b1d44f9f0c
MD5 66190782dc13d02bc28e44a7ab2b71f6
BLAKE2b-256 6c29fc07f1b140f9182f1e2dc19055d575245eac09e4b6d056514f36128d1dd4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page