OPENFLEX diagnostics: completed trajectory, interpretation and next steps

Accurate period clearing coexists with persistent exchange-rate divergence

Author

LEEDS_MODEL research notes

Published

October 2, 2026

Written: 2 October 2026. Repository basis: a03b6e0; experiment source commit fa469f8. Numerical findings below are recomputed from the saved trajectory and scan. Mechanistic interpretations and recommended experiments are identified separately.

What was studied and what was learned

This report documents the completed, unshocked EU/Rest-of-World OPENFLEX baseline experiment in R/dynamics/openflex_decompose.R: expected-currency-gain coefficient θ = 1, portfolio response scale σ = 0, and 100 main-run periods. OPENFLEX is the closure in which the exchange rate clears the market for Rest-of-World bills held by EU households, while gold and official foreign-bill reserves remain fixed.

Observed: the run solves all 100 periods but does not approach a stationary exchange rate. The quote rises from 1 to 12,951.419721 Rest-of-World currency units per EU currency unit. Reconstructing the bill market independently from its saved components confirms tight clearing throughout the trajectory. Within-period numerical clearing therefore does not establish stability between periods.

Calculated: growth in residual foreign-bill supply accounts for 84.6% of the cumulative increase in the log exchange rate; contraction of EU household demand accounts for the remaining 15.4%. These are accounting shares of the observed log change, not causal estimates. The experiment establishes how the clearing ratio drifts, but does not yet identify the feedback loop that generates that drift.

Assessment: the dynamical analysis was useful. It prevented a successfully solved terminal period from being accepted as a stationary comparator, showed that active return-sensitive portfolio adjustment is unnecessary for this divergence, and narrowed the next diagnosis to interacting bill supply, wealth, trade and valuation dynamics. The earlier local eigenvalue analysis provides a clue about coupled real and financial responses, but it used σ = 1 and cannot explain the completed σ = 0 experiment on its own.

Experiment and provenance

The revised revised_openflex arm starts its main dynamics from the model’s fixed-gold spin-up. The main run has no scenario intervention (shock = 0). Portfolio demand follows the Tobin specification, with its return-response matrix multiplied by σ. Setting σ = 0 removes those return responses and retains the calibrated portfolio intercepts; it does not remove foreign asset holdings or the effect of exchange-rate valuation on wealth. In particular, EU households’ RoW-bill demand remains 3% of EU wealth.

The completed worker finished at 09:33 EDT on 2 October, after approximately 86 minutes. Its status is recorded as completed; completion means 100 solved periods, not convergence. The initial startup failure and the earlier ten-period algebra smoke check are separate records. The smoke check used the registry σ = 1 cache and was not the completed experiment.

Evidence Settings and role
Completed decomposition and full cache, 2 October EU/RoW, θ = 1, σ = 0, unshocked, 100 periods; primary evidence in this report
θ × σ scan, 1 October Nine combinations: θ ∈ {0.25, 0.5, 1}, σ ∈ {0, 0.5, 1}; comparison of observed trajectories
Earlier local transition matrix at period 10 Registry OPENFLEX with σ = 1 at a drifting state; supplementary evidence from a different experiment
Revised scenario transmission grid 96 completed observations, 12 scenarios × 8 arms; excludes OPENFLEX

All 20 recorded source hashes match the current files when this report is rendered. The full local cache also matches its recorded SHA-256 hash. Its SHA-256 is:

28c4842b7737420b7337621f3a0143423e7aea9976323dd3b89a9d4b5889f52e

Clearing equation and currency orientation

Let \(B_R\) denote RoW bills outstanding, \(H_R\) RoW households’ own-bill holdings, \(C_R\) the RoW central bank’s own-bill holdings, \(K_R\) RoW banks’ holdings, and \(F_E\) the EU central bank’s RoW-bill reserves. The supply available to EU households is

\[ S_t=B_{R,t}-H_{R,t}-C_{R,t}-K_{R,t}-F_{E,t}. \]

Every term in \(S_t\) is in the issuer’s currency, here RoW currency. EU households’ demand \(D_t\) is measured in their own currency. The exchange-rate quote is consequently

\[ q_t=\frac{S_t}{D_t},\qquad D_t=0.03V_{E,t}, \]

where \(V_E\) is EU household wealth. An increase in \(q\) is an EU appreciation. The reciprocal gives the RoW currency’s value in EU units. The authored engine computes supply in model/code/MVP_model_2026.R; run_model_2026.R solves the outer foreign-exchange clearing gap after solving the other simultaneous equations at each trial quote.

Both gold stocks and official foreign-bill reserves are fixed under this closure. Central banks’ domestic bill holdings are not fixed reserves: they adjust with the monetary balance sheet. This distinction matters when interpreting the large domestic bill-stock changes below. The mirror foreign-reserve row is absent from this arm and is explicitly flagged as absent in the extractor; its stored zero is not a separately measured holding.

The earlier clearing startup audit checked the residual-supply subtraction and currency orientation against the cited OPENFLEX formulation. The project additionally subtracts commercial-bank holdings because its model includes banks. The complete textbook equation set, including the claimed 12.91FL mapping, has not been independently recovered; that remaining comparison cannot be reported as completed validation.

Completed trajectory

Period Exchange rate Residual supply (RoW currency) Demand (EU currency) EU wealth (EU currency)
1 1 1.000 66.303 66.303 2,210.084
10 10 1.117 73.028 65.350 2,178.336
20 20 1.344 85.498 63.622 2,120.720
50 50 22.538 977.407 43.366 1,445.543
75 75 912.731 19,293.495 21.138 704.607
90 90 4,588.219 76,353.755 16.641 554.709
100 100 12,951.420 198,975.685 15.363 512.108
Figure 1: The exchange rate diverges while residual bill supply grows and EU demand contracts. Dotted lines mark the first negative EU central-bank own-bill holding (period 55) and RoW household own-bill holding (period 83). Normalization is to each series’ period-1 value; both panels use logarithmic vertical scales.

Residual supply increases 3,001.03-fold between periods 1 and 100. EU demand and wealth decline by 76.83%. Residual supply is initially only 2.22% of outstanding RoW bills, but reaches 55.72% at period 100. A market initially represented by a small difference between much larger balance-sheet stocks becomes a large residual as those stocks evolve.

The fitted slope of \(\log|q_t-1|\) against time over periods 5–100 is 0.138014400. Exponentiating yields an average fitted deviation-growth rate of 14.7992% per period. This regression summarizes a changing trajectory: it does not imply identical growth in every period. For example, the exchange-rate level grows 10.8825% from period 99 to 100.

Market clearing and reproduction checks

Check Result
Maximum scaled supply reconstruction error 2.889e-16
Maximum scaled exchange-rate ratio gap, periods 2–100 2.164e-11
Maximum scaled finite-change identity residual, periods 2–100 2.164e-11
Largest absolute exchange-rate difference from original scan checkpoints 2.001e-11
Largest change in gold stocks or recorded foreign-bill reserves 0.000e+00
EU foreign-bill demand / EU wealth, periods 2–100 0.030000 to 0.030000

Supply reconstruction is scaled by \(\max(1,|B_R|)\); ratio and finite-change residuals are scaled by \(\max(1,|q|)\). The comparison checkpoints are periods 10, 20, 50 and 100. These tests validate extraction, arithmetic consistency and reproduction of the prior scan. They do not validate every engine equation, certify financial admissibility, or establish a stable equilibrium. A systematic equation error could also satisfy the same extracted identity.

Accounting decomposition of the appreciation

For positive supply and demand,

\[ \Delta\log q_t=\Delta\log S_t-\Delta\log D_t. \]

Summing from period 1 to 100 gives the 84.6% supply-growth and 15.4% demand-contraction shares reported above. Since the demand share of wealth is constant, the demand contribution here is exactly the wealth contribution. There is no observed change in the calibrated portfolio share in this experiment.

A second identity gives signed changes in the level of the exchange rate:

\[ \Delta q_t=\frac{\Delta S_t}{D_t} -q_{t-1}\frac{\Delta D_t}{D_t}. \]

Splitting the supply change into issuance and each holding component yields the following cumulative terms. The window is the change from period 1 to period 100, summing period-to-period contributions for periods 2–100.

Component Exchange-rate units
RoW bill issuance 20,948.412558
Change in RoW household holdings 119.600895
Change in RoW central-bank own-bill holdings -9,316.980969
Change in RoW bank holdings -37.919204
Change in EU central-bank foreign reserves 0.000000
Change in EU household demand 1,237.306442
Sum of components 12,950.419721
Observed exchange-rate change 12,950.419721

Calculated interpretation of the signs: issuance raises residual supply; increasing RoW central-bank holdings absorbs much of that issuance and offsets appreciation. Household and bank holding changes enter with the opposite sign to their stock changes. Falling EU demand raises the ratio. Fixed foreign reserves contribute zero.

The finite-change terms use each period’s current demand denominator and therefore depend on the path. Their relative magnitudes are not interchangeable with the log-change shares. All components are jointly endogenous: these decompositions cannot tell us what would have happened had issuance, wealth or central-bank holdings been held fixed. In particular, the 84.6% figure is neither explained variance nor the causal effect of government borrowing.

Economic admissibility and balance-sheet interpretation

The EU central bank’s domestic bill holding first becomes negative at period 55; RoW households’ domestic bill holding first becomes negative at period 83. At period 100 the respective positions are -543.230 EU currency units and -1,353.242 RoW currency units. These require an explicit interpretation as permitted short positions or a recognition that the trajectory has left the intended holding domain. The completed numerical path alone does not settle that modelling choice.

The appreciation is already pronounced before either event: the period-50 quote is 22.538. Late negative positions therefore cannot account for the entire earlier drift. Conversely, the very large terminal quote should not be presented as an economically admissible long-run prediction without resolving the position constraints.

Balances and stocks must retain their currency labels. At period 100 EU and RoW current-account balances are 3.091 EU units and -40,033.667 RoW units. Their raw sum is meaningless; conversion to a common currency is necessary. The large RoW-currency deficit partly reflects the changed exchange-rate scale and is not directly comparable with the EU-currency figure.

What the dynamical analysis added

Distinguishing the numerical solver from the economic transition

The period solver finds the state compatible with the current-period equations and foreign-bill clearing. The economic transition carries that state into the next period through inherited assets, debt, wealth, production and trade. A solver can accurately clear every period along a diverging economic trajectory. The completed run demonstrates precisely that separation.

An endpoint-only analysis could have treated period 100 as a baseline merely because the run returned a solution. Examining the full path prevents that error and supports retaining OPENFLEX outside the completed revised transmission grid until an admissible stationary comparator is established. The existing 96 observations and their scenario-by-region-by-closure regime classifications are unaffected by this diagnostic.

Testing the portfolio explanation

In all three σ = 0 scan rows, changing θ leaves the recorded checkpoints and fitted growth unchanged. The dedicated θ = 1, σ = 0 rerun reproduces those checkpoints. Within the tested specification, active return-sensitive portfolio reallocation and expected currency gains are not necessary for the observed divergence.

This finding narrows the diagnosis, but the earlier convergence plan’s wording that divergence is “not the expectations or portfolio channel” is too broad. Foreign portfolio holdings remain present; wealth, valuation and fixed-share demand still interact with the exchange rate. The evidence excludes the necessity of the active Tobin response for this path, not every financial or portfolio-mediated feedback. The scan found no stationary band among its nine tested combinations; it does not establish impossibility for all admissible parameters.

Interpreting the earlier local modes

The local transition matrix measures the response of the next solved state to small changes in inherited state. For an inner simultaneous system its derivative is \(M=(I-J_c)^{-1}J_{\mathrm{lag}}\), where \(J_c\) and \(J_{\mathrm{lag}}\) are the current and lagged derivatives. OPENFLEX additionally solves a clearing equation \(H(q,\ell)=0\); differentiating that outer solve requires \(dq/d\ell=-H_\ell/H_q\). Holding the exchange rate fixed while perturbing inherited state would measure a different transition.

At a stationary point, an eigenvalue modulus greater than one indicates growth in the associated linear perturbation. At a drifting point, the matrix describes only the local tangent response; long-run amplification also depends on how these matrices change along the path. A fitted trajectory growth rate and a single local eigenvalue need not coincide.

The earlier registry σ = 1 calculation at period 10 found:

Rank Real part Imaginary part Modulus Largest relative-coordinate family loadings
1 0.791358 1.065778 1.327452 p 0.2736; n_j 0.1256; pop_j 0.1256; x_star 0.1183; x 0.1183
2 0.791358 -1.065778 1.327452 p 0.2736; n_j 0.1256; pop_j 0.1256; x_star 0.1183; x 0.1183
3 1.160404 0.000000 1.160404 p 0.2470; n_j 0.1331; pop_j 0.1331; x 0.1251; x_star 0.1251

Here p denotes prices, n_j employment, pop_j the labour force, x output, and x_star potential output used in the diagnostic. The conjugate pair and real mode suggest coupled real-sector responses worth investigating. Their loadings are normalized absolute eigenvector magnitudes in relative coordinates, not variance shares or independently identified causal effects.

These modes are preliminary evidence from σ = 1, not a root diagnosis for σ = 0. The dependency-based feedback restriction removes strictly downstream reporting variables but does not project every perturbation onto the feasible stock-flow accounting manifold. Full-state spectra can include accumulated reporting indices and accounting-residual directions that should not be interpreted as economic instability. Neutral stock directions also require interpretation rather than automatic classification as failure.

The saved precision checks reinforce the qualification. For the RoW-wealth column, changing the relative finite-difference step from \(10^{-6}\) to \(10^{-5}\) produces a norm error of about 4.65% relative to the \(10^{-6}\), 260-sweep reference. Increasing sweeps alone does not remove that difference. Selected implicit-clearing derivative checks were substantially closer at \(10^{-6}\), but selected-column agreement does not certify the entire matrix or its spectrum. The next local-mode result needs a demonstrated step-size plateau and consistent outer clearing.

Diagnostic Contribution to the analysis Remaining limitation
Full trajectory Establishes persistent drift despite 100 solved periods Finite observed path; late positions need admissibility decisions
θ × σ scan and zero-response rerun Shows active portfolio return responses are unnecessary for divergence Does not remove fixed-share demand or valuation feedback
Exact clearing decomposition Locates observed appreciation in growing residual supply and declining wealth/demand An accounting identity does not identify the causal loop
Earlier local transition modes Identifies coupled variables and supplies a method for investigating feedback Different σ; drifting state; derivative and accounting-domain qualifications

Discussion: the mechanism remains to be identified

Observed accounting mechanism: residual RoW-bill supply grows much faster than EU demand, and the clearing quote increases as their ratio. The completed trajectory establishes the “drifting clearing ratio” description proposed in the convergence plan.

Unresolved causal mechanism: exchange-rate changes alter trade, prices, valuation, wealth and financial balances; these changes can then alter the next clearing ratio. A feedback loop could therefore be the cause of the observed ratio drift. “A drifting ratio” and “a feedback root” are not mutually exclusive explanations. The first describes the measured market outcome; the second concerns the dynamic process that generates it.

The thin initial residual market is a plausible amplifier because changes in large issuance and holding stocks can produce large proportional changes in the small residual. Yet the trajectory does not prove that increasing the foreign-bill portfolio share will stabilize the system. Likewise, persistent appreciation does not by itself establish that trade elasticities are the failing stabilizer. Those hypotheses require derivatives and controlled parameter interventions in the same experiment.

Dynamical diagnostics consequently improve the credibility of the scenario analysis by establishing which closure baselines can support comparisons and by distinguishing finite-window outcomes from attractive equilibria. They do not supply a replacement taxonomy for cross-border transmission regimes, nor do they establish the causal meaning of the pooled clusters. Region × closure × scenario interactions remain a separate analysis of the 96 completed observations.

Corrections that matter for subsequent analysis

The earlier scan description called slopes of 0.138–0.205 “13.8–20.5% growth.” Those quantities are slopes of log deviations. The corrected ordinary-growth range, recomputed from the nine scan rows, is 14.8–22.8% per period. This correction changes the growth interpretation and invalidates the original target of matching a local root to 1.138. Neither 1.138 nor the fitted multiplier 1.147992 is a justified imposed target for a Jacobian at a drifting point.

The earlier period-10 eigenvalue calculation was also described within the OPENFLEX convergence work without sufficiently separating its settings. It belongs to the registry σ = 1 experiment. The completed σ = 0 cache now makes a consistent comparison possible, but that same-cache local calculation has not yet been performed.

Evidence and reproduction

The report renders from saved numerical artifacts without rerunning the model. It recomputes the trajectory regression, decomposition shares, contributions and residual checks, verifies the recorded source hashes, and checks the full cache hash when the local cache is present. The ignored RDS cache is retained locally; the durable CSVs and provenance provide the numerical basis for this report.

The principal files, relative to the repository root, are:

File Contents
R/dynamics/openflex_decompose.R Experiment entry point and extraction identities
output/calibration/openflex_decompose_20261002.csv 100 periods, 41 columns of levels, checks and decompositions
output/calibration/openflex_decompose_20261002_provenance.json Settings, 20 source hashes, source commit and cache hash
output/calibration/openflex_decompose_20261002_status.json Completed-run status and solved horizon
output/calibration/openflex_decompose_20261002_scan_comparison.csv Four checkpoints compared with the original scan
output/calibration/openflex_theta_sigma_scan_20261001.csv Nine θ × σ scan results
data/transition/revised_openflex/feedback_eigenvalues_t10.csv Earlier σ = 1 local modes
data/transition/revised_openflex/derivative_precision_t10.csv Step-size and sweep sensitivity of selected columns
data/transition/revised_openflex/implicit_clearing_check_t10.csv Selected derivatives compared with outer re-clearing
R/dynamics/arm_context.R Current cache selection and local solver context
qmd/reports/2026-10-01-closure-dynamics.qmd Earlier cross-closure dynamical analysis and method
qmd/plans/2026-10-01-openflex-convergence.md Convergence work plan, completed rerun and remaining tasks

Render from the repository root:

quarto render qmd/reports/2026-10-02-openflex-diagnostics-results.qmd --to html \
  --output-dir "$PWD/output/html/reports"

The previous startup audit and closure dynamics report remain separate dated records. This report supplies the completed zero-response trajectory and qualifies what the earlier local-mode analysis can establish.