# Business valuation: fictional FCFF reference

This is a publicly reproducible calculation example derived from the mathematical convention reviewed for a personal NIFTY 100 workbook. It is a separate methods demonstration. It does not reproduce the private workbook, its company financials, history selector, source collection, Excel formatting or native acceptance suite.

Every input in `fictional_inputs.json` is an invented teaching assumption for Fictional Manufacturing Example. The example is not a listed company or an estimate of any company's fair value. All revenue, bridge amounts and shares are fictional. Similarity of generic percentage assumptions to a private test fixture does not make them observed financial data.

## Reproduce

Use Python 3.10 or later. No additional packages, Excel, account, API, network connection, database or paid service is required. Extract the ZIP, open a terminal in its `business-valuation-reproduction` folder, and run:

```text
python -B verify_manifest.py
python -B -m unittest discover -s . -p "test_*.py" -v
python -B valuation.py --output-dir reproduced
python -B verify_manifest.py --output-dir reproduced
```

The final command checks that regenerated JSON and CSV match the retained expected files byte for byte. Output numbers are rounded to 12 decimal places for deterministic serialization; calculations use Python double-precision floating point. Tests independently check the closed-form constant-FCFF perpetuity, forecast arithmetic, terminal reinvestment, no immediate loss-tax credit, negative equity, share scaling and invalid inputs. Package checks test changed-file rejection and regenerated-output comparison. Retained tests do not certify investment suitability or filing accuracy.

To explore your own assumptions, copy and edit the fictional input JSON, then run `python -B valuation.py --inputs my_inputs.json --output-dir my_results`. The shipped expected-output comparison applies only to the unmodified fictional fixture. The tool reads the specified input and writes only the requested output directory.

## Calculation convention

The forecast contains ten annual years with year-end discounting. Each year's revenue multiplies the previous year's revenue by one plus that year's selected growth rate. EBIT margin moves linearly from the starting margin to the terminal margin, reaching the latter in year 10. Year 1 therefore uses one tenth of the margin transition.

Cost of equity = risk-free rate + levered beta × equity risk premium.

WACC = cost of equity × (1 − debt weight) + pretax cost of debt × (1 − tax rate) × debt weight.

NOPAT = EBIT − max(EBIT, 0) × tax rate. Losses receive no immediate cash tax credit.

FCFF = NOPAT + D&A − capex − change in operating working capital. D&A and capex are ratios of revenue. Working-capital investment is change in revenue × the selected ratio, so a decline in revenue may release working capital.

Terminal year 11 revenue = year 10 revenue × (1 + terminal growth). Terminal NOPAT, D&A and capex use this year 11 revenue. Terminal working capital = year 10 revenue × terminal growth × working-capital ratio. The final forecast growth rate is not substituted for terminal growth.

Terminal value at the end of year 10 = terminal FCFF / (WACC − terminal growth). Enterprise value = discounted forecast FCFF + discounted terminal value. WACC must be positive and exceed terminal growth. Growth must exceed −100%.

Equity value = enterprise value + non-operating cash + other non-operating assets − debt and applicable leases − non-controlling claims − senior claims. Value per share = equity value in INR crore / diluted shares in crore. The resulting unit is INR per share. All bridge fields are mandatory, including explicit zeros. Negative equity is retained, never floored to zero. Starting/terminal margins and working-capital ratios are finite assumptions, not calibrated facts.

## Evidence and source boundary

The personal-workbook review is run `N100-20261007`, 7 October 2026. Its final Company Registry contains 100 identities, 69 conditionally eligible operating-FCFF cases and 31 blocked cases. The blocked categories are disjoint priority classifications: 23 Financial Services cases, 5 additional reporting-basis cases, 2 short histories and 1 reporting-period case. Conditional eligibility does not mean completed assumptions or valid valuations. The workbook was checked by 156 native mechanics checks and 8 final-save checks. These are historical workbook results, not the test count for this example.

Source convention locators in the private workspace: `02_analysis/code/test-candidate.ps1`, the independent benchmark near lines 73–83; `02_analysis/code/build-candidate.mjs`, forecast/terminal/bridge construction near lines 94–105; `02_analysis/code/finalize-excel.ps1`, final scenario and period guards. These files belong to project `2026-10-nifty-100-valuation-workbook`. Their private paths are explanatory locators, not requirements for reproduction.

This package contains no company export, provider financial value, ticker, company history, workbook, source archive, account identifier, credential or local absolute path. Screener's personal export access was not treated as a broad redistribution licence. The official constituent CSV and Reliance filing pilot are also excluded. No company value is inferred from the private sources. Original workbooks and source files remain outside this package.

The private data are secondary provider summaries, not a complete filing-level three-statement archive. Matching annual-section headings do not prove comparable twelve-month periods, complete cash flows, uniform restatements, or reviewed capex, working capital, diluted shares and equity-bridge classifications. The fictional example demonstrates mechanics only and supplies none of those missing real-company definitions.

## Integrity, privacy and licence

`manifest.json` lists SHA256 for each shipped file except itself. The verifier detects missing or changed listed files and rejects unsafe relative paths. SHA256 binding establishes internal file consistency. It does not authenticate the author, validate the financial model or protect against replacement of the entire package and manifest. Reproduced output files are compared with the retained reference files.

The program uses the Python standard library and performs no network calls, telemetry or account access. Inputs and results stay in the folders you select.

The package is supplied for inspection and local reproduction. No separate open-source licence or permission to redistribute third-party financial data is granted. Source providers' names identify excluded material and imply no endorsement. Any broader software licensing decision remains with the portfolio owner.

AI assisted the original workbook implementation and review, and the preparation, testing and documentation of this fictional example. The checks are automated mechanics checks and AI review. No independent human financial audit is claimed. This example is not investment advice.
