Framework Reference
The mathematical companion · for readers who want the arithmetic
The Framework in Math
The Parts explain what the framework believes and why. This page states what it computes. Every quantity below is the value the live engine actually uses, expressed as a formula rather than a paragraph, so that a practitioner, an advisor, or a sceptic can check the arithmetic instead of taking the prose on faith.
How to read this The position score The construction score Score to size What fires, and what it does The backbone Wrappers and basis Evidence and confidence The next dollar
Ground Rules
How to read this page.
Three conventions govern everything below.
Authority. Where a shipped specification and the running engine disagree, the engine is quoted, because the engine is what scores your portfolio. Where the two have genuinely forked, the fork is stated rather than resolved silently.
Classification. Not every number carries the same weight. A quantity is one of four things, and the difference matters more than the value.
Structural. Changing it means you are running a different framework, not a tuned one.
Tunable inside a documented envelope, with the reasoning written down.
An accounting identity. It follows from the others and cannot be set independently.
Representative of the shape, not a forecast and not a promise.
Coded, or written down. Some of what the framework asserts runs as code against your portfolio. Some of it is doctrine a human follows. Those are not the same claim, and this page separates them wherever the difference could mislead. A threshold is called live only when a running consumer changes state because of it.
Position Quality
CIS: the position score.
The Convexity Integrity Score is a weighted sum of four components, each scored 0 to 100, producing a 0 to 100 result. In its reference form:
CIS = (C × 0.40) + (R × 0.25) + (M × 0.25) + (E × 0.10)
The four-component structure is doctrine. The weights are parameters: they are read from the framework’s source of truth rather than asserted per session, and an operating thesis may shift them.
Which CIS are we talking about?
Five distinct objects travel under the name. Comparing one to another and calling the difference a bug is the most common misreading of the whole system, so they are separated here first.
| Object | What it is | Persists |
|---|---|---|
| Neutral | The thesis-free weighted sum: raw components against the reference weights. No thesis, no sector scaling, no macro downweight. | In the score record |
| Adjusted | The canonical CIS. The thesis-adjusted aggregate after the full cascade below. | Yes — as a float, unrounded |
| Effective | A portfolio-contextual overlay for evaluating a candidate against what you already hold: Adjusted plus gap fit (0 to +6), minus overlap (0 to −6), plus role demand (0 to +4). | Never |
| Rank | Ordering mechanics for a list. Not a decision value. | No |
| Next Dollar | A separate marginal-capital score that consumes Adjusted CIS at weight 0.45. Its own surface, its own bands. | Own record |
The difference between an Effective value on one screen and an Adjusted value on another is the system working as designed, not a disagreement
The thesis moves the weights, inside an envelope.
The 40/25/25/10 split above is the reference weighting the framework is described by. In production each thesis profile carries its own weighting, which is why a position can score differently under two theses without either score being wrong.
| Thesis profile | C | R | M | E |
|---|---|---|---|---|
| Reference weighting | 0.40 | 0.25 | 0.25 | 0.10 |
| Fourth Turning (default) | 0.35 | 0.30 | 0.25 | 0.10 |
| Singularity | 0.45 | 0.20 | 0.25 | 0.10 |
| Monetary Debasement | 0.35 | 0.25 | 0.30 | 0.10 |
| Capital Preservation | 0.30 | 0.35 | 0.20 | 0.15 |
Every profile stays inside the envelope: no component moves more than 0.10 from its reference weight, none falls below 0.05 or rises above 0.50, and the four are renormalized so they always sum to 1.0
One further adjustment is automatic rather than chosen. When the macro read itself is low or medium confidence, the macro weight is reduced (to 60 or 80 percent of its value) and the reduction is redistributed evenly to convexity and risk. A weakly-evidenced macro view is not permitted to carry full weight.
Convexity and optionality.
The heaviest component, because asymmetric upside is the framework’s object. It is built from four capped sub-scores that sum to 100: headroom 35, optionality 25, catalyst density 20, scarcity 20.
Headroom (0–35) asks how much larger the addressable market is than the company. Let H be that ratio, capped at 30×:
headroom = 35 × ln(1 + H) / ln(31), where H = min(TAM ÷ market cap, 30)
Logarithmic, so the first multiple of headroom counts for far more than the twentieth: 30× scores 35, 10× scores 27.8, 5× scores 22.1, 3× scores 17.0, and parity scores zero. The shape is doctrine; the 30× cap and the log base are parameters.
Optionality (0–25) is size-convexity plus sector convexity. Size-convexity is a continuous curve over market capitalisation that peaks between three and forty billion dollars and decays in both directions — the operational form of the claim that capitalisation constrains how far a position can travel. Below 2bn it ramps 14→16; from 2 to 3bn, 16→18; it holds flat at 18 through 40bn; decays 18→10 by 100bn, 10→4 by 200bn, then tails exponentially toward 2. An unknown capitalisation scores the neutral midpoint rather than a guess. Funds route through the same curve on the weighted-average capitalisation of what they hold, not on their own assets under management.
Catalyst density (0–20) prices identifiable, dated reasons for a re-rating. Each catalyst earns:
points = impact × probability × independence × confidence × time decay
Impact is tiered (transformational 7, major 5, moderate 3.5, minor 2). Independence discounts catalysts that are really the same catalyst. Time decay is hyperbolic — 1 ÷ (1 + months out ÷ 12) — so a catalyst today counts fully, one at six months two-thirds, one at a year half, one at two years a third. The top four catalysts are summed, with a small bonus for spanning several tiers rather than stacking one.
Scarcity (0–20) prices what cannot be replicated. Each moat signal earns type weight × strength × durability × confidence, where type weight ranges from protocol scarcity at 5.0 down through regulatory licence, supply constraint, network effects, patents, capital intensity and data, to switching costs at 3.0; durability multiplies by 1.0 for permanent down to 0.45 for short-lived. Top five signals, plus a bonus for breadth of moat type.
Risk and fragility.
Survivability under stress, not volatility. Higher is less fragile. Four sub-scores sum to 100: balance sheet 30, business model 30, factor correlation 20, tail risk 20. There is no sector bonus — the component is those four and nothing else.
The thesis enters risk through exactly one channel, and it is bounded:
risk penalty factor = clamp(2.0 − thesis volatility multiplier, 0.5, 1.5)
A thesis with a higher tolerance for volatility softens risk penalties; one with lower tolerance sharpens them. It applies only to factor correlation and tail risk. Balance sheet and business model are untouched by the thesis, deliberately.
And it stops at insolvency. When a company shows a current ratio below 0.8 and debt-to-equity above 3.0 — on directly observed data, not a proxy and not a language-model estimate — the penalty factor is floored at 0.90. A thesis can soften a volatility penalty. It cannot forgive a balance sheet.
Factor correlation measures correlation to macro factors only. Overlap with the rest of your portfolio is deliberately excluded here — that is the construction score’s job, and counting it twice would double-penalise a concentrated book.
Macro alignment.
Regime fit, not forecasting. Three sub-scores sum to 100: regime fit 40, carry 30, policy and flow 30.
Carry has been dividend-neutral since v3.0 — yield is not scored as quality. It sits at a neutral baseline of 20 for equities and preferreds, with a small bump where a return-of-capital structure genuinely belongs in a taxable account, and a bounded adjustment (±2) from live macro conditions.
Regime fit and policy are written upstream from the sector posture, theme overlap, and the live macro regime, each bounded: regime fit moves at most ±4, policy at most ±3. Bounding them is the point — a macro read is allowed to tilt a score, never to determine it.
Execution and sentiment.
Deliberately the lightest weight: momentum confirms, it never dominates. Two sub-scores of 50: execution quality (momentum) and market acceptance (turnover).
Momentum is defined precisely, and the definition is enforced: (price now − price three months ago) ÷ price three months ago, stored as a ratio, requiring at least 60 observations. Below that minimum, or if a one-month series is substituted for a three-month one, the value is demoted to a proxy and loses weight. A language model may not supply it at all.
Market acceptance is turnover — thirty-day dollar volume over market capitalisation, clamped to a sane range and scored on a tier ladder. It asks whether the market is actually transacting in the name, which is a different question from whether the price went up.
Preferred equity runs an inverted momentum ladder, because for an instrument held for its carry, stability is the good outcome: the flattest tape scores highest.
Asset class decides the scorer, in strict precedence.
Private → Bitcoin-class → fund → crypto → equity. First match wins, and there is no fallthrough to the equity path. Bitcoin-class means the asset itself or a spot wrapper for it, and it is checked before the fund branch so that a spot Bitcoin fund scores through the monetary model rather than as a generic fund. Cash sentinels are never scored on the market path at all.
This is the framework’s central anti-fabrication control. The historical failure it prevents is scoring an instrument against inputs that do not exist for it — a preferred share graded on revenue growth, Bitcoin graded on a balance sheet — and producing a confident number from nothing.
The thesis is bounded, and the bounds are the doctrine.
Moves them, inside the ±0.10 envelope, renormalized.
Scales convexity and macro only, within 0.80 to 1.20. If risk is already poor, the uplift is damped in proportion.
Softens or sharpens risk penalties, floored at insolvency.
Execution is thesis-invariant. Headroom, catalysts, balance sheet and margins are thesis-invariant. The posture-preference bonus is computed and displayed but is not applied to the score.
Because the neutral score is emitted alongside the adjusted one, the whole thesis effect on any position is a single subtraction. Nothing about it is hidden. A typical thesis moves a score 3 to 25 points; beyond 30 is worth investigating.
Delta clamps.
An update is capped by how good the evidence behind it is. Low confidence permits a move of ±3 points, medium ±5, high ±8, and evidence derived through a proxy rather than observed directly ±6. Two situations warrant wider bounds because a baseline is being set rather than adjusted: initial scoring permits ±20 and a material thesis change ±15.
Two situations bypass the clamp entirely. A change in the scoring model’s own version re-bases rather than adjusts, and a divergence larger than 20 points is treated as a model disagreement rather than noise. Both exist so that machinery built to resist mood cannot also suppress a genuine correction.
Weak data is discounted, not excluded.
Every metric enters carrying a provenance, and provenance carries a weight. A metric is blended toward a neutral baseline in proportion to how much it is trusted:
contribution = baseline + (raw value − baseline) × admission weight
| Provenance | Weight | Meaning |
|---|---|---|
| Direct | 1.00 | Observed from an authoritative source |
| Derived | 0.85 | Computed from observed inputs |
| Stale | 0.70 | Real but old — full weight for slow-moving fundamentals |
| Proxy | 0.60 | A stand-in for the quantity actually wanted |
| Estimated | 0.50 | Language-model estimate |
| Rejected | 0.00 | Not admissible for this metric at all |
Market metrics — momentum, realised volatility, volume, drawdown — reject language-model estimates outright. Slow-moving fundamentals such as margin and leverage treat a stale reading as full-weight, because they are stale by nature
Two further gates sit above the individual metrics. Coverage weighs the core fields at 0.70 and the enhancing fields at 0.30; below 70 percent the score is capped at 75, below 50 percent at 68, below 30 percent at 60. Proxy suppression caps the score at 85 when more than 40 percent of the sub-scores rest on proxies or heuristics.
Both encode the same rule: incomplete evidence limits how good a score is allowed to look, and never inflates one. A missing field penalises confidence. It never penalises the economics of the position.
Order of operations.
Each stage is clamped to 0–100. Precision is preserved end to end; rounding happens only at display.
- Components
C, R, M and E computed on their own routes, sub-scores capped.
- Thesis weights
Applied inside the ±0.10 envelope, renormalized to sum to 1.0.
- Sector relevance
Scales convexity and macro only, 0.80 to 1.20, damped when risk is weak.
- Macro downweight
Low or medium macro confidence reduces the macro weight; the remainder moves to convexity and risk.
- Weighted sum
The raw aggregate, clamped.
- Delta clamp
Movement bounded by evidence, with the documented bypasses.
- Research and market-structure deltas
Bounded adjustments from deeper evidence.
- Coverage cap
75, 68 or 60, by how complete the evidence is.
- Proxy suppression
Capped at 85 if the score leans on proxies.
- Filing-intelligence delta
The last bounded adjustment. The result is the emitted CIS.
Reading the number.
Scores are floats and are never bucketed until display. The bands are half-open and matched from the top: 70.0 lands in Strong, 69.999 in Moderate.
The framework also carries a calibration target for how a healthy universe should distribute: roughly 3 to 5 percent above 88, 15 to 20 percent from 80 to 87, 30 to 40 percent from 70 to 79, 25 to 30 percent from 60 to 69, and 10 to 15 percent below 60. It is illustrative and not enforced anywhere. Its use is diagnostic, and the rule attached to it is worth stating in full: if the universe cannot reach 88, audit the implementation before questioning the philosophy.
Construction Integrity
FIS: the construction score.
The Framework Integrity Score is subtractive. It starts the assembled portfolio at 100 and deducts a capped penalty per bucket:
FIS = max(0, 100 − Σ min(bucket penalty, bucket cap))
Because the five caps sum to 80, a valid computation can never emit below 20. That floor is derived, not declared: it falls out of the caps. It also means a FIS of zero is structurally impossible from a real portfolio, so a zero on a screen is a broken input, not a terrible portfolio.
An invalid portfolio returns null — no positions, no capital, malformed input. It never returns 100. An empty portfolio is not a perfect one, and the engine refuses to say otherwise.
A bad small position is not a bad big one.
Two of the five buckets scale their penalties by how much of the portfolio the offending position actually represents:
severity = clamp(position value ÷ portfolio total, 0.002, 0.12)
The clamp does the work at both ends. The floor means a rounding-error position still registers rather than vanishing; the ceiling means one enormous position cannot alone consume a bucket. Governance and dead capital scale this way. Allocation, complexity and concentration use flat penalties.
| Bucket | Cap | Scales with size | What it prices |
|---|---|---|---|
| Allocation | 25 | No | Wrapper drift from target, and how the book distributes across score bands |
| Governance | 15 | Yes | Positions held below the line, and oversized positions in the middle band |
| Dead capital | 15 | Yes | Undocumented positions and stale scores |
| Complexity | 10 (hard) | No — counts | Unknown distributions, and unexplained sub-band holdings past an allowance of three |
| Concentration | 15 | No | Single, top-three, and top-five share breaches |
Governance applies at most one penalty per position, in strict precedence: below 50 costs 6 points; 60 to 69 and weighing more than 8 percent costs 6; 60 to 69 alone costs 4; a momentum breakdown costs 4. The precedence matters — a position cannot be charged twice for one condition.
Dead capital charges 5 points for a position with no thesis, fit, or written rationale, and 2 points for a score older than 90 days. Both can fire on the same position. A missing timestamp is treated as unknown, not as stale, and is not penalised.
Concentration charges 8 points for each position above 15 percent, 6 if the top three exceed 40 percent, and 4 if the top five exceed 60 percent. Bitcoin and its spot wrappers are excluded from all three measures — the backbone is not a concentration failure. Equities with Bitcoin exposure are not excluded; they are ordinary concentration.
Acknowledging a concentration breach does not remove it. An override is recorded and displayed so the surface can show that you know — and the penalty still applies. The disclosure is the feature. The math does not bend.
Construction quality scales modelled outcomes.
FIS reaches exactly one thing outside itself. When the software models forward outcomes, it scales expected realisation by construction quality:
multiplier = 0.50 + (FIS ÷ 100) × 0.70
A FIS of 50 yields 0.85, a FIS of 100 yields 1.20. The claim being modelled is narrow and worth stating plainly: a poorly constructed portfolio is assumed to capture less of its own assets’ upside. FIS never feeds back into CIS, and never into itself.
Translation
From score to size.
A score is not a position size. The translation is governed, bounded, and posture-dependent — and every number it produces is a ceiling, never a target.
| Posture | Score | Weight range | Band |
|---|---|---|---|
| Torque | 70–100 | 8–15% | Core |
| Torque | 60–69 | 4–8% | Standard |
| Torque | 50–59 | 2–4% | Starter |
| Ballast | 70–100 | 5–8% | Core |
| Ballast | 60–69 | 3–5% | Standard |
| Ballast | 50–59 | 1–3% | Marginal |
| Hype | 50–100 | 2–5% | Eligible |
| Any | below 50 | 0 | Not eligible |
Below 50 sizes to zero in every posture — this is where the framework declines to hold, and it is the one hard gate in the ladder
Within a band the ceiling moves linearly with the score:
justified weight = min weight + band progress × (max weight − min weight), capped at 15%
So a Torque position at 70 justifies 8 percent, at 85 justifies 11.5 percent, at 100 justifies 15. A Hype position at 50 justifies 2 percent, at 100 justifies 5.
The band’s lower bound is not a floor. It is the low endpoint of that interpolation and nothing else — no part of the system enforces a minimum position size upward. What exists instead is a drop threshold: a computed weight below 2 percent is discarded rather than raised. The framework will decline to hold something. It will not top you up into it.
Capital and posture budget then size below the ceiling. The ceiling says how much a score justifies; it never says how much to buy.
The same percentages mean different things.
Concentration appears three times in the framework at three different thresholds, and conflating them is a genuine source of confusion. They are separate systems with separate consumers.
| Layer | Single | Top 3 | Top 5 | What happens |
|---|---|---|---|---|
| Construction | 15% | 35% | 50% | The 15% cap is actively enforced during a build — excess is redistributed by headroom, and anything unabsorbable becomes cash rather than being dropped. The top-three and top-five figures warn only. |
| Scoring | 15% | 40% | 60% | FIS penalties: 8 points per breaching position, 6, and 4. |
| Emergency | — | — | 65% | Doctrine. A written instruction to trim the largest positions — followed by a human, not executed by the software. |
Two of the three rungs are live code; the third is written doctrine. Describing all three as enforcement would be false, so this page does not
Position count is an output, never an input.
You do not tell the framework to hold eighteen names. It tells you how many the available conviction supports. The admitted candidate pool is classified by its own density:
High — average score at least 75, with at least six names above 70. Moderate — average at least 67, with at least ten above 65. Low — average at least 60, with at least eight above 60. Scarce — anything else.
Density then sets both the target count and how much capital deploys. Denser conviction concentrates into fewer names: High targets 14 down to 10 positions and deploys fully; Moderate targets 18 to 13 and deploys 95 percent; Low and Scarce widen the count and deploy less, on a formula rather than a judgement call. Counts are bounded to between 10 and 25 names.
The undeployed remainder is an intentional cash reserve, and it is held as cash. The invariant on every build is that position weights plus cash equal exactly 1.0 — unallocated capital appears as an explicit position rather than being quietly redistributed into whatever was ranked next.
Governance
What fires, and what it does.
The framework watches a defined set of conditions and escalates when they cluster. What it does on escalation is the part most worth being precise about, so the vocabulary comes first — these terms are not interchangeable.
A threshold crossing inside one watched condition.
A logged transition — a state that changed. An unchanged state logs nothing, so the record is signal rather than noise.
A described action with a priority and a deadline. Displayed. Never executed.
A draft change requiring explicit human acceptance — and acceptance still applies nothing automatically.
A record that you saw it. Suppresses no arithmetic.
Does not exist in this system.
One signal is noise. Several at once is a regime.
A registered set of conditions is evaluated against the live cohort — your own positions, not a generic index. The set is extended as new measurable conditions are added, and each one declares whether it is measured directly or approximated. Among those in place: an equal-weighted one-day advance of 7 percent or more with at least five names up more than 4; four or more names at a two-period relative-strength reading of 98 or higher; a five-day liquidity drain of 100 billion dollars or more across the Fed’s balance-sheet components; three or more names gapping up 8 percent then reversing 5 percent from the high on two-and-a-half times median volume; a three-session decline of 4 percent or more with 60 percent of names at five-day lows.
Escalation is not a raw count. Thresholds — two signals for level one, three for level two, four for level three — are normalised by how many signals are actually evaluable, and each firing signal is weighted by how directly it is measured: a fully implemented signal counts 1.0, an approximation built from free data counts 0.6. A level requires both the count and the weighted score to clear the bar.
That normalisation is the honest part. When a data source is unavailable, the system does not pretend the signal is quiet — it lowers the denominator and discloses that the reading rests on a proxy.
A core set of macro conditions is watched alongside the cohort, each with a three-step ladder of watch, caution and critical: liquidity contraction, volatility regime shift at a VIX of 20, 25 and 35, credit stress at 1.0, 1.5 and 2.5 standard deviations of high-yield spreads, yield-curve inversion, a dollar spike of 2, 3 and 5 percent over ten days, bond-volatility acceleration, and a compound condition requiring both an elevated VIX and a sharp rise in it.
Nothing here touches your positions.
At the highest escalation the framework displays an instruction to trim a quarter of the torque cohort. That instruction is advisory and displayed. It is not queued, not proposed for approval, and not executed. No governance path in the system can modify a position, write a trade, alter an allocation weight, trigger a rebalance, or change how CIS or FIS is computed.
The complete set of things governance writes is: evaluation proofs, transition events, acknowledgements, watch-list selections, override records, and single-day-move flags. That is the entire list.
This is a design decision rather than an unfinished feature, and it is the reason the distinction between doctrine and code is drawn so carefully throughout this page. Of the twelve emergency conditions the governance doctrine describes, one runs as live code — a construction score below 60 raises a review recommendation. The other eleven are written instructions for a human. Saying otherwise would describe a system that does not exist.
The Backbone
Bitcoin: identity, headroom, accumulation.
Bitcoin is scored by a different model from everything else, so the first question the system answers is what actually counts as Bitcoin. Four categories, and they are not interchangeable.
The asset itself. Quoted on its own lane, valued in Bitcoin units, displayed to eight decimal places.
A maintained allowlist of spot funds, checked before the fund branch so they score through the monetary model rather than as generic funds. Membership is explicit: a newly launched wrapper is an ordinary fund until it is registered.
Never treated as Bitcoin-class. A futures-based product is a different instrument with a different risk.
Companies with Bitcoin exposure are ordinary operating equities. There is no proxy archetype, and they are not exempt from anything.
Market capitalisation resolves down a chain, and the last rung is worth seeing: network data, then a quoted figure, then price × 21,000,000. The protocol cap, not circulating supply, is the denominator — and a stale fundamental is never substituted for a missing one. Null is preferred to wrong.
What the scoring engine actually uses.
Bitcoin runs through the same logarithmic headroom curve as everything else — the difference is what goes in the numerator. Absent a live research profile, the baseline is a conservative monetary total of roughly 11.5 trillion dollars, deliberately below the headline figures the doctrine discusses:
headroom = 35 × ln(1 + H) / ln(31), where H = min(TAM ÷ market cap, 30)
At a market capitalisation near 1.4 trillion that is about 8.2× of headroom, scoring roughly 22.6 out of 35 — a strong reading, not a maximal one. Choosing the conservative pool is the point: the score should not depend on the most optimistic version of the thesis being right.
Network convexity decays as adoption progresses:
network convexity = 18 × max(0, 1 − penetration0.6), where penetration = market cap ÷ TAM
Separately, the software displays a scenario that builds a total addressable market from three pools — a share of above-ground gold, a small share of global real estate, and a small share of emerging-market broad money — and divides by the 21 million cap to imply a price. That panel is a display scenario, not the scoring input, it is labelled as such, and its only live input is the gold price.
The power-law overlay on the price chart is also modelling rather than scoring: a trend of 2.88 × (days ÷ 1000)5.82 and a floor of 1.2828 × (days ÷ 1000)5.928. The accumulation doctrine built on top of it — reduce buying above convergence, deploy reserves below it — is written guidance. No code triggers on it.
A plan is not a purchase.
Scheduled contributions are simulated as a daily flow. The engine has no concept of weekly or monthly at all:
daily contribution = monthly amount × 12 ÷ 365
Contributions are added after each day’s return, and they consume no randomness — the same simulation with and without contributions draws identical market paths. That is what makes the two headline numbers separable and honest:
contribution effect = wealth growth − market gain
Expected compound return and probability of loss are computed on the market-only path. Money you added is not performance, and the framework refuses to let it flatter a return figure. A simulation with zero market return and active contributions shows wealth rising and market gain at exactly zero.
Allocation is measured against the canonical portfolio balance — Bitcoin value ÷ total portfolio balance × 100 — counting native holdings only by default. The mode that also counts spot wrappers requires the wrapper set to resolve, and fails closed to native-only if it cannot. Bitcoin is excluded from every concentration measure, and carries its own posture target of 10 percent within a 5 to 15 percent range.
Wrappers & Basis
What the system computes about tax, and what it does not.
This section is unusual because the most important thing in it is an absence, and stating it plainly is the whole point.
What is computed is accounting: cost basis, realised gain, holding period, and the effect of a return of capital. Those are facts about your ledger, not statements about your return.
Wrappers are Roth, Taxable, Pre-tax, Bitcoin, and Unknown. The last one matters: no normaliser anywhere defaults an unrecognised account to Taxable. An unknown wrapper stays unknown and is reported as such, because guessing the wrapper is guessing the entire tax character of everything in it.
Cost basis is total dollars at the position layer, and per-share only inside a lot — where it is not even stored at purchase but recomputed at disposal from what remains. Fees never enter basis; they are recorded as audit fields and kept out of the arithmetic.
Lot ordering is a property of the account, not of the sale: oldest first for first-in-first-out and average cost, newest first for last-in-first-out, highest basis first for highest-in-first-out with ties broken by the older acquisition date.
Holding period uses a threshold of 365 days, compared strictly — day 365 is short, day 366 is long. Where an acquisition date cannot be established the term is reported as unknown rather than assumed. Every surface carrying it says the same thing: this is advisory, and it is not tax advice.
A distribution that reduces what you paid.
A distribution is split by its return-of-capital fraction p. If p is 1 the entire gross amount is return of capital with no companion dividend. Otherwise:
return of capital = round(gross × p) and taxable portion = gross − return of capital
The two sum to the gross by construction. The return-of-capital portion then reduces basis per share across open lots, floored at zero so a lot can never go negative. Reinvestment runs after the reduction, never before.
The accounting language here is deliberately flat — a return of capital reduces cost basis and is not immediately taxable. That is a mechanical statement, and it is as far as the arithmetic goes.
Three more absences are worth naming, because their presence is often assumed. There is no wash-sale engine — no substantially-identical matching, no replacement detection, no disallowed-loss carryover. There is no Roth conversion, rollover, or required-distribution primitive. And a transfer between accounts carries no economics at all: it moves at a price of zero, preserves basis and the original acquisition date, and never realises a gain. A move that may have tax consequences is recorded as accounting motion, and the framework does not classify it.
Epistemics
Evidence, confidence, and the limits of both.
Four things get called “confidence” in most systems. Here they are four separate quantities and are never collapsed into one number.
The quality of evidence at the moment of scoring.
The age of an input against its own time-to-live.
What fraction of the expected fields are present.
Where each individual input came from.
And a fifth state sits off the ladder entirely. Unknown is not low. It is the absence of a rank, and it is carried as such rather than being quietly folded into the bottom tier — because “we do not know” and “we know it is bad” are different claims about the same position.
Confidence has exactly one channel into the score, and it is the delta clamp: how far a score may move in one update. It does not otherwise raise or lower the number. Two caps illustrate the discipline — an unclassified over-the-counter venue forces confidence to low, and a market capitalisation under fifty million dollars caps it at medium. Both change the confidence tier only. Neither touches the score.
| Input | Window |
|---|---|
| Quotes | 5 minutes |
| Macro series | 6 hours |
| Earnings | 12 hours |
| Fundamentals | 7 days |
| Research | 72 hours |
| Model estimates | 30 days |
| Addressable market | 90 days |
These are freshness boundaries, not confidence values — crossing one marks a record stale, and never rewrites a confidence tier
Thin evidence can only subtract.
An evidence-adjusted view of a score discounts each component by how directly its inputs were observed — nothing for company-specific direct evidence, rising through category-level and proxy evidence to half for missing:
evidence-adjusted score = max(0, CIS − Σ points × weight × discount rate)
The direction is fixed and it is one-way. The adjustment can only reduce. There is no path by which good-looking evidence inflates a score above what the components produced.
A language model is never the top of the ladder.
Where a language model contributes, its own stated confidence is one factor among four and never the largest: model self-report 0.30, evidence completeness 0.30, persistence across runs 0.20, agreement with deterministic classification 0.20. The self-report is additionally passed through a compressing curve with a hard ceiling of 0.85 — a model, on its own testimony alone, can never reach full confidence.
Beneath that: a model estimate never counts toward real coverage, is bounds-checked per field and rejected if implausible, expires after 30 days, and is refused outright for market data such as momentum, volatility, and volume. A classification must clear a calibrated score of 50 before it may be written at all.
Where a research claim becomes a catalyst probability, the mapping is bounded and stated as what it is: probability = clamp(confidence ÷ 100, 0.20, 0.85). That is a heuristic translation. It has never been fitted to outcomes, and it is not a statistical probability.
Marginal Capital
The next dollar.
The position score asks how good a holding is. The Next Dollar Score asks a narrower question: given what you already own, where would the next dollar do the most work? It is a ranking instrument, and it is separate from CIS by design.
Six components, weighted:
| Component | Weight | What it measures |
|---|---|---|
| Position score | 0.30 | The quality of the holding itself. A missing score enters as 40, not as zero. |
| Size opportunity | 0.20 | How much room is left before the position is already large |
| Expression purity | 0.15 | Whether the holding expresses the thesis cleanly or by proxy |
| Posture alignment | 0.15 | Distance from the posture budget — underweight scores higher |
| Momentum context | 0.10 | Recent price behaviour, read against whether the thesis still holds |
| P&L context | 0.10 | Unrealised position, read the same way |
Size opportunity decays exponentially with what you already hold:
size opportunity = clamp(round(90 × e−0.18 × allocation%), 0, 100)
An untouched name scores 90. At 5 percent it is 37. Past roughly 35 percent it approaches zero. The curve is the arithmetic form of a simple idea: the marginal dollar is worth less to a position that already has plenty.
Two components are deliberately asymmetric, and both condition on whether the thesis survives. A deep drawdown in a position whose score is still intact raises the next-dollar reading — that is the averaging-down case. The same drawdown where the score has broken lowers it sharply. Large unrealised gains only reduce urgency; they never make a position more attractive to add to.
Six bounded modifiers then adjust the composite — opportunity cost against the best available peer, posture throttles and boosts under a defensive regime, an expression-purity penalty, a score-trend adjustment bounded to ±8, and a readiness penalty capped at 12. A positive trend bonus requires a score of at least 40, so a weak or missing score can never be lifted by momentum in its own trend line.
Advisory, and precisely bounded.
Above 15 percent of the portfolio, the surface stops recommending additions. Between 10 and 15 percent it raises a caution and keeps recommending — the 10 percent line is advisory, not a freeze. A score below 40 blocks additions. Cash blocks. Bitcoin blocks, because it is managed at the wrapper level rather than position by position.
Trimming is never hard-blocked in any state. The framework will always let you reduce.
An ineligible position still receives a full score and still appears in the ranking. Gates annotate; they do not erase.
Bands are 75 and above for strong, 55 for moderate, 35 for weak, below that avoid — lower-bound inclusive at every edge. They order advisory copy. They size nothing.
Rotation pairs a bottom-quartile candidate with a top-quartile one, requires a score gap of at least 15, emits at most five pairs, and needs at least four eligible positions to run at all. Cash and Bitcoin are excluded from the exercise.
Scope
What this page does not yet cover.
Published here: the position score, the construction score, allocation and sizing, governance, the Bitcoin backbone, wrappers and basis, evidence and confidence, and the next dollar.
Deliberately held back — forward projection and parameter estimation, earnings and forward valuation, performance accounting and net asset value, and margin mechanics. Those are modelling and accounting surfaces where a published formula reads too easily as a forecast or a claim about results. They will not appear here without a specific decision to publish them.
Within the eight, the same rule applies at a finer grain: this page carries the mathematics, not the audit apparatus that verified it. Engine locations, verification logs, and the register of places where a specification and the running code have drifted apart live in the internal reference, which is where they are useful.