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.

Doctrine

Structural. Changing it means you are running a different framework, not a tuned one.

Parameter

Tunable inside a documented envelope, with the reasoning written down.

Derived

An accounting identity. It follows from the others and cannot be set independently.

Illustrative

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.

Vocabulary · five scores, one name

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.

The five score objects, and which one is the CIS
ObjectWhat it isPersists
NeutralThe thesis-free weighted sum: raw components against the reference weights. No thesis, no sector scaling, no macro downweight.In the score record
AdjustedThe canonical CIS. The thesis-adjusted aggregate after the full cascade below.Yes — as a float, unrounded
EffectiveA 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
RankOrdering mechanics for a list. Not a decision value.No
Next DollarA 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

Weights · reference and live

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.

Component weights by operating thesis
Thesis profileCRME
Reference weighting0.400.250.250.10
Fourth Turning (default)0.350.300.250.10
Singularity0.450.200.250.10
Monetary Debasement0.350.250.300.10
Capital Preservation0.300.350.200.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.

Component C · weight 0.40

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.

Component R · weight 0.25

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.

Component M · weight 0.25

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.

Component E · weight 0.10

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.

Routing · what gets scored how

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.

Boundaries · what a thesis may touch

The thesis is bounded, and the bounds are the doctrine.

Weights

Moves them, inside the ±0.10 envelope, renormalized.

Sector relevance

Scales convexity and macro only, within 0.80 to 1.20. If risk is already poor, the uplift is damped in proportion.

Volatility tolerance

Softens or sharpens risk penalties, floored at insolvency.

Nothing else

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.

Movement · how far a score may travel

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.

Evidence · what the number is made of

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

Admission weights by provenance
ProvenanceWeightMeaning
Direct1.00Observed from an authoritative source
Derived0.85Computed from observed inputs
Stale0.70Real but old — full weight for slow-moving fundamentals
Proxy0.60A stand-in for the quantity actually wanted
Estimated0.50Language-model estimate
Rejected0.00Not 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.

The cascade · how the emitted number forms

Order of operations.

Each stage is clamped to 0–100. Precision is preserved end to end; rounding happens only at display.

  1. Components

    C, R, M and E computed on their own routes, sub-scores capped.

  2. Thesis weights

    Applied inside the ±0.10 envelope, renormalized to sum to 1.0.

  3. Sector relevance

    Scales convexity and macro only, 0.80 to 1.20, damped when risk is weak.

  4. Macro downweight

    Low or medium macro confidence reduces the macro weight; the remainder moves to convexity and risk.

  5. Weighted sum

    The raw aggregate, clamped.

  6. Delta clamp

    Movement bounded by evidence, with the documented bypasses.

  7. Research and market-structure deltas

    Bounded adjustments from deeper evidence.

  8. Coverage cap

    75, 68 or 60, by how complete the evidence is.

  9. Proxy suppression

    Capped at 85 if the score leans on proxies.

  10. Filing-intelligence delta

    The last bounded adjustment. The result is the emitted CIS.

Bands · where a score lands

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.

Severity · the value-weighting primitive

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.

The five penalty buckets, their caps, and whether position size scales them
BucketCapScales with sizeWhat it prices
Allocation25NoWrapper drift from target, and how the book distributes across score bands
Governance15YesPositions held below the line, and oversized positions in the middle band
Dead capital15YesUndocumented positions and stale scores
Complexity10 (hard)No — countsUnknown distributions, and unexplained sub-band holdings past an allowance of three
Concentration15NoSingle, 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.

Boundary · where FIS leaves its own domain

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.

Position sizing bands by posture and score
PostureScoreWeight rangeBand
Torque70–1008–15%Core
Torque60–694–8%Standard
Torque50–592–4%Starter
Ballast70–1005–8%Core
Ballast60–693–5%Standard
Ballast50–591–3%Marginal
Hype50–1002–5%Eligible
Anybelow 500Not 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.

Concentration · three layers, three purposes

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.

Concentration thresholds by layer
LayerSingleTop 3Top 5What happens
Construction15%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.
Scoring15%40%60%FIS penalties: 8 points per breaching position, 6, and 4.
Emergency65%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

Breadth · how many positions

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.

Trigger

A threshold crossing inside one watched condition.

Event

A logged transition — a state that changed. An unchanged state logs nothing, so the record is signal rather than noise.

Recommendation

A described action with a priority and a deadline. Displayed. Never executed.

Proposal

A draft change requiring explicit human acceptance — and acceptance still applies nothing automatically.

Acknowledgement

A record that you saw it. Suppresses no arithmetic.

Automated mutation

Does not exist in this system.

Cohort confluence

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.

The boundary · stated plainly

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.

Native

The asset itself. Quoted on its own lane, valued in Bitcoin units, displayed to eight decimal places.

Spot wrapper

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.

Futures product

Never treated as Bitcoin-class. A futures-based product is a different instrument with a different risk.

Proxy equity

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.

Headroom · the monetary model

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.

Accumulation · simulated and real

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.

Return of capital

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.

Confidence

The quality of evidence at the moment of scoring.

Freshness

The age of an input against its own time-to-live.

Completeness

What fraction of the expected fields are present.

Source quality

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.

How long an input stays fresh
InputWindow
Quotes5 minutes
Macro series6 hours
Earnings12 hours
Fundamentals7 days
Research72 hours
Model estimates30 days
Addressable market90 days

These are freshness boundaries, not confidence values — crossing one marks a record stale, and never rewrites a confidence tier

Evidence discount

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.

Model estimates

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:

Next Dollar Score components
ComponentWeightWhat it measures
Position score0.30The quality of the holding itself. A missing score enters as 40, not as zero.
Size opportunity0.20How much room is left before the position is already large
Expression purity0.15Whether the holding expresses the thesis cleanly or by proxy
Posture alignment0.15Distance from the posture budget — underweight scores higher
Momentum context0.10Recent price behaviour, read against whether the thesis still holds
P&L context0.10Unrealised 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.

Gates · what they actually do

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.