Learn / value a company
Value a company’s cash flows
A five-year sample FCFF forecast produces enterprise value. A discount rate is a stated assumption—not a market fact. No debt/cash bridge or share count is silently invented.
Try it
Sample dataA five-year sample FCFF forecast produces enterprise value. A discount rate is a stated assumption—not a market fact. No debt/cash bridge or share count is silently invented.
Five-year FCFF valuationEnterprise value · USD
Exact chart data
| Series | Annual discount rate · decimal | Enterprise value · USD |
|---|---|---|
| Five-year FCFF valuation | 0.07500000000000001 | 22550640.564338207 |
| Five-year FCFF valuation | 0.07750000000000001 | 21462841.345692933 |
| Five-year FCFF valuation | 0.08000000000000002 | 20474055.55239091 |
| Five-year FCFF valuation | 0.08250000000000002 | 19571366.975535847 |
| Five-year FCFF valuation | 0.085 | 18744012.12760844 |
| Five-year FCFF valuation | 0.08750000000000001 | 17982949.697863124 |
| Five-year FCFF valuation | 0.09000000000000001 | 17280529.364177857 |
| Five-year FCFF valuation | 0.09250000000000001 | 16630234.202276524 |
| Five-year FCFF valuation | 0.09500000000000001 | 16026478.292980412 |
| Five-year FCFF valuation | 0.0975 | 15464446.203826837 |
| Five-year FCFF valuation | 0.1 | 14939964.574368779 |
| Five-year FCFF valuation | 0.10250000000000001 | 14449398.555937432 |
| Five-year FCFF valuation | 0.10500000000000001 | 13989567.66895352 |
| Five-year FCFF valuation | 0.10750000000000001 | 13557676.95891355 |
| Five-year FCFF valuation | 0.11000000000000001 | 13151260.301323608 |
| Five-year FCFF valuation | 0.11250000000000002 | 12768133.425791131 |
| Five-year FCFF valuation | 0.11500000000000002 | 12406354.769438239 |
| Five-year FCFF valuation | 0.11750000000000002 | 12064192.67841369 |
| Five-year FCFF valuation | 0.12000000000000001 | 11740097.788116653 |
| Five-year FCFF valuation | 0.12250000000000001 | 11432679.652620006 |
| Five-year FCFF valuation | 0.125 | 11140686.879682977 |
Assumptions & conventions
{
"contractVersion": 1,
"modelVersion": 1,
"valuationDate": "2026-01-01",
"currency": "USD",
"valuationBasis": "firm",
"annualDiscountRate": 0.1,
"discountRateSource": "user-supplied",
"compounding": "annual",
"dayCount": "ACT/365F",
"terminalValueMethod": {
"method": "perpetual-growth",
"terminalCashFlow": 1262476.9600000004,
"perpetualGrowthRate": 0.025
},
"terminalCashFlowConvention": "final-forecast-period-flow",
"bridgeDecision": "no-bridge-supplied-equity-value-absent",
"shareCountDecision": "no-shares-supplied-per-share-absent"
}Diagnostics & warnings
{
"projectedPeriodCount": 5,
"terminalValueShareOfValue": 0.7170890148979001,
"warnings": [],
"exclusions": []
}Full result · JSON
{
"valuation": {
"projectedCashFlows": [
{
"timeYears": 1,
"cashFlowAmount": 1000000,
"discountFactor": 0.9090909090909091,
"presentValue": 909090.9090909091
},
{
"timeYears": 2,
"cashFlowAmount": 1060000,
"discountFactor": 0.8264462809917354,
"presentValue": 876033.0578512396
},
{
"timeYears": 3,
"cashFlowAmount": 1123600.0000000002,
"discountFactor": 0.7513148009015775,
"presentValue": 844177.3102930126
},
{
"timeYears": 4,
"cashFlowAmount": 1191016.0000000002,
"discountFactor": 0.6830134553650704,
"presentValue": 813479.9535550849
},
{
"timeYears": 5,
"cashFlowAmount": 1262476.9600000004,
"discountFactor": 0.6209213230591549,
"presentValue": 783898.8643349
}
],
"projectedCashFlowPresentValue": 4226680.095125146,
"terminalValue": 17253851.78666667,
"terminalValuePresentValue": 10713284.479243632,
"assumptions": {
"contractVersion": 1,
"modelVersion": 1,
"valuationDate": "2026-01-01",
"currency": "USD",
"valuationBasis": "firm",
"annualDiscountRate": 0.1,
"discountRateSource": "user-supplied",
"compounding": "annual",
"dayCount": "ACT/365F",
"terminalValueMethod": {
"method": "perpetual-growth",
"terminalCashFlow": 1262476.9600000004,
"perpetualGrowthRate": 0.025
},
"terminalCashFlowConvention": "final-forecast-period-flow",
"bridgeDecision": "no-bridge-supplied-equity-value-absent",
"shareCountDecision": "no-shares-supplied-per-share-absent"
},
"diagnostics": {
"projectedPeriodCount": 5,
"terminalValueShareOfValue": 0.7170890148979001,
"warnings": [],
"exclusions": []
},
"valuationBasis": "firm",
"enterpriseValue": 14939964.574368779,
"equityValueAbsentReason": "no enterpriseToEquityBridge was supplied — bridge fields are never silently zeroed, so equity value is absent",
"valuePerShareAbsentReason": "dilutedSharesOutstanding was not supplied — a per-share value needs the share count"
},
"sensitivity": [
{
"x": 0.07500000000000001,
"y": 22550640.564338207
},
{
"x": 0.07750000000000001,
"y": 21462841.345692933
},
{
"x": 0.08000000000000002,
"y": 20474055.55239091
},
{
"x": 0.08250000000000002,
"y": 19571366.975535847
},
{
"x": 0.085,
"y": 18744012.12760844
},
{
"x": 0.08750000000000001,
"y": 17982949.697863124
},
{
"x": 0.09000000000000001,
"y": 17280529.364177857
},
{
"x": 0.09250000000000001,
"y": 16630234.202276524
},
{
"x": 0.09500000000000001,
"y": 16026478.292980412
},
{
"x": 0.0975,
"y": 15464446.203826837
},
{
"x": 0.1,
"y": 14939964.574368779
},
{
"x": 0.10250000000000001,
"y": 14449398.555937432
},
{
"x": 0.10500000000000001,
"y": 13989567.66895352
},
{
"x": 0.10750000000000001,
"y": 13557676.95891355
},
{
"x": 0.11000000000000001,
"y": 13151260.301323608
},
{
"x": 0.11250000000000002,
"y": 12768133.425791131
},
{
"x": 0.11500000000000002,
"y": 12406354.769438239
},
{
"x": 0.11750000000000002,
"y": 12064192.67841369
},
{
"x": 0.12000000000000001,
"y": 11740097.788116653
},
{
"x": 0.12250000000000001,
"y": 11432679.652620006
},
{
"x": 0.125,
"y": 11140686.879682977
}
]
}Use it in your project
Returns a valuation report. This example prints three selected fields from the firm-basis report, in USD. The sensitivity chart is a separate set of repeated valuations, not a required conversion of the answer.
import { discountedCashFlow, type DiscountedCashFlowInput } from '@insiderfinance/totalfinance/valuation';
const input: DiscountedCashFlowInput = {
"valuationBasis": "firm",
"valuationDate": "2026-01-01",
"currency": "USD",
"projectedCashFlows": [
{
"timeYears": 1,
"amount": 1000000
},
{
"timeYears": 2,
"amount": 1060000
},
{
"timeYears": 3,
"amount": 1123600.0000000002
},
{
"timeYears": 4,
"amount": 1191016.0000000002
},
{
"timeYears": 5,
"amount": 1262476.9600000004
}
],
"annualDiscountRate": 0.1,
"compounding": "annual",
"terminalValueMethod": {
"method": "perpetual-growth",
"terminalCashFlow": 1262476.9600000004,
"perpetualGrowthRate": 0.025
}
};
const valuation = discountedCashFlow(input);
if (valuation.valuationBasis !== 'firm') throw new Error('Expected firm basis.');
const result = {
enterpriseValue: valuation.enterpriseValue,
projectedCashFlowPresentValue: valuation.projectedCashFlowPresentValue,
terminalValuePresentValue: valuation.terminalValuePresentValue,
};
console.log(result);
Output of this example
{
"enterpriseValue": 14939964.574368779,
"projectedCashFlowPresentValue": 4226680.095125146,
"terminalValuePresentValue": 10713284.479243632
}
Reproduce this entire playground
This complete example reproduces every chart point and the full playground result. Sample generation and chart mapping are example setup, not required conversions of library outputs.
import { discountedCashFlow, type DiscountedCashFlowInput } from '@insiderfinance/totalfinance/valuation';
const input: DiscountedCashFlowInput = {
"valuationBasis": "firm",
"valuationDate": "2026-01-01",
"currency": "USD",
"projectedCashFlows": [
{
"timeYears": 1,
"amount": 1000000
},
{
"timeYears": 2,
"amount": 1060000
},
{
"timeYears": 3,
"amount": 1123600.0000000002
},
{
"timeYears": 4,
"amount": 1191016.0000000002
},
{
"timeYears": 5,
"amount": 1262476.9600000004
}
],
"annualDiscountRate": 0.1,
"compounding": "annual",
"terminalValueMethod": {
"method": "perpetual-growth",
"terminalCashFlow": 1262476.9600000004,
"perpetualGrowthRate": 0.025
}
};
const rates = Array.from({ length: 21 }, (_, index) => 0.07500000000000001 + index * 0.0025);
const sensitivity = rates.map(rate => {
const row = discountedCashFlow({ ...input, annualDiscountRate: rate });
if (row.valuationBasis !== 'firm') throw new Error('Expected firm basis.');
return { x: rate, y: row.enterpriseValue };
});
// Firm-basis cash flows produce enterprise value.
const result = { valuation: discountedCashFlow(input), sensitivity };
console.log(result);Both examples use the last successfully calculated inputs. The first call may show fewer scenarios or selected report fields, as labeled above. Displayed metrics are rounded; copied calculations retain exact values.
Continue with the full API reference or the API levels guide.