{"id":48316998,"url":"https://github.com/neuralsignal/excel-model","last_synced_at":"2026-04-05T00:32:39.154Z","repository":{"id":343918676,"uuid":"1179690642","full_name":"neuralsignal/excel-model","owner":"neuralsignal","description":"YAML-driven Excel financial model generator","archived":false,"fork":false,"pushed_at":"2026-03-30T08:16:47.000Z","size":237,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-30T09:14:28.092Z","etag":null,"topics":["budgeting","cli","dcf","excel","financial-model","openpyxl","python","scenario-analysis","yaml"],"latest_commit_sha":null,"homepage":"https://neuralsignal.github.io/excel-model/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neuralsignal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-12T09:28:58.000Z","updated_at":"2026-03-30T07:06:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/neuralsignal/excel-model","commit_stats":null,"previous_names":["neuralsignal/excel-model"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/neuralsignal/excel-model","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuralsignal%2Fexcel-model","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuralsignal%2Fexcel-model/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuralsignal%2Fexcel-model/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuralsignal%2Fexcel-model/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neuralsignal","download_url":"https://codeload.github.com/neuralsignal/excel-model/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuralsignal%2Fexcel-model/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31420138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"ssl_error","status_checked_at":"2026-04-05T00:25:05.923Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["budgeting","cli","dcf","excel","financial-model","openpyxl","python","scenario-analysis","yaml"],"created_at":"2026-04-05T00:32:38.163Z","updated_at":"2026-04-05T00:32:39.143Z","avatar_url":"https://github.com/neuralsignal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# excel-model\n\n[![CI](https://github.com/neuralsignal/excel-model/actions/workflows/ci.yml/badge.svg)](https://github.com/neuralsignal/excel-model/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nYAML-driven Excel financial model generator.\n\nBuild professional financial models (P\u0026L, DCF, Budget vs Actuals, Scenario Analysis) from declarative YAML specs. Generates `.xlsx` workbooks with named ranges, styled sheets, and Excel formulas using openpyxl.\n\n**[Documentation](https://neuralsignal.github.io/excel-model/)**\n\n## Installation\n\n```bash\npip install excel-model\n```\n\nOr for development:\n\n```bash\npixi install\n```\n\n## Quick Start\n\n### CLI\n\n```bash\n# Build a P\u0026L model\nexcel-model build --spec model.yaml --output model.xlsx --mode batch\n\n# Validate a spec\nexcel-model validate --spec model.yaml\n\n# Describe what a spec would produce\nexcel-model describe --spec model.yaml --format text\n```\n\n### Python API\n\n```python\nfrom excel_model.spec_loader import load_spec\nfrom excel_model.validator import validate_spec\nfrom excel_model.excel_writer import build_workbook\nfrom excel_model.config import load_style\n\nspec = load_spec(\"model.yaml\")\nerrors = validate_spec(spec)\nassert not errors\n\nstyle = load_style(None)  # uses bundled defaults\nbuild_workbook(spec=spec, inputs=None, output_path=\"model.xlsx\", style=style)\n```\n\n## Model Types\n\n| Type | Description |\n|------|-------------|\n| `p_and_l` | Profit \u0026 Loss statement |\n| `dcf` | Discounted Cash Flow valuation |\n| `budget_vs_actuals` | Budget vs Actuals comparison |\n| `scenario` | Multi-scenario analysis (Base/Bull/Bear) |\n| `comparison` | Cross-entity comparison |\n\n## Formula Types\n\n21 built-in formula types including `growth_projected`, `pct_of_revenue`, `sum_of_rows`, `subtraction`, `ratio`, `discounted_pv`, `terminal_value`, `npv_sum`, `variance`, `variance_pct`, `constant`, `custom`, and more.\n\n**Custom formula security:** The `custom` formula type rejects formulas containing dangerous patterns (DDE, WEBSERVICE, IMPORTDATA, CALL, EXEC, FILTERXML, REGISTER.ID, etc.) to prevent Excel formula injection attacks. Standard Excel functions like SUM, IF, ROUND, and MAX are allowed.\n\n## Configuration\n\nStyle config controls Excel formatting (colors, fonts, number formats). A bundled default is included; override with `--style`:\n\n```yaml\nheader_fill_hex: \"1F3864\"\nheader_font_color: \"FFFFFF\"\nfont_name: \"Calibri\"\nfont_size: 10\nnumber_format_currency: '#,##0'\nnumber_format_percent: '0.0%'\n```\n\n## Security Note\n\nFile path arguments (`--spec`, `--data`, `--style`, `--output`) are passed directly to the filesystem without path containment checks. This is safe for the default CLI usage where the authenticated user controls their own filesystem. If you wrap this tool in a web API or automated pipeline that accepts user-controlled path inputs, you must validate that resolved paths stay within an allowed base directory before invoking the CLI to prevent path traversal attacks.\n\n## Looking for Financial Modeling Input\n\nThis library was built by a software engineer, not a financial analyst. The model structures, formula types, and default assumptions reflect a developer's interpretation of common financial models.\n\nIf you work in finance, FP\u0026A, investment banking, or accounting, your input would be incredibly valuable:\n\n- **Are the formula types correct?** Do `growth_projected`, `pct_of_revenue`, `discounted_pv`, and `terminal_value` follow standard conventions?\n- **Missing model patterns?** Are there common financial model structures (e.g., waterfall, three-statement, LBO) that should be supported?\n- **Named range conventions** -- do the Excel named range naming patterns match what analysts expect?\n- **Number formatting** -- are the default currency/percent/integer formats appropriate for professional models?\n- **Scenario analysis** -- does the base/bull/bear override pattern match how scenarios are typically structured?\n\nPlease open an [issue](https://github.com/neuralsignal/excel-model/issues) with the `type:feat` label, or start a discussion. All feedback is welcome, from quick corrections to detailed model reviews.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuralsignal%2Fexcel-model","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneuralsignal%2Fexcel-model","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuralsignal%2Fexcel-model/lists"}