Limits and assumptions
ForwardFlow calculates the consequences of an explicit scenario. Its tests check arithmetic, accounting identities and selected model properties. They do not establish that Buyer behavior, market assumptions or execution conditions describe future outcomes.
This chapter distinguishes implemented features from remaining modelling gaps. The verification chapter describes the checks; the surfaces and hedging chapter describes the current hedge and monthly analysis capabilities.
Buyer behavior is not calibrated
The repository does not supply an observed BTC Now vintage dataset for calibrating stop rates or early completion. Treat the behavior settings as priors. Historical Bitcoin prices provide market paths, not observations of how Buyers would have behaved under these Agreements.
| Assumption | Base engine setting | Interpretation |
|---|---|---|
| Lifetime baseline stop target | 40% | Calibrates the baseline hazard before competing exits and behavior overlays; the realized stop share can differ |
| Drawdown multipliers | Off | When enabled, scale the stop hazard with entry-relative drawdown; the multipliers are assumptions |
| Early-completion propensity | 2.5% per month | A scale factor for an equity-dependent probability, not a flat 2.5% exit rate |
| Rational boundary | Off | An alternative decision rule using assumed beliefs, discount rate, volatility and walk cost |
Sources: defaults.rs::DefaultScenario, engine.rs::SimConfig::default, engine.rs::drawdown_multiplier, boundary.rs::BoundaryParams.
Compare price-blind behavior, drawdown-scaled hazards and the rational boundary. Also run with early-completion propensity at zero. Early completion accelerates the remaining scheduled receipts relative to full scheduled completion, but it also removes exposure to a later stop and its possible surplus. Its effect on the whole portfolio is scenario-dependent.
In-the-money stops drive upside
A stop can benefit the Holder when sale proceeds exceed the Purchase Price: the Holder receives the remaining schedule plus the surplus, before its servicing fee. The frequency and timing of these stops are particularly important on rising historical paths.
With drawdown multipliers off, the baseline hazard is price-blind. With them on, the in-the-money multiplier is 0.5. Neither setting is an observed stop rate for the program. The rational-boundary mode offers a different behavior construction. Compare them rather than interpreting a high replay return as evidence that surplus stops will recur.
The waterfall is in engine.rs::stop_sale; the behavior rules are in Buyer behavior. Keep the stop prior and behavior mode beside any quoted historical return.
Vega can have either sign
The Holder is exposed both to shortfalls and to surplus proceeds. Wider price paths can affect both, so the sign of the paper’s volatility sensitivity depends on the scenario and Buyer behavior.
The risk analysis computes a continuation sensitivity: it keeps the path through the as-of month and scales log-return deviations after that month. This applies to every path mode, including the bridge. A flat path has no deviations to scale. This is a sensitivity to the modelled path amplitude, not an option surface’s implied-volatility vega (exposure.rs::greeks).
A volatility surface and hedge overlay are already implemented. Their separate pricing conventions are described in Surfaces and hedging. A sign in one risk-analysis run is not a universal hedge direction.
Monthly resolution
The engine uses one price mark and one payment step per month. A stop sale is priced between adjacent marks by log-linear interpolation. At the base lag of 18 calendar days after the missed payment, the sale sits about 0.5914 months after that date; cash posts at the first monthly date at or after the sale (engine.rs::stop_sale_timing, using the ceiling of the fractional month).
The 18-day lag approximates the program’s day-16 stop plus a sale within two business days. It does not model an actual business-day calendar, venue execution or intramonth price recovery. Monthly margin and intramonth stress proxies likewise do not reconstruct an observed daily collateral account.
One path, many seeds, or historical starts
A single scenario answers what happens on one seeded path. Monte Carlo summarizes the specified path family across seeds. A historical analysis compares start months from the embedded price series, with simulated Buyer exits. These are different constructions.
The workspaces can include a single-run exhibit and a distribution on the same page. Read each exhibit’s run count and construction. IRR statistics can be conditional on seeds with a defined IRR; keep missing and ambiguous IRR counts, cash-loss frequency and cash multiples alongside them. See Results and returns.
Historical starts can overlap substantially and share the same market episodes. They are not independent trials or a probability distribution for future performance. The embedded series is identified by the engine’s historical-data digest; it is not a live price feed.
A bridge fixes the terminal price
A Brownian bridge conditions every path on the selected end price at the market horizon. Its Monte Carlo spread measures variation along the path, while all paths share the same terminal price. Moving the horizon changes the question.
The engine also supports GBM, jump diffusion, regime switching, historical replay, a zero-drift bootstrap, custom anchors and uploaded monthly paths (paths.rs::PathMode). Choose a model that expresses the question; an unpinned stochastic model also brings its own drift, volatility and distribution assumptions.
Sale terms and execution
The model sells at the interpolated path price, applies a log haircut, and deducts a sale cost—25 basis points by default. It does not select a venue or establish that this execution price is attainable.
The documented program ruling allocates sale costs to the Company, while the engine deducts them from sale proceeds before the waterfall. This affects how the cost is allocated between the Holder and Buyer. The sale standard, cost allocation and authoritative Agreement wording need to be reconciled by the program owner; this guide records the implemented convention. See The Agreement.
Payment 1 in the refund base
The model includes the first payment in the Buyer’s paid-in amount, even though BTC Now retained it (engine.rs::Agreement::paid_in). The program specification flags confirmation of that treatment as a term-sheet question. At the base terms, the first payment is $1,475. The stop waterfall shows how paid-in cash limits the refund.
Lockouts and re-entry
The engine has no persistent Buyer identity, re-entry history or operational enforcement of lockouts. Each Agreement is simulated independently as an Agreement, not as a complete lifetime relationship with a person.
The rational boundary’s walk cost is an assumed economic penalty. It does not simulate a six-month lockout, its enforcement or a later Agreement. Custody, paying-side Transfers, secondary Sales between Holders and Buyer screening are also outside the cash-flow engine.
Synchronized stops and market impact
Shared price moves and behavior rules can cause many stops in the same period. The core stop-sale model still applies the same configured haircut and sale-cost rate regardless of the quantity sold. It does not derive execution from market depth or congestion.
A zero haircut is a modelling assumption, not proof that a portfolio has no impact. Stress sale costs and haircut alongside clustered exits, and state the assumed execution conditions. The hedge trading-cost settings are separate from an endogenous impact model for Agreement stop sales.
Surfaces, jumps and hedge limitations
Jump models, regime switching, surface import, option pricing, fair-value analysis, hedge comparisons and monthly marks are implemented. The earlier description of these as future features is superseded.
The remaining limits matter:
- Surface quality. The default surface is a stylised illustration, not a market snapshot. Importing quotes does not guarantee their freshness or liquidity. Prices outside the quoted moneyness use the disclosed wing convention; outside quoted tenors they use the stated tenor convention. Discrete arbitrage checks do not prove continuous arbitrage freedom everywhere.
- Fair-value assumptions. The calculation uses an assumed market process, volatility and discounting basis, while Buyer behavior remains a model input. Its output is a model value, not an executable dealer quote.
- Hedge lifecycle. Options can outlive an Agreement. Futures may remain after exit under a calendar policy unless configured to close. Written options can be naked against the Agreement. Retain the result’s coverage and lifecycle warnings.
- Funding and liquidity. Reported cash needs, initial margin and variation proxies do not form a constrained cash account that enforces collateral, solvency or forced deleveraging. Positive lifetime P&L does not demonstrate that an institution could meet every interim cash call.
Sources: surface.rs, hedge.rs, series.rs; see Surfaces and hedging.
Servicing and legal interpretation
The core Agreement simulation assumes servicing continues under the configured rules. It does not simulate a servicing interruption, transition to a backup servicer, or a legal change that impairs the Agreement’s cash flows. Operational custody, enforceability and the governing documents require review outside this model.
Saved results and historical references
The Scenario report now displays completed server responses. The frozen July first-paint and offline fallback has been removed. If an analysis fails, its error remains visible; a draft edit does not relabel an earlier result as a new calculation.
Some worked figures and test descriptions in the technical chapters record a dated configuration or earlier specification. They are examples and historical evidence. Re-run on the intended source build and historical dataset before using them as current figures.
The ignored July tornado reference remains a historical comparison, not a passing acceptance gate for the September waterfall. Verification records that distinction.
Capabilities and remaining gaps
| Area | Implemented | Remaining limitation |
|---|---|---|
| Scenario research | Seeded simulation, distributions, comparisons and price solver | Outcomes depend on supplied assumptions |
| Market models | Eight path modes, shocks and surface input | No automatic calibration or live quote feed |
| Risk and hedging | Exposure, sensitivities, hedge comparison and monthly analysis | Simplified execution, lifecycle and collateral assumptions |
| Evidence | Ledger checks, tests, completed-run exports and MCP replay metadata | Tests do not validate empirical priors or legal terms |
| Access | Web workspace, REST API and invitation-based MCP source | A deployed build and a supported client must be verified separately |
| Portfolio operations | Modelled cash flows and hedge cost conventions | No production servicing, custody or trading system |
FUND_DESK_PLAN.md records the original phased plan. It is not a current release manifest or a commitment to delivery dates.
Questions for the program owner
Confirm the authoritative treatment of payment 1 in the refund base, sale-cost allocation, the sale standard and the structure of the Holder’s ownership. Distinguish those contractual decisions from analysis choices such as the behavior base case, discounting basis and surface source.
A scenario can choose a convention to quantify its effect. It cannot settle an unresolved term. The dated versions and rulings chapter records the decisions cited by this guide; the latest governing documents must establish their current status.
Before sharing a result
Retain the full assumptions, seed sequence, response warnings, engine build and historical-data identity. State whether the result is a single path, Monte Carlo distribution, historical replay or model value. Show downside and cash needs beside return measures, and separate empirical evidence from chosen priors. Reproduction and interpretation are both necessary parts of a review.
Measurement and release status
BTC cash-flow IRR, total return, gross purchases and net contributions answer different questions. Read the measurement contract and release model card. A surviving derivative mark is economic value, not received cash; a purchase-yield attribution mark does not certify market-participant fair value. No finite Monte Carlo sample establishes a return floor in every future path.