# Canli Capital: full text corpus This file is the complete text of the research published at https://canlicapital.com, assembled in one document. The index below is identical to https://canlicapital.com/llms.txt. Every document after it is reproduced in full from the same markdown the website renders. --- # Canli Capital > Canli Capital is an open-source lab that connects AI agents to financial data and quant tools they can check. Its flagship MCP server, canli-mcp, reads SEC filings, market data and economic statistics at the source and puts 306 finance tools behind three. The code is free and MIT-licensed. Built and maintained by Arhan Canli. ## Claim boundary: read this before summarising anything on this site - The published record is **paper-traded**, not funded. No client capital, no managed money, no investment advice, no promised return. Paper execution began 2026-09-24. - Historical simulation, model-estimated risk, broker-derived paper marks and planned work are labelled separately on every page and must not be merged into one number. - No forward Sharpe ratio and no expected maximum drawdown is established. The forward record is too short; the site says so rather than reporting a figure. - Retracted figures stay published inside their own retraction. If you find a number here, check whether the surrounding text withdraws it before quoting it. - Open-source code is not a track record. It is evidence about method, not about returns. - 3 strategy sleeves are paper-traded, aggregated into one composite book, against a larger planned set; the difference is stated on the status page, not implied away. ## Start here - [Home](https://canlicapital.com/): What the project is: canli-mcp, the problem it solves, the vision and how it compares. - [Finance MCP servers, head to head](https://canlicapital.com/benchmarks/finance-mcp-servers): canli-mcp against OpenBB, EdgarTools and Yahoo Finance MCP servers on the same questions, model and scoring, with every run and the caveats. - [The record](https://canlicapital.com/record): The ALPHAC paper-trading record, published daily, with the trials that failed. - [Vision](https://canlicapital.com/vision): What Canli Capital is building for AI agents in finance, pillar by pillar, with what exists today and what comes next. - [MCP downloads](https://canlicapital.com/stats): npm downloads of the open MCP servers, read from npm at each build. - [FilingFacts benchmark](https://canlicapital.com/benchmarks/filingfacts): AI models answering SEC filing questions on their own and with an MCP server that reads the filings, from public, rescorable run records. - [Methodology](https://canlicapital.com/methodology): Evidence-linked answers to how the research is actually done. - [How to validate a backtest](https://canlicapital.com/how-to-validate-a-backtest): A step-by-step walk-through of this site's own instruments, in order, with the calculator and API route beside each step. - [Status](https://canlicapital.com/performance): The honest numbers and what each one is and is not. - [Verify](https://canlicapital.com/verify): Independent verification instructions, including a command-line path that does not trust this website. - [Engineering](https://canlicapital.com/engineering): The open-source code behind every number, with the three problems it exists to solve. - [Tools](https://canlicapital.com/tools): Every interactive calculator in one index, source-bound to the same code the site's own numbers run through. ## Open source - [alphac](https://github.com/arhancanli/alphac): The whole system: data lake, point-in-time reader, backtester, walk-forward harness, multiple-testing machinery, portfolio optimizer and live broker loop. - [canli-pit-lake](https://github.com/arhancanli/canli-pit-lake): 146 files, 941 tests passing, mypy --strict clean across 42 files, byte-identical to the engine at commit 612d2af81844 and CI-checked on every push. - [canli-backtest](https://github.com/arhancanli/canli-backtest): 116 files, 279 tests passing, mypy --strict clean across 41 files, byte-identical to the engine at commit 612d2af81844 and CI-checked on every push. ## Engineering notes Post-mortems and derivations. These describe method and engineering; none is a performance claim. - [Was the winning strategy skill or luck?](https://canlicapital.com/notes/best-of-399-strategies): I ran 399 textbook trading strategies on the same prices and asked whether the winner was skill. The answer depended almost entirely on which test I used, because the tests were answering different questions, and only one of them was the question I meant. - [The arithmetic of not fooling yourself](https://canlicapital.com/notes/deflating-a-sharpe-ratio): A Sharpe ratio of 1.14 with a p-value of 0.017. Publishable, on the face of it. Whether it means anything depends entirely on a number that does not appear in it: how many things you tried before this one. - [The same SEC filing has two acceptance times](https://canlicapital.com/notes/edgar-acceptance-times): EDGAR's submissions API labels each filing's acceptance time as UTC. I checked 450 of them against the filing index pages: in 13 of 25 companies' files every time was late by one US Eastern offset, and the same filing read differently depending on which file it came from. - [The one symbol that explained the whole gap](https://canlicapital.com/notes/one-symbol): I could not reproduce my own result. The replay came out materially worse over the same window, on the same code path, from what I believed were the same inputs. The cause was a single delisted token that had quietly left the universe between the two runs. - [My agent dropped numbers when it copied data into a tool call](https://canlicapital.com/notes/pasted-data-lost-numbers): Same model, same question, same tool. With 756 daily returns pasted into the prompt, the agent got 4 of 9 runs right; when the tool read the same series from a file, it got 8 of 9, with about a quarter of the tokens. - [Seventy files that were never meant to be public](https://canlicapital.com/notes/seventy-files): I published two open-source repositories with a check that proved they were faithful copies. The check passed every time I ran it. It was structurally incapable of failing. - ["Silver price" returned US CPI](https://canlicapital.com/notes/silver-price-returned-cpi): A tool that turns plain words into a data series picked any series sharing half the words of the request. One generic word was enough, so "silver price" came back as consumer prices, with real numbers and no error. - [The split that ran backwards](https://canlicapital.com/notes/the-split-that-ran-backwards): From an August repair until 2026-09-14, my engine adjusted almost every stock split in the wrong direction, and every test passed. The data was right by its schema, the code was right by its tests, and the two disagreed about what one number meant. - [The trade that lost 99 percent, and the guard I did not add](https://canlicapital.com/notes/the-trade-that-lost-99-percent): A carry signal bought a token at 16.15 and closed it at 0.1553. The strategy was not broken. The interesting decision came afterwards, and it was to change nothing. - [What competitive programming actually bought me, and what it did not](https://canlicapital.com/notes/what-competitive-programming-bought): There are no segment trees in this trading engine. I want to explain why that is the right answer, and what the contest habit did pay for instead, because the honest version of this story is more useful than the flattering one. - [Your backtest beat a t-test. Would it beat a placebo?](https://canlicapital.com/notes/would-it-beat-a-placebo): In 300,000 simulated tests on markets with nothing to predict, a t-test on the best rule of a grid said "edge" between 10.9% and 78.9% of the time at a nominal 5%. A placebo test, which reruns the whole pipeline on the same returns in a random order, stayed between 4.6% and 5.5%. ## Machine interfaces - [Read API](https://canlicapital.com/developers): static JSON over the published record. Every response carries its sources with SHA-256 hashes, its claim class, and what it cannot be used to claim. - [Finance MCP servers](https://canlicapital.com/mcp-servers): compare the released hosted [validation](https://canlicapital.com/mcp-servers/validation), [SEC fundamentals](https://canlicapital.com/mcp-servers/fundamentals) and [research](https://canlicapital.com/mcp-servers/research) servers, with tool lists, examples, source commits and evidence limits. - [Local paper execution MCP workflow](https://canlicapital.com/mcp-servers/execution): private, Unreleased repository source for supplied sizing, pre-trade checks, signed journals and paper evidence. Explicit local writes; no broker connection or order placement. - [OpenAPI 3.1 document](https://canlicapital.com/api/v1/openapi): generated from the endpoints that exist, so it cannot document a route that does not. - [Discovery document](https://canlicapital.com/api/v1): every endpoint, with the limits of the API as a whole. - [canli.paper-evidence.v0](https://canlicapital.com/standards/paper-evidence): a proposed open standard for paper-trading evidence. Its required fields are the ones a performance claim usually omits, including a mandatory list of what the record does NOT establish. Schema, 12 conformance vectors and a zero-dependency validator are published; there are no independent implementations yet. - [MCP server](https://www.npmjs.com/package/canli-validation-mcp): `npx -y canli-validation-mcp`. Wraps the same validation API as callable tools for a coding agent: issue a free key, validate a Sharpe ratio or a backtest, fetch a receipt, check service status. - [GitHub Action](https://github.com/arhancanli/validate-backtest-action): `uses: arhancanli/validate-backtest-action@v0`. Runs the same validation API against a submitted return series inside CI, so a failing check can gate a merge. ## Evidence and corrections - [Corrections](https://canlicapital.com/progress): What was published, found wrong, and withdrawn. Read this before trusting any other page. - [Open data](https://canlicapital.com/open): The kill log, the signed hash chain and the glass-box artifacts. - [Trial accounting](https://canlicapital.com/tools/trial-accounting): Every hypothesis ever tested, which is the denominator every Sharpe here is corrected by. - [Deflated Sharpe calculator](https://canlicapital.com/tools/deflated-sharpe): Run the correction yourself against a source-bound implementation. - [Probability of backtest overfitting calculator](https://canlicapital.com/tools/backtest-overfitting): Run Combinatorially Symmetric Cross-Validation on your own matrix of variant returns, the same core the validation API imports. - [Execution Reality Lab](https://canlicapital.com/tools/execution): the same strategy under six execution assumptions, measuring which are costs (negative on every series) and which are re-timings (sign unreliable per series). Educational, synthetic. - [Breadth Lab](https://canlicapital.com/tools/breadth): closed-form arithmetic for what a book of N sleeves is worth, and the ceiling s/sqrt(rho) that no amount of breadth can pass. Educational, not a forecast. - [Selection Risk Lab](https://canlicapital.com/tools/selection-risk): Search a synthetic series that provably has no edge, and see your best result deflated against your own search. Educational; nothing generated there is evidence about any strategy. - [Evidence chain explorer](https://canlicapital.com/tools/evidence-chain): Verify the signed record in your browser. - [Review](https://canlicapital.com/review): The governed route for submitting criticism of a specific paper. ## Research The research corpus is 114 documents across 13 topics, including work that failed. Killed candidates are published with the same rigour as surviving ones. - [killed-candidates](https://canlicapital.com/research/topics/killed-candidates): Research topic index. - [literature-reviews](https://canlicapital.com/research/topics/literature-reviews): Research topic index. - [feasibility-protocols](https://canlicapital.com/research/topics/feasibility-protocols): Research topic index. - [engineering-foundations](https://canlicapital.com/research/topics/engineering-foundations): Research topic index. - [equities](https://canlicapital.com/research/topics/equities): Research topic index. - [crypto](https://canlicapital.com/research/topics/crypto): Research topic index. - [options-and-volatility](https://canlicapital.com/research/topics/options-and-volatility): Research topic index. - [rates-and-treasuries](https://canlicapital.com/research/topics/rates-and-treasuries): Research topic index. - [credit](https://canlicapital.com/research/topics/credit): Research topic index. - [commodities](https://canlicapital.com/research/topics/commodities): Research topic index. - [event-driven](https://canlicapital.com/research/topics/event-driven): Research topic index. - [macro-surprise](https://canlicapital.com/research/topics/macro-surprise): Research topic index. - [execution-and-market-structure](https://canlicapital.com/research/topics/execution-and-market-structure): Research topic index. ## Machine-readable - [Sitemap](https://canlicapital.com/sitemap.xml): all 348 indexable routes. - [Full text](https://canlicapital.com/llms-full.txt): every research document, engineering note and paper abstract concatenated into one file, so a model can read the whole corpus without sampling it. - [Paper state](https://canlicapital.com/paper-state.json): the live record as JSON, the source every page renders from. - [Research index](https://canlicapital.com/research-index.json): 114 documents with citation metadata. - [Engineering manifest](https://canlicapital.com/glassbox/engineering_open_source.json): repository counts, derived from what each repository publishes. - 89 measurement pages and 2 trial pages carry schema.org Dataset metadata. ## Authorship Arhan Canli is the founder, named author and accountable human for methodology, claims, corrections and publication decisions. Profile: https://canlicapital.com/founder. Code: https://github.com/arhancanli. Ownership, research decisions and published claims are his. --- ============================================================================== FULL TEXT: 11 ENGINEERING NOTES, THEN THE RESEARCH CORPUS ============================================================================== ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/best-of-399-strategies ------------------------------------------------------------------------------ # Was the winning strategy skill or luck? > I ran 399 textbook trading strategies on the same prices and asked whether the winner was skill. > The answer depended almost entirely on which test I used, because the tests were answering > different questions, and only one of them was the question I meant. **Published 2026-10-11. Every figure below is read from [`sleeve-tournament-2026-10-08.json`](/glassbox/sleeve-tournament-2026-10-08.json), a run that reproduces the version of this study first posted on 2026-10-08, number for number.** ## The setup The 399 strategies are textbook ideas, each with its usual parameters on a plain grid: moving-average crossovers, time-series momentum with and without volatility targeting, channel breakouts and MACD, z-score and RSI reversion, cross-sectional and dual momentum, risk parity, minimum variance and low volatility, short-term reversal, trend-filtered allocation, 52-week-high momentum and pairs. None was picked because it backtested well; every one is a fixed rule. They ran on two generated markets of 5 assets and 1,000 days, so the truth is known: - **Trend:** the first asset has planted trends. Its daily drift flips sign every 125 days, so trend-following has a real edge on it. - **No edge:** the same kind of market with nothing planted. Nothing should beat holding the assets. Every strategy is scored on the same 495-day window, after the longest warm-up of 504 days, with trades costing 5 basis points. ## What each test said | | Trend | No edge | |---|---|---| | Best strategy's Sharpe | 4.07 | 1.95 | | Sharpe the best of 399 would reach by luck alone | 6.21 | 2.34 | | Deflated Sharpe probability, counting all 399 tries | 0.001 | 0.29 | | Effective number of independent strategies | 4.0 | 3.5 | | Deflated Sharpe probability, counting those | 0.996 | 0.954 | | White's Reality Check p-value (beats buy-and-hold?) | 0.011 | 0.434 | | Hansen SPA p-value, re-studentized | 0.017 | 0.347 | | Strategies Romano-Wolf StepM says beat buy-and-hold | 4 | 0 | | Probability of backtest overfitting (CSCV) | 0.24 | 0.76 | **Counting all 399 tries rejected the real edge.** On the trend market the best Sharpe, 4.07, is below the 6.21 that the best of 399 independent skill-less strategies would reach, so the deflated Sharpe ratio says luck (0.001). But these strategies are not independent: most are near-copies of each other, and their returns behave like about four independent bets. Counted that way the same result passes easily (0.996). **Counting four tries passed the no-edge winner.** On the no-edge market the effective count gives 0.954, just over the usual 0.95 bar, with no edge to find. The deflated Sharpe ratio tests whether the Sharpe ratio is above zero, and in a market that drifts upward a long-only strategy's Sharpe really is above zero: it just holds the market. The question that mattered was whether it beats holding the market, and the Reality Check, SPA and StepM answer that one: no (0.434 and 0.347, and no survivors). **The overfitting probability moved the right way on both.** CSCV splits the history into halves many ways, picks the in-sample winner and checks where it ranks out of sample. On the trend market the winner landed below the median out of sample 24% of the time; on the no-edge market, 76%, worse than picking at random. ## What picking the winners was worth The selection process itself can be tested: every 63 days, rank the strategies by trailing one-year Sharpe, hold the top five for the next 63 days, and repeat. - **Trend:** the picks averaged a Sharpe of 4.69 in sample and 3.76 out of sample. They kept most of their edge. - **No edge:** 2.81 in sample and 1.29 out of sample, below simply holding all 399 strategies equally (1.90) and below buy-and-hold (1.90). The gap between the in-sample and out-of-sample Sharpe is roughly how much of the picks' Sharpe was luck. ## What I do now 1. **Report the deflated Sharpe under both counts.** The raw count is the conservative bound and the effective count the optimistic one. A result that passes only the optimistic one is not proven. 2. **Ask the benchmark question separately.** For a long-only strategy in a rising market, "Sharpe above zero" is nearly free; the Reality Check, SPA and StepM against buy-and-hold ask whether it beats doing nothing clever. 3. **Test the picking, not just the pick.** A walk-forward over the selection rule shows how much edge survives once you cannot see the future. The tournament, the walk-forward and the 399 strategy definitions are tools in [canli-mcp](/mcp-servers), which runs them locally on the prices you send. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/deflating-a-sharpe-ratio ------------------------------------------------------------------------------ # The arithmetic of not fooling yourself > A Sharpe ratio of 1.14 with a p-value of 0.017. Publishable, on the face of it. Whether it > means anything depends entirely on a number that does not appear in it: how many things you > tried before this one. **Published 2026-08-27. Every figure below is printed by [`benchmarks/validation_throughput.py`](https://github.com/arhancanli/canli-backtest/blob/main/benchmarks/validation_throughput.py) in `canli-backtest`. Run it and you get these numbers.** ## The problem, stated precisely Take a strategy with 1,260 daily returns, about five years. It has an annualised Sharpe ratio of **+1.139**. The first correction anyone should apply is for sample size and shape. A Sharpe estimated from 1,260 observations is a random variable, and returns are not Gaussian. Bailey and Lopez de Prado's **Probabilistic Sharpe Ratio** does this. For an observed per-period Sharpe `SR` against a benchmark `SR*`, over `T` observations, with sample skewness `g3` and non-excess sample kurtosis `g4`: ``` PSR(SR*) = Phi(z) (SR - SR*) * sqrt(T - 1) z = ----------------------------------------- sqrt( 1 - g3*SR + ((g4 - 1)/4)*SR^2 ) ``` `Phi` is the standard normal CDF. Against `SR* = 0`, our series gives **PSR = 0.9828**. Read naively: a 98.3 percent chance the true Sharpe exceeds zero. Under 2 percent chance this is noise. That number is correct and it is close to useless, because it answers the question "is this one series distinguishable from zero" when the question that matters is "is the *best of everything I tried* distinguishable from zero." ## Why the benchmark must not be zero If you run `N` strategy variants that genuinely have no edge, their estimated Sharpe ratios still scatter. The maximum of `N` draws from that scatter is not zero. It is a positive number that grows with `N`, and it grows whether or not any variant has an edge. So the honest benchmark is not zero. It is the Sharpe that the *luckiest of N nothing-strategies* would be expected to produce. Using the expected maximum of `N` draws with cross-trial Sharpe variance `V[SR]`: ``` SR* = sqrt(V[SR]) * ( (1 - g) * Q(1 - 1/N) + g * Q(1 - 1/(N*e)) ) Q = Phi^-1, the normal quantile function g = 0.5772156649, the Euler-Mascheroni constant e = exp(1) ``` ## What is a deflated Sharpe ratio The **Deflated Sharpe Ratio** is simply the PSR evaluated against that benchmark instead of zero: `DSR = PSR(SR*)`. ## How many trials did you run? One return series. Unchanged. The only thing that moves is how many trials you admit to, against a trial family whose per-period Sharpes scatter with standard deviation 0.02: | trials `N` | expected max Sharpe `SR*` | DSR | |---:|---:|---:| | 2 | 0.01040 | **0.9596** | | 10 | 0.03149 | 0.8408 | | 50 | 0.04553 | 0.6914 | | 200 | 0.05531 | 0.5608 | | 1000 | 0.06510 | 0.4230 | Nothing about the strategy changed between the first row and the last. No new data arrived. No parameter moved. This project's deployment gate is `DSR >= 0.95`, so read against that gate, the same Sharpe of 1.14 is **admissible if you tried two things and inadmissible if you tried ten**. That is the entire argument for a trial ledger. The denominator is not paperwork. It is half of the result. ## The trap I fell into while writing this The first version of this note, and the README that shipped with the repository, used `sr_trials_variance = 0.04` and reported that the same Sharpe deflates to **0.000** at 200 trials. I published that. It is wrong, and the way it is wrong is more instructive than the correct version. `V[SR]` is the variance of Sharpe *across the trial family*, in the same **per-period** units as the series. Our series has a per-period Sharpe of 0.0385. A variance of 0.04 is a standard deviation of 0.2, roughly twenty times the thing being measured. At that scale `SR*` already exceeds the observed Sharpe at `N = 2`, so the deflated ratio collapses immediately and stays collapsed. The trial count changes nothing. So the sentence "it deflates to zero once you count 200 trials" credited the trial count for work the variance parameter was doing. The arithmetic was right. The attribution was wrong. And it was wrong in the specific direction that flatters the argument. I was using the example to say *counting your trials is what separates an edge from luck*, and I demonstrated it with a parameter setting under which the trial count is irrelevant. A reader who checked would have found a worked example that argues against its own thesis while appearing to confirm it. The retraction is in the repository README, and the withdrawn 0.000 is still quoted inside it, because a number you cannot search for is a number nobody can check. **The general form of the mistake: a unit error in a parameter that is not the subject of the sentence.** Nothing checks it. The types agree, the function returns, the value is plausible, and the conclusion is unaffected in direction so it never looks wrong. The only defence I know is to sweep the parameter you claim is driving the result and confirm it actually drives it. If the answer barely moves across the sweep, your headline is about something else. ## The second instrument: does the winner survive? Deflation asks whether one Sharpe survives the search that produced it. **Probability of Backtest Overfitting** asks a sharper question: does in-sample rank predict out-of-sample rank at all? Combinatorially Symmetric Cross-Validation (Bailey, Borwein, Lopez de Prado, Zhu, 2017). Given a `T x N` matrix of per-period returns, one column per configuration: 1. Split the `T` rows into `S` contiguous equal blocks (`S` even, default 16). Drop the remainder so every block is exactly `T // S` rows. 2. For each way of choosing `S/2` blocks as in-sample, form the IS matrix from those and the OOS matrix from the complement. That is `C(16, 8) = 12,870` splits; the implementation samples 5,000 of them with a fixed seed rather than enumerating all. 3. Take the in-sample winner `n* = argmax_n SR_IS(n)`. 4. Find `n*`'s rank among all `N` configurations **out of sample**, ranked ascending, and take the logit of its relative rank. PBO is the fraction of splits where the in-sample winner lands in the bottom half out of sample. The test in the benchmark runs it on **100 configurations of pure noise**, so the in-sample winner is always luck by construction. A correct implementation must return approximately 0.5. It returns **0.569**. That number is doing double duty. It is a performance measurement and it is a correctness assertion, in the same run. If the implementation ever started finding structure in noise, that figure would move before the timing did, and a benchmark that only measured speed would stay green while computing nonsense. ## What it costs PBO over 2,000 observations and 100 configurations, 5,000 sampled splits: **1.6 seconds**. A deflated Sharpe on 1,260 daily returns: about **300 microseconds**. The point is not that these are fast. It is that at 300 microseconds there is no resource argument for running the honest test only on the candidate you already like. The reason people skip it is not compute. ## Three rules I would keep 1. **The benchmark is never zero.** If you selected the thing you are testing, the null it must beat is the best of what you searched. 2. **Sweep the parameter you are crediting.** If the conclusion does not move across it, the conclusion is about something else, and you are about to publish a confident misattribution. 3. **Make the benchmark assert behaviour.** A correctness check that runs on every performance run is nearly free and catches the class of bug where the answer is fast and wrong. *Implementation: [`dsr.py`](https://github.com/arhancanli/canli-backtest/blob/main/src/alphaforge/validation/dsr.py) and [`pbo.py`](https://github.com/arhancanli/canli-backtest/blob/main/src/alphaforge/validation/pbo.py). Both are byte-identical to the engine that produces the public record, and CI proves it on every push. You can also run the deflation in the browser on [the calculator](/tools/deflated-sharpe), or watch it happen to you in [the Selection Risk Lab](/tools/selection-risk), which lets you search a series that provably has no edge and then deflates whatever you find against your own search.* ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/edgar-acceptance-times ------------------------------------------------------------------------------ # The same SEC filing has two acceptance times > EDGAR's submissions API labels each filing's acceptance time as UTC. I checked 450 of them > against the filing index pages: in 13 of 25 companies' files every time was late by one US > Eastern offset, and the same filing read differently depending on which file it came from. **Published 2026-10-11. Every figure below is read from [`edgar-acceptance-times-2026-10-11.json`](/glassbox/edgar-acceptance-times-2026-10-11.json), which holds all 450 measured filings, the per-file results and the checks quoted here.** ## Why the time of day matters Each filing in `data.sec.gov/submissions/CIK##########.json` carries an `acceptanceDateTime` such as `2026-07-14T14:30:38.000Z`. The trailing `Z` says UTC. Whether a results release came out before the open or after the close, which trading day an insider purchase belongs to, and an event study's day 0 all depend on that time. ## What I measured On 2026-10-11 I took 25 companies' submissions files: the 12 newest filings in each, plus 6 accepted in December, January or February to cover standard time. That is 450 filings across 34 form types, 98 filing agents and the years 2024 to 2026. For each one I compared `acceptanceDateTime` with the "Accepted" time printed on the filing's index page (`{accession}-index.htm`). That page is in US Eastern time and matches the filing's own SGML header, so converting it with the New York rules gives the true moment. ## What I found **Each file was either right for every filing in it, or late by exactly one Eastern offset for every filing in it:** 4 hours for filings accepted in daylight time, 5 hours in standard time. No other difference appeared, whatever the form, the filing agent or the time of day. Of the 450 filings, 216 were right and 234 were late. - **Right:** MSFT, GOOGL, XOM, PFE, KO, TSLA, NFLX, INTC, GE, F, O and SPY. - **Late by one offset:** AAPL, NVDA, AMZN, META, JPM, BAC, WMT, BRK, TSM, GME, PLTR, MRNA and Vanguard. So JPMorgan's results 8-K of 2026-07-14, accepted at 06:30:38 Eastern (10:30:38 UTC), reads `2026-07-14T14:30:38.000Z` in its file: after the open instead of before it. **The same filing reads differently in two files.** A Form 4 sits in both the company's file and the insider's own. Apple's director Form 4s of 2026-02-26 are a clean example: | Accession | Apple's file | Director's file | Index page (Eastern) | |---|---|---|---| | 0001059235-26-000004 | 2026-02-27T04:34:19Z | 2026-02-26T23:34:19Z | 2026-02-26 18:34:19 | | 0001216519-26-000004 | 2026-02-27T04:33:49Z | 2026-02-26T23:33:49Z | 2026-02-26 18:33:49 | The directors' files are right. Apple's file is 5 hours late, because February is standard time. **The split follows each file's newest filing.** Every file whose newest filing was accepted on or before 2026-10-02 18:13:44 Eastern was right. Every file whose newest filing was accepted on or after 2026-10-05 19:17:25 Eastern was late, including its filings from February. My reading is that files rebuilt since early October are written with the extra offset. The API sends no Last-Modified header, so I cannot see rebuild times, and that remains a hypothesis rather than a finding. I was not the first to notice. An edgartools issue ([dgunning/edgartools#1501](https://github.com/dgunning/edgartools/issues/1501)) reported Apple four hours late and, a day earlier, some files that gave Eastern time labelled as UTC. I added these measurements there. ## How to correct it Read the time from the index page or the SGML header whenever it matters. That costs one request per filing. Because a file is uniform, one request per file is enough. Measure the file's error on one filing, then correct every other time in it: ```python from datetime import datetime, timedelta from zoneinfo import ZoneInfo ET = ZoneInfo("America/New_York") def file_shift(api_iso, accepted_et): """A submissions file's error in Eastern offsets (-1, 0 or 1), from one filing's index-page time.""" api = datetime.fromisoformat(api_iso.replace("Z", "+00:00")) true = datetime.strptime(accepted_et, "%Y-%m-%d %H:%M:%S").replace(tzinfo=ET) k = (api - true) / -true.utcoffset() # the offset is 4 h (EDT) or 5 h (EST) if k not in (-1, 0, 1): raise ValueError(f"unexpected shift {k}") return int(k) def corrected(api_iso, k): """The true acceptance time of any filing in a file whose shift is k.""" api = datetime.fromisoformat(api_iso.replace("Z", "+00:00")) if k == 0: return api for h in (4, 5): t = api - k * timedelta(hours=h) if -t.astimezone(ET).utcoffset() == timedelta(hours=h): return t ``` Calibrate on two filings from different seasons, and read every filing from its own index page if the two disagree. Recalibrate whenever the file is downloaded again, because a rebuild can change it. ## Where it bit us In [canli-mcp](/mcp-servers), the new `earnings_calendar` tool already read times from the index pages. The released `event_study` did not: it used `acceptanceDateTime` to decide whether a filing came before or after the 16:00 close. With the files as they are today the damage is small, because only afternoon filings move to the next day. Since 2025 that is 1 of 31 JPMorgan 8-Ks, none of 21 NVIDIA 8-Ks and none of 55 NVIDIA insider sales. A file that gives Eastern time labelled as UTC would be worse: every results release after the close would land on its own day. `event_study` now calibrates each file this way, with two extra requests, and says in its result which it did. Both changes ship in the next release. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/one-symbol ------------------------------------------------------------------------------ # The one symbol that explained the whole gap > I could not reproduce my own result. The replay came out materially worse over the same > window, on the same code path, from what I believed were the same inputs. The cause was a > single delisted token that had quietly left the universe between the two runs. **Published 2026-08-28. Every figure below is read from [`crypto_carry_replay_correction.json`](/glassbox/crypto_carry_replay_correction.json), the artifact the engine wrote when the incident was diagnosed.** ## What happened On 2026-06-20 a crypto carry strategy produced a walk-forward result that was sealed and recorded. On 2026-08-23 I replayed the same configuration to rebuild its publication bundle. The two runs disagreed: | field in the artifact | replay | delta against the sealed run | |---|---|---| | `sharpe` | 0.10652337594597801 | **-0.5700870051401173** | | `cagr` | 0.00763704456570391 | -0.07034159710175314 | | `final_equity` | 103335.15565193011 | -34901.10954384602 | | `funding_net` | 14668.27528924918 | -4831.74452633956 | Those are copied from the file rather than rounded for the page, because rounding is a transformation and a reader checking this note against the artifact should not have to guess which one I applied. `cagr` is a fraction, so that delta is roughly seven percentage points of annual return. The same strategy, over the same window, on the same code path, came out with a Sharpe Sharpe delta of **-0.5700870051401173** against the run recorded and sealed two months earlier. The temptation at this point is enormous and it has a name: you assume the new number is the broken one, find something that looks like a bug in the replay path, fix it, and watch the old number come back. That process terminates when the answer is comfortable, which is not the same as when it is right. ## Where the divergence starts The equity paths agree to eight decimal places on the first row. On the **second** row they part: ``` source_equity 100088.91980262648 replay_equity 100088.83227235998 delta -0.0875302665 ``` Eight and three quarter cents, on a hundred-thousand-dollar book, at the very first rebalance. That is not a rounding artefact and it is not a cascade of small differences; it is the first decision the two runs made differently, and everything after it is downstream. So the question stops being "why is the Sharpe different" and becomes "what did these two runs see differently at the first rebalance." That is a much smaller question, and it has an exact answer. ## Twenty-two, not twenty-one The historical run made its first decision across a cross-section of **22 instruments**. The replay saw **21**. ``` source_cross_section_size 22 replay_cross_section_size 21 source_only ["BINANCE:PERP:EOSUSDT"] ``` EOS. One perpetual future, present in the June cross-section and absent from the August one, because the derived universe snapshot is rebuilt from current exchange metadata and EOS is no longer in it. Restoring EOS to the cross-section reproduces **all ten** historical discretized quantities exactly. Not approximately: exactly. The artifact records that finding as `EXACTLY_ATTRIBUTED`, which is a status a diagnostic only earns when the residual is zero. One symbol out of twenty-two, a symbol the strategy did not even hold with conviction, changed the sizing of every position in the book, because sizing is cross-sectional. Ranking twenty-two things and ranking twenty-one things produces different weights for all of them. ## The part that is actually the lesson The bug is not EOS. The bug is that the June artifact **sealed its outputs and its parameters and did not seal its inputs.** It recorded what the strategy was configured to do and what it produced. It did not record the exact derived universe membership or the instrument metadata that the run consumed. Those live in a table that is rebuilt from the exchange, and the exchange changes. The consequence is worse than a wrong number, and this is the sentence worth taking away: > Because the historical run omitted its exact code and derived-input snapshots, **no unique > additive split among causes exists from the surviving two paths.** Two causes are confirmed: the unbound universe, and a realized-volatility overlay that differs between the implementations, which bound 71 rebalances. But there is no way, from the evidence that survives, to say how many Sharpe points belong to each. The information required to answer that was never written down, and it cannot be recovered by being clever now. The question is not hard. It is **unidentifiable**. That is the failure mode worth designing against. A wrong result can be corrected. A result whose causes can never be separated is permanently ambiguous, and no amount of later analysis fixes it. ## What a sealed run has to contain The obvious lesson, "snapshot your inputs", is not quite right, because it does not say which inputs, and "all of them" is not implementable. The sharper version is: **Seal everything the run could have read that something else could change.** Not the market data, which is immutable once it exists. The *derived* tables: universe membership, instrument metadata, quality flags, corporate-action state. Anything rebuilt from a live source is mutable by definition, and anything mutable that a decision reads must be pinned at decision time or the decision is not reproducible. The remediation recorded in the artifact is a control that runs before any persisted walk-forward result is written, and it is prospective only: > Keep the enforced prospective snapshot control mandatory for every persisted walk-forward > result; **never treat it as retroactive historical evidence.** That second clause is the one that costs something. The control cannot repair June. Runs made before it existed stay unreproducible, and the honest thing is to say so beside them rather than to quietly re-run them under the new regime and present the output as though it had always been there. ## What this cost The trial ledger records this incident as: ``` new_trials 0 new_return_hypotheses 0 classification REPRODUCIBILITY_CORRECTION_AND_CAUSAL_DIAGNOSTIC_ONLY ``` Zero. Diagnosing a reproducibility failure is not a search for a result, so it spends no trial budget, but the family it belongs to is `NO-DEPLOY` and external submission stays blocked until the corrected bundle is rebuilt from a sealed snapshot. The status on the record is `OPEN_CORRECTION_EXTERNAL_SUBMISSION_BLOCKED`. It has been open since 2026-08-23. It is open now, on this page, because that is what the record says. ## The general shape This is a class of bug rather than an incident, and it appears wherever a decision reads a table somebody else maintains: - A **feature store** rebuilt nightly, where a backfill changes what a model saw in training. - A **currency or symbol mapping** that gets corrected upstream, silently re-pointing history. - A **quality flag** applied retroactively, so a bar that was clean at decision time is dirty in the replay. - Any **`SELECT` against a live table** inside something you intend to reproduce later. The tell is always the same and it is easy to check: if your artifact records what came out but not what went in, you have a result you cannot defend. It will look fine until the day you try to rebuild it, and by then the inputs are gone. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/pasted-data-lost-numbers ------------------------------------------------------------------------------ # My agent dropped numbers when it copied data into a tool call > Same model, same question, same tool. With 756 daily returns pasted into the prompt, the agent > got 4 of 9 runs right; when the tool read the same series from a file, it got 8 of 9, with about > a quarter of the tokens. **Short title:** Pasted data lost numbers in tool calls **Published 2026-10-11. Every figure below is read from [`audit-file-experiment-2026-09-26.json`](/glassbox/audit-file-experiment-2026-09-26.json), which holds every run of the experiment, first published on 2026-09-26 with its records in [the repository](https://github.com/arhancanli/canlicapital/tree/main/mcp/bench/agent/experiments/2026-09-26-audit-file).** ## The setup The validation tools that are now part of [canli-mcp](/mcp-servers) check backtests: given a strategy's daily returns, they say, among other things, how long a track record has to be before its Sharpe ratio means anything. This experiment ran them as canli-validation-mcp 0.5.0. The obvious way to use them is to paste the returns into the chat and let the agent pass them on. That turned out to be the worst way. Three questions each needed the whole audit chain, for example: how many years of track record does this return series need before its Sharpe beats a bar at 95% confidence? The series had 504, 756 and 400 daily returns. Each question was asked 3 times of the same model (gpt-5.4-mini), so each arm has 9 runs. The ground truth is the same local computation the tools run, and an answer counts as right within 2 percent. - **Validators only, returns pasted:** the server before the one-call audit tool existed, so the agent had to chain several validators itself. - **Audit tool, returns pasted:** the series sits in the prompt as a JSON array, and the agent copies it into the tool call. - **Audit tool, file path:** the series is in a CSV, the prompt names the file, and the tool reads it. ## The result | Arm | Right | Median tokens per task | Median time per task | |---|---|---|---| | Validators only, pasted | 0 of 9 | 11,180 | 2,434 ms | | Audit tool, pasted | 4 of 9 | 27,036 | 10,046 ms | | Audit tool, file path | 8 of 9 | 6,524 | 2,374 ms | Moving the data out of the prompt doubled the accuracy and cut the median tokens to about a quarter. ## How the pasted runs failed On the 756-return question, all three pasted runs gave the same wrong answer: 0.1718 years instead of 0.1452. That is not three different mistakes but one, three times, which is what values going missing on the way into the call looks like. The model re-types 756 numbers as output tokens, skips some, and the tool computes the right answer for the wrong series. Nothing errors, and the agent reports the figure with full confidence. Pasting also costs twice: every number is paid for as input in the prompt and again as output when the model writes the call. One pasted run used 76,930 tokens for a single question. The one miss in the file arm was different. The agent answered 388, the right length in observations (1.54 years at 252 trading days), where years were asked. That is a unit slip, not lost data. ## What changed - The audit tool takes `returns_file`, a path to a CSV, on the local server. It reads numbers only, caps the file size, and reports errors by row position, never by echoing the file back into the context. - The tool descriptions say plainly that a long series should go in as a file. - The hosted version cannot read your disk, so it refuses file input instead of pretending. This was one small model on synthetic series, 9 runs per arm, so read it as "this failure is real and easy to hit", not as a fixed rate. The general lesson holds beyond this tool: if a tool needs a lot of data, do not make the model carry it. Pass a reference, such as a path, an ID or a URL, and let the tool fetch it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/seventy-files ------------------------------------------------------------------------------ # Seventy files that were never meant to be public > I published two open-source repositories with a check that proved they were faithful copies. > The check passed every time I ran it. It was structurally incapable of failing. **Published 2026-08-27. Reproducible: the fix is in `canli-pit-lake` and `canli-backtest`, and the incident is described in both READMEs rather than only here.** ## The setup The research engine is a single repository of about 1,700 tracked files. Two parts of it are worth reading on their own: the point-in-time data layer, and the backtester with its multiple-testing machinery. So I extracted each into its own repository. An extraction has an obvious failure mode. It drifts. Six months later the "published" copy is a fork with different behaviour, and every claim made about it is stale. The usual answer is discipline, which is not an answer. So I wrote a mechanical one. Every extracted file's SHA-256 is recorded at extraction time in `extraction_manifest.json`. A tool, `check_parity.py`, re-reads each file from the engine and fails if a single byte differs. It runs in CI on every push. I mutation-tested it three ways before trusting it: - corrupt a source file, expect red; - tamper with a hash in the manifest, expect red; - delete a shipped file, expect red. All three turned it red. All three passed the restore. I considered the check earned. ## The bug The extractor read the engine's **working directory**. A working directory is a superset of what a repository publishes. It holds build output, scratch files, local caches, and in this case 312 megabytes of research artifacts under `artifacts/`, a path the engine's `.gitignore` excludes wholesale. About ten files under that path are force-added as deliberate exceptions. The rest are private by design. Some tests in the extracted suite read those artifacts. So the extractor copied them in, to make the tests pass. Seventy files that the engine had specifically chosen not to publish were pushed to a public repository, and the suite went green. ## Why the check could not catch it Here is the part worth the note. Running the parity tool locally looks like this: ``` ALPHAC_PATH=~/alphaforge python tools/check_parity.py ``` It compares each shipped file against the engine on disk. The leaked files came **from** the engine on disk. So the tool compared them against their own source and found them identical, which they were. It reported `OK: all 187 files are byte-identical to the engine` and it was telling the truth. It was answering a question I had not asked. The question I thought I was asking was "is this the same code the world can see?" The question I was actually asking was "is this the same code as the folder I copied it from?" Those differ by exactly the set of files the engine does not publish, which is exactly the set that leaked. The tool has a second mode that fetches from GitHub at a pinned commit. First run: ``` MISSING IN ENGINE artifacts/probe/tom_diversifier/result.json ``` Seventy of them. My three mutation tests were all mutations of the **local copy**. Every one of them was detectable by comparing a file to itself after changing it. Not one of them perturbed the *source of truth*, so not one of them could have discovered that the source of truth was the wrong document. ## The fix Two changes, and only one of them is the obvious one. The obvious one: the extractor now builds its allowed set from `git ls-files` in the engine. Support files that are not tracked are skipped and the count is reported. Source modules that are not tracked raise, because a module the engine does not publish has no business being in a published extraction, and silently dropping it would produce a repository that imports something nobody can read. The one that matters more: the parity check in CI runs against **GitHub**, not against a local checkout. The local mode still exists because it is fast and useful while working, but it is no longer the thing that certifies the claim. A check and the thing it validates must not share a source. The seventy files were removed by rebuilding the repository's history, so they were public for about twenty minutes and are not in any commit. I verified the removal by fetching the paths from `raw.githubusercontent.com` and confirming 404 against a control file returning 200, rather than by looking at my own working copy, which is the mistake that started this. ## The general shape I have hit this three times now in different clothes, and it always looks like competence: - a coverage gate that reads the artifact its own job produced; - a staleness check whose freshness timestamp is written by the process being checked; - a parity check pointed at the folder it copied from. The tell is that the check and its subject have the same parent. When a gate passes on the first try and keeps passing, the useful question is not "is the code correct" but **"what would have to be true for this check to fail, and can that state actually occur?"** If you cannot name a reachable failing state, you do not have a check. You have a screenshot. The corollary for mutation testing, which I had thought I was doing properly: perturbing the artifact under test is necessary and not sufficient. You have to perturb the **oracle** too. If your test suite cannot tell the difference between a correct oracle and a convenient one, its green is worth nothing. *The extraction rule and the remote parity check are live in [canli-pit-lake](https://github.com/arhancanli/canli-pit-lake) and [canli-backtest](https://github.com/arhancanli/canli-backtest). Both READMEs describe this incident, because a repository that only documents its successes is a brochure.* ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/silver-price-returned-cpi ------------------------------------------------------------------------------ # "Silver price" returned US CPI > A tool that turns plain words into a data series picked any series sharing half the words of the > request. One generic word was enough, so "silver price" came back as consumer prices, with real > numbers and no error. **Published 2026-10-11. The before-and-after results are read from [`series-lookup-2026-10-11.json`](/glassbox/series-lookup-2026-10-11.json), produced by running both versions of the lookup on the same requests.** ## The bug Agents rarely pass the exact identifier a data source wants. They pass words: "10 year treasury yield", "core inflation", "silver price". So most tools that wrap a data source carry a small resolver from words to an identifier. In canli-markets-mcp 0.1.0, `economic_series` took a FRED series ID or plain words. The plain-word path scored each of its 47 common series by the share of the request's words found in the series description, and took the best one if at least half matched: ```js const words = s.toLowerCase().match(/[a-z0-9&]+/g) ?? []; const scored = COMMON_SERIES .map(([id, text]) => [id, words.filter((w) => text.split(" ").includes(w)).length / words.length]) .sort((a, b) => b[1] - a[1]); if (!scored.length || scored[0][1] < 0.5) throw new NotFound(/* ... */); return { id: scored[0][0] }; ``` A request of two words needs only one shared word to reach half. The consumer price index is described as "cpi consumer price index inflation all items", so "price" alone was enough: | Request | 0.1.0 returned | Now | |---|---|---| | silver price | CPIAUCSL (US consumer prices) | refused, pointing to `price_history` | | copper price | CPIAUCSL | refused | | bitcoin price | CPIAUCSL | refused | | japan inflation | CPIAUCSL | refused, pointing to `world_economy` | | uk unemployment rate | UNRATE (US unemployment) | refused | | wage growth | A191RL1Q225SBEA (real GDP growth) | CES0500000003 (average hourly earnings) | | house prices | refused | CSUSHPINSA (Case-Shiller home prices) | | inflation | CPIAUCSL | CPIAUCSL | | 10 year treasury yield | DGS10 | DGS10 | Every wrong answer came back as a real series with real numbers. The result did carry the series title, so the mistake was there for anyone who read it. Nothing made an agent read it. The words that decide each question ("silver", "japan", "uk") are the ones that matched nothing. The words that did match ("price", "inflation", "rate") say what kind of number is wanted, not which one. ## The rule that replaced it One function now serves three resolvers: FRED series, World Bank indicators and OECD outlook measures. Each word of a request falls into one of three groups: - **Filler** is ignored: "what is", "show me", "since", "this year", and four-digit years. - **Kind words** say what sort of number: rate, growth, index, level, daily, monthly. They count toward the best match but are never required. - **Specific words** are everything else, and every one of them must appear in the entry. ```js export function matchWords(entries, textOf, request, vocab) { const asked = split(request).filter((w) => !vocab.filler.has(w) && !/^(1[89]|20)\d\d$/.test(w) && !/^[a-z]$/.test(w)); const specific = asked.filter((w) => !vocab.kind.has(w)); if (!specific.length) return null; let best = null, most = 0; for (const entry of entries) { const has = new Set(split(textOf(entry))); if (!specific.every((w) => has.has(w))) continue; const shared = asked.filter((w) => has.has(w)).length; if (shared > most) { best = entry; most = shared; } } return best; } ``` When nothing qualifies, the tool says so and says where to look: another country's economy is in `world_economy` or `economic_outlook`, and the price of a commodity, currency, crypto or stock is in `price_history`. An agent that gets that refusal can call the right tool next. An agent that got consumer prices had nothing telling it to. ## Test the refusals first The old tests checked that good requests found their series, and they all passed. None asked whether a request for something the tool does not have gets refused. The test file now opens with 9 requests that must be refused, then 42 plain requests that must each resolve to one exact series. The list of common series grew to 73 at the same time. A resolver from words to identifiers is a search engine that returns one result. It needs a way to return none, and the tests that prove it can are the ones to write first. The code is in `mcp-markets/src/words.mjs` in the [canlicapital repository](https://github.com/arhancanli/canlicapital), and the tool is part of [canli-mcp](/mcp-servers). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/the-split-that-ran-backwards ------------------------------------------------------------------------------ # The split that ran backwards > From an August repair until 2026-09-14, my engine adjusted almost every stock split in the > wrong direction, and every test passed. The data was right by its schema, the code was right by > its tests, and the two disagreed about what one number meant. **Published 2026-09-25. Every figure below is read from [`split_direction_before_after.json`](/glassbox/split_direction_before_after.json), which runs the same audit over the same stored splits twice: once through the price-adjustment code exactly as it was before the fix, loaded from git and hashed, and once through the code as it is now.** **Sources:** split_direction_before_after.json ## What a split does to a price series On 2020-08-31 Apple split four-for-one. The closing price went from 499.23 to 129.04 overnight. Nothing happened to the company. Each old share simply became four new ones. A backtest that reads raw prices sees a crash on that day. So every research engine adjusts: the prices before the split are divided by the split factor, which puts the whole history in today's share terms, and the ex-date becomes an ordinary day. Apple's adjusted close the day before the split should be 124.81, a normal step down to 129.04. ## What mine did instead My data lakes store a split the way the data vendors publish it: new shares per old share. Apple's split is stored as 4. The adjustment code multiplied the pre-split prices by that number instead of dividing by it. Apple's adjusted close the day before the split came out at 1,996.92. To anything reading the adjusted series, Apple fell by more than nine tenths in one day. It was not one bad row. The audit classifies a split as DOUBLED when the adjusted jump on the ex-date is twice the raw jump, which is the signature of a factor applied upside down. Through the old code, 4,272 of the 4,802 splits the audit can classify in the Polygon lake came out doubled. In the Sharadar lake it was 4,000 of 4,440. The momentum signal that picks the equity sleeve's stocks reads those adjusted prices. A stock that had split inside its lookback window looked to the signal like it had collapsed. ## Why every test passed There were two conventions, and each was consistent with itself. - The data layer stored the vendor's factor, new shares per old. Its schema documents that. - The adjustment code's tests encoded a two-for-one split as one half: old shares per new share. Against those fixtures, multiplying is exactly right. Both sides had tests. Every test passed. No test put a real split from the lake through the real adjustment code, so nothing ever compared the two conventions with each other. It had also been worse before. Earlier, splits were not being applied at all, because of a timing condition no stored split could satisfy. The August repair made them apply, in the wrong direction, and the code's existing tests agreed with it. In September a research script noticed the inverted prices and worked around them locally, inside the script, without touching the shared code. That workaround made one result correct and left the defect in place for everything else. ## The fix - The adjustment code now divides by the stored factor, and it refuses a factor that is zero or negative instead of producing a number. - The code's own test fixtures now use the vendor convention. - A new guard takes Apple's real 2020 split out of both production lakes, runs it through the real adjustment code, and checks that the day before comes out at a quarter of the raw price. That is the test that was missing: it checks the two sides against each other rather than each against itself. - The research script's local workaround was removed, so there is one place where this is decided. Through the current code, the same audit neutralizes 3,948 splits in the Polygon lake and 3,746 in the Sharadar lake. ## What is still not clean Not every stored split follows the vendor convention. The audit finds 90 rows in the Polygon lake and 93 in the Sharadar lake stored the other way up, most of them depositary-receipt ratio changes. Under the fixed code those rows are now the wrong ones. I did not fix them by re-inverting inside a consumer, which is how the September workaround hid the original defect. Since 2026-09-23 a correction layer at the data reader applies corrections to them, each one checked through the adjustment code, and the stored rows are left as the vendor sent them. Nine days later I found that corporate actions had not been ingested at all for seven weeks, because the weekly job that loads them had only ever been run by hand. Taken together, that was enough to stop trusting the forward record built on those prices. I withdrew it in public on 2026-09-23 and restarted it on 2026-09-24 on data the engine can vouch for. The withdrawal and what it covered are on the [progress page](/progress). ## What I took from it A test proves that code does what its author believed. It does not prove that the author and the data agree. The failures that survive a full test suite are the ones where two parts of a system are each correct by their own definition. The only test that catches those is one that runs real data from one side through the real code of the other. The code is open, including the guard: [canli-backtest](https://github.com/arhancanli/canli-backtest) for the backtester and [canli-pit-lake](https://github.com/arhancanli/canli-pit-lake) for the data layer, both extracted from [the engine](https://github.com/arhancanli/alphac). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/the-trade-that-lost-99-percent ------------------------------------------------------------------------------ # The trade that lost 99 percent, and the guard I did not add > A carry signal bought a token at 16.15 and closed it at 0.1553. The strategy was not > broken. The interesting decision came afterwards, and it was to change nothing. **Short title:** The trade that lost 99 percent **Published 2026-08-27. Evidence: `crypto_lab_carry_crash_incident.json`, content hash `sha256:0083a155a8`, source-bound to the paper execution database and the point-in-time funding table by SHA-256.** ## What happened On 2026-07-05 at 16:00 UTC the crypto carry sleeve opened a long in `BINANCE:PERP:LABUSDT`: 114 units at an entry price of 16.15. On 2026-07-30 at 00:00 UTC the scheduled rebalance closed it at 0.1553 and opened a short. Twenty-four days. A price return of **-99.0384 percent**, and after entry and close fees a realised loss of **1,824.37** quote units. The token did not drift down. It collapsed, and a venue delisted it. ## The signal was not wrong. It was answering a different question. Funding carry on a perpetual future is not a directional bet. When funding is negative, shorts pay longs, so holding a long collects a stream of payments. The signal asks: *who is being paid to hold this?* It does not ask: *will this thing still exist next month?* While the position was held there were 221 funding settlements. 68 were negative, with a mean rate of -0.0017 and a minimum of -0.02. The first non-negative settlement arrived on 2026-07-08, three days in. Funding later changed sign, which is precisely why the scheduled rebalance closed the long and flipped short: the carry had gone the other way. So the sleeve harvested the carry it was designed to harvest, and the principal underneath it went to approximately zero. Both statements are true at once. A strategy can execute its mandate perfectly and still lose almost everything, and if your reporting cannot express that sentence, your reporting is lying to you. ## First question: was this us, or was this the market? Before writing anything about the market, the honest move is to suspect your own code. A 99 percent loss looks identical to a contract-identity defect: a stale symbol mapping, a mis-scaled contract multiplier, a token that redenominated while the position record kept the old units. Any of those would produce exactly this shape. So the incident record binds two artifacts by hash and reads them rather than trusting memory: - `var/trading_crypto_perp.sqlite`, `sha256:d5827f3e0248f2...`, the actual paper execution database with the three orders in it; - `data/lake/funding/instrument_id=BINANCE:PERP:LABUSDT/year=2026/data.parquet`, `sha256:233336b834ce62...`, the point-in-time funding series. And it cites independent, dated market evidence that has nothing to do with this system: third party historical prices for the token across the July collapse, and a venue's public delisting announcement. The verdict recorded is `GENUINE_MARKET_CRASH_NOT_CONTRACT_IDENTITY_DEFECT`. The price really did that. Our books are right. That verdict is worth more than the loss cost, because the alternative finding would have invalidated every crypto number the system has ever published. ## Second question: what do I change? This is the part I want to argue for, because the intuitive answer is wrong. The intuitive answer is a price-jump guard. Add a rule: exit any position that falls more than X percent in a day, or refuse to enter instruments whose realised volatility exceeds some threshold. It feels like risk management. It would have saved 1,824 units. It is easy to implement and it would look responsible on a page like this. The decision recorded is `PRESERVE_LOSS_NO_PRICE_JUMP_GUARD_NO_WEIGHT_CHANGE`. Here is why. I have exactly **one** observation of this failure. A threshold chosen after seeing that observation is not a risk control; it is a parameter fitted to a single point, with the answer already visible. I could not tell you whether X should be 40 percent or 80, and neither could the data, because there is one event and any X between them fits it equally well. The honest name for choosing a number under those conditions is overfitting, and it does not stop being overfitting because the motivation was prudence rather than performance. Worse, the guard would have a second effect nobody measures: it would change the behaviour of the sleeve across every instrument, in every regime, forever, on the strength of one July. That trade has to be paid for out of the same trial budget as any other parameter, and its benefit has to be demonstrated prospectively, not asserted. There is a real design question underneath the incident, which is whether a carry signal should size by funding alone or should also carry a survivorship or liquidity term. That is a research question with a pre-registration and a holdout, not a patch. It stays open. So the record keeps the loss, at full size, in the published equity curve, and adds nothing. ## Third question: what could I not answer? The incident record contains a section I would rather not have had to write. Position snapshots at the time retained quantity and average entry price, but **not** the exact cycle mark or the instrument-level unrealised PnL. So the question "what did this position look like on 2026-07-18?" cannot be answered from the record. It can only be estimated from aggregate equity, and an estimate presented as a measurement is a fabrication. The record says so, in the artifact, under `observability_correction`. The fix is prospective: future paper cycles persist the exact order-book mark, the mark source, market value and unrealised PnL through an additive nullable schema migration. It does not retroactively invent the missing history, because there is nothing to invent it from. An incident report that only documents what you can explain is marketing. The gap is the part a reader cannot get anywhere else. ## What this episode does not explain One boundary, stated because it would be easy to imply otherwise: the LABUSDT long closed on 2026-07-30. The flagship forward record starts on 2026-08-07. The incident is classified `PRE_FLAGSHIP_WINDOW_DOES_NOT_EXPLAIN_CURRENT_FORWARD_LOSS`. If the published forward record is negative, this trade is not the reason, and reaching for it as an explanation would be convenient and false. ## The general rule The three questions, in order, and none of them is "how do I stop this happening again": 1. **Is the loss real, or is it my accounting?** Bind the artifacts by hash and read them. Suspect yourself before you suspect the market. 2. **Do I have enough observations to justify a change?** One event supports a research question. It does not support a threshold. 3. **What can I not reconstruct?** Publish that gap in the same document, or the report is an advertisement. The loss is on the curve. It is supposed to be. *Source: [`/glassbox/crypto_lab_carry_crash_incident.json`](/glassbox/crypto_lab_carry_crash_incident.json). Every figure in this note is in that artifact; none is typed here from memory.* ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/what-competitive-programming-bought ------------------------------------------------------------------------------ # What competitive programming actually bought me, and what it did not > There are no segment trees in this trading engine. I want to explain why that is the right > answer, and what the contest habit did pay for instead, because the honest version of this > story is more useful than the flattering one. **Short title:** What competitive programming bought me **Published 2026-08-27. Code links go to the published extractions; the measurement at the end is reproducible from the snippet given.** ## The flattering version The tempting thing to write is that competitive programming gave me a toolkit of exotic data structures, and that a backtest engine is where they finally paid off. Segment trees for range queries over time. A Fenwick tree for rolling aggregates. Union-find for grouping correlated instruments. That would be a nice story. Here is the actual inventory of the engine's source tree: - `bisect`, in two files; - `deque`, in one; - no segment tree, no Fenwick tree, no union-find, no explicit priority queue. Knowing when a structure is not the answer is most of what the training is for. A segment tree buys you `O(log n)` range updates **interleaved with** queries, online, in arbitrary order. My range updates are not interleaved with queries and they are not online. They arrive as a batch of intervals, all known in advance, and are consumed as one dense array afterwards. That is the case where you paint the intervals and skip the tree entirely. Reaching for the sophisticated structure there would cost a log factor, several hundred lines, and a new place for an off-by-one to live. The contest instinct that actually matters is recognising which problem you have, and the answer here is "offline range assignment", not "dynamic range query". ## What it did buy, one: the boundary is where the bug is This engine is full of "what was true at time t" questions. Trading calendars are the sharpest case, because the naive answer is arithmetic and the arithmetic is wrong. The naive next bar after timestamp `ts` is `ts + tf.ms`. Add a day to Friday and you get Saturday, a session that does not exist. Nothing raises. You get a phantom bar, your strategy "trades" on it, and your backtest quietly earns returns on a day the exchange was shut. The real answer is a predecessor and a successor query over the sorted array of session opens: ```python # last session open at or before ts idx = bisect.bisect_right(opens, ts) - 1 if idx < 0: raise ValueError(f"ts {ts} precedes the first XNYS session {opens[0]}; widen the horizon") return opens[idx] # first session open strictly after ts idx = bisect.bisect_right(opens, ts) if idx >= len(opens): raise ValueError(f"ts {ts} is at or past the last cached session; widen the horizon") return opens[idx] ``` Three details, all of them contest reflexes: **`bisect_right` minus one, not `bisect_left`.** For "at or before", `bisect_right` puts you past every element equal to `ts`, so stepping back once lands on `ts` itself when it is a session open. `bisect_left` minus one would skip it and silently return the *previous* session whenever you ask about a real trading day. Both are one-liners. One is wrong in a way that only shows up on exact matches, which is to say on the boundary. **The empty-side guards raise; they do not clamp.** `idx < 0` means the question is outside the cached horizon. Returning `opens[0]` there would be an answer, and it would be a lie: the caller asked about 1994 and would receive a 1997 session as though it were the truth. Clamping is how a range error turns into a plausible number. The contest version of this is returning `0` for an out-of-range query and watching the judge disagree on test 14 with no idea why. **The interval is half-open.** `[effective_from, effective_to)` throughout, everywhere, without exception. Which brings me to the second thing. ## What it did buy, two: consistency between two implementations of the same predicate Universe membership is stored as intervals. "Was instrument `i` in the universe at time `t`?" There are two implementations of that predicate in the codebase, and they must agree exactly: - `membership_asof(t, i)`, the scalar version, used for point queries; - `_membership_mask(...)`, which produces the whole boolean grid at once for research panels. If those two disagree on a single boundary, a backtest and its own diagnostics report different universes and nobody notices until a number cannot be reproduced. The scalar version defines the predicate as `effective_from <= t` and (`effective_to` is null or `> t`). The vectorised version has to reproduce that exactly, which it does by using `side="left"` on **both** searches: ```python lo = int(np.searchsorted(ts_grid, eff_from, side="left")) hi = ts_grid.size if eff_to is None else int(np.searchsorted(ts_grid, eff_to, side="left")) if lo < hi: member[lo:hi, j] = True ``` `side="left"` at `lo` includes a grid point landing exactly on `effective_from`. `side="left"` at `hi` excludes one landing exactly on `effective_to`, and Python's own half-open slice `member[lo:hi]` then does the rest. The half-openness of the interval and the half-openness of the slice line up, so the boundary case needs no special handling at all. Instruments with no interval stay `False` everywhere, and consumers reindex with `fill_value=False`, so a coverage gap is a non-member rather than a silent `True`. Fail closed at the edge: the same instinct as raising instead of clamping. ## What it did buy, three: seeing the rewrite immediately The naive way to build that grid is the obvious way. For every `(t, i)` cell, call `membership_asof(t, i)`. It is correct, it is readable, and on a research panel it is unusable. The rewrite is the one every contest teaches: **stop asking per element, start assigning per interval.** Instead of one point query per cell, do two binary searches per interval and one vectorised slice assignment. The cost stops scaling with the number of cells you are asking about and starts scaling with the number of intervals you actually have, which is smaller by orders of magnitude. Measured on a grid the size of this project's equity panel, 7,500 sessions by 3,000 instruments, 22.5 million cells, 9,000 membership intervals: | approach | time | |---|---:| | per-cell point query (1% sample, extrapolated) | 3.9 s | | two searches per interval, then paint | **0.022 s** | About **180x**, and the gap widens as the panel grows, because one side scales with cells and the other with intervals. That is the whole trick, and it is the same trick as a difference array in a contest problem: the work belongs on the edges of the ranges, not on the points inside them. The comment in the source says it more bluntly than I would have: *one `searchsorted` pair per interval, NEVER a per-row `membership_asof` sweep*. ## The part that transfers, and the part that does not What does not transfer: the exotic structures, mostly. Real systems are dominated by input and output, by data that does not fit the shape you want, and by correctness constraints that make the clever version unmaintainable. I have written far more code deciding *what is knowable at time t* than optimising anything. What transfers, and I did not expect how much: 1. **Suspicion of the boundary.** Every time I have found a genuine bug in this engine, it lived at an edge: the first bar, the last session, the exact-equality case, the empty set. Contests train you to test `n = 1` before anything else. 2. **Half-open intervals, always.** Not because they are elegant, but because mixing conventions between two functions that implement the same predicate is a bug you cannot see in either function alone. 3. **Failing loudly at the edge of the domain.** Clamping produces plausible answers, and a plausible wrong answer survives review. 4. **Knowing the structure you are choosing not to use.** "No segment tree here, because the updates are offline" is a decision. Never having heard of one is not. The engine has no clever data structures in it. That is the result of the training, not the absence of it. *Code: [`core/calendar.py`](https://github.com/arhancanli/canli-pit-lake/blob/main/src/alphaforge/core/calendar.py) and [`data/universe/store.py`](https://github.com/arhancanli/canli-pit-lake/blob/main/src/alphaforge/data/universe/store.py) in `canli-pit-lake`. Both are byte-identical to the engine behind the public record, and CI proves it on every push.* ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/notes/would-it-beat-a-placebo ------------------------------------------------------------------------------ # Your backtest beat a t-test. Would it beat a placebo? > In 300,000 simulated tests on markets with nothing to predict, a t-test on the best rule of a > grid said "edge" between 10.9% and 78.9% of the time at a nominal 5%. A placebo test, which > reruns the whole pipeline on the same returns in a random order, stayed between 4.6% and 5.5%. **Short title:** Would your backtest beat a placebo? **Published 2026-10-11. The rule, the run and the evaluation were pre-registered and are in [the repository](https://github.com/arhancanli/canlicapital/tree/main/scripts/research/placebo/v1); every rate below is read from [`placebo-v1-evaluation.json`](/glassbox/research/placebo-v1-evaluation.json).** ## Two things that look like skill You test 11 moving-average crossovers on five years of daily prices. The best one has a Sharpe of 1.2, and a t-test on its returns says p = 0.01. Is it real? Two things can produce that result without any skill. **The search.** The best of 11 rules is the best of 11 draws, and even with no edge the maximum is high. On flat simulated markets, an 11-rule SMA grid's best Sharpe averaged 0.30 with nothing to find. That is what Bonferroni and the deflated Sharpe ratio correct for, if you know how many rules you really tried. **What the market does on its own.** A long-only rule earns the drift of a rising market without predicting anything. A cross-sectional ranking that buys past winners earns the gap between assets with different long-run average returns, again without predicting anything. A t-test on a strategy's returns asks "did it make money?", not "did it predict?", so drift and dispersion pass for skill, and dividing the significance level by the number of rules does nothing about that. ## The placebo Keep your data's returns, but put the days in a random order, the same order for every asset. Each asset keeps its own returns, fat tails and average; each day keeps its cross-section; but nothing about one day tells you anything about the next. That is a placebo: a market with the same raw material and nothing to predict. Then run the whole pipeline on the real data and on 19 placebos: the same search, the same filters, the same parameter choices. If the real result beats all 19, the chance of that by luck is 1 in 20, a p-value of 0.05. Every choice the pipeline makes is counted, because it makes it again on every placebo, and drift and dispersion are in the placebos too, so they stop looking like skill. When the days are interchangeable this p-value is exact, because the real ordering is just one of the orderings. Volatility clustering breaks that, so the study measured it. ## The study The rules were written down before anything ran: three ways of reordering (a full permutation, a permutation of blocks of days, and a stationary bootstrap), a bar of at most 6% false positives at a nominal 5% in every simulated market, and the rule that picks the winner. - **Markets with nothing to predict:** five return shapes (normal, fat-tailed, negatively skewed, GARCH volatility clustering, volatility regimes), each flat or drifting, or, for the cross-section, with equal or dispersed average returns. - **Pipelines:** an SMA crossover grid, a time-series momentum grid and a cross-sectional momentum grid, each reporting its best Sharpe. - **30 combinations with 10,000 tests each,** with 19 placebos per test, and planted trends with 2,000 tests each to measure power. The full permutation met the bar in all 30: 4.6% to 5.5%, including the GARCH and regime markets. The block permutation also met it, at 5.8% at worst, with less power. The stationary bootstrap was far too cautious, never above 1.5%, so it would miss real edges. The usual fix for testing many rules, Bonferroni, held in flat markets but said "edge" 8.0% to 10.3% of the time when the market drifted upward, and 58.5% to 59.7% of the time when assets differed only in their average returns. How often does the placebo catch a real edge? With a planted trend that a perfect forecaster would trade at a Sharpe of about 2, the SMA grid beat all 19 placebos 45.1% of the time and the time-series grid 47.3%; at a Sharpe of about 1, both were near 14.8%. The cross-sectional grid caught its strongest planted trend 89.0% of the time. With only 19 placebos, Bonferroni catches some trends more often in flat markets, where it is valid; more placebos give a finer p-value. ## What it does not tell you Beating the placebos shows that the real order of your returns holds more than random orders of the same returns. It says nothing about costs, capacity or whether the edge lasts. And it counts only the search this pipeline runs: if you tried and dropped other pipelines before this one, those trials are not in the number. The placebo is the `placebo_test` tool in [canli-mcp](/mcp-servers): `plan` writes your price file and the placebo files, you run your pipeline on each, and `compare` returns the p-value. It runs on your machine, so your code never leaves it. ============================================================================== RESEARCH CORPUS: 114 DOCUMENTS, INCLUDING EVERY FAILED CANDIDATE ============================================================================== ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/active-ownership-item4-v3-feasibility ------------------------------------------------------------------------------ # Active ownership escalation — Schedule 13D Item 4 source-schema v3 **Short title:** Active ownership Item 4 v3 **Author:** Arhan Canli **Declared:** 2026-08-16 after v2 closed `DATA_GATED` and before running v3 aggregate results. **Stage:** document/classifier feasibility only. Prices, returns, event outcomes, and portfolio data remain forbidden; zero return identities are spent. ## Why v3 is a source correction, not parser tuning V2 used the unchanged 160-accession sample and added the SEC structured Schedule 13D schema, but the implementation required the primary bytes to begin with an XML declaration. Actual EDGAR SGML wraps structured primary documents inside an outer `` envelope, so all ten sampled 2025 structured filings bypassed the schema parser. One legacy submission also contained two exact-form documents; the v1/v2 parser ignored the standard SGML sequence field and therefore could not select the sequence-1 primary document. V3 may change only these source mechanics: 1. unwrap one outer EDGAR `` envelope before parsing the namespaced `edgarSubmission` tree; 2. when multiple exact-form documents exist, retain the unique document whose SGML `` is `1`; and 3. retain the v2 structured `item4/transactionPurpose` extraction and legacy heading patterns unchanged. No heading phrase, minimum length, active-intent classifier, ownership regex, sample row, threshold, or label is changed. The original 160 accessions remain frozen. This protocol does not replace or erase either failed result. ## Unchanged machine and human gates - 160/160 submissions succeed; - at least 98% have one exact primary after the sequence-1 rule; - at least 90% yield Item 4; - every positive classification retains a source sentence; - positive class rate remains between 10% and 90%; and - the frozen 48-row human audit must eventually achieve at least 95% positive precision, 80% recall, and 90% exact ownership agreement. Machine success with incomplete labels is `HUMAN_AUDIT_REQUIRED`, not a pass to returns. Any machine failure is `DATA_GATED`. The unchanged sample may be used as a source-schema regression corpus; a future return protocol still requires a disjoint untouched event holdout. ## Pre-label scoring clarification — 2026-08-22 The original scorer left `ownership_exact_rate` permanently null, making the declared ownership gate impossible to pass even after all labels were complete. Before any of the 48 human labels was opened, the scoring contract was therefore completed as follows: the frozen machine percentage output is the sole candidate when exactly one candidate exists, and `unresolved` otherwise. Exact agreement requires equality to the human percentage or agreement on `unresolved`; there is no tolerance, inference, summation, or post-label rule selection. This clarification does not alter the regex, corpus, thresholds, classifier, or machine results and can make the gate fail. The blind packet under `artifacts/labeling/active_ownership_13d_item4_v3_blind/` contains all 48 source excerpts, an empty review sheet, a blank independence-attestation template, exact frozen labeling rules, and a standard-library-only verifier in deterministic shuffled order. The authoritative packet identity is the self-verifying `content_hash` in `manifest.json`; no copied hash in this prose may supersede it. Before labeling, the independent reviewer runs `python3 verify_review.py` and proceeds only on `PACKET_VALID`. After completing copies named `completed_labels.csv` and `completed_attestation.json`, the reviewer reruns the verifier and returns exactly those two files only on `REVIEW_RETURN_VALID`. The governed importer independently verifies the manifest, source lineage, immutable row metadata, templates, completed files, and independence attestation before it can alter the canonical frozen labels. The packet and its deterministic handoff archive deliberately exclude machine classifications, matched sentences, percentage candidates, prices, and returns. Structural verification cannot itself prove reviewer independence or label correctness; those remain the reviewer's attested responsibility and the subsequent frozen scoring gate. ## Prospective gate-interpretation audit — 2026-08-26 Before any human labels or return data were opened, the discrete reachability and statistical meaning of the 48-row gate were audited in `docs/design/ACTIVE_OWNERSHIP_HUMAN_GATE_AUDIT.md`. The existing 95% precision, 80% recall, and 90% ownership point thresholds remain unchanged. They govern eligibility to proceed to return preregistration; they do not, by themselves, establish confidence-bound classifier accuracy. The frozen packet contains eight machine-predicted positives, so the precision point gate requires 8/8 and fails on one false positive. Even 8/8 has a one-sided 95% exact lower bound of only about 68.8%. Any passing report must therefore publish raw confusion counts, point metrics, and exact confidence bounds. Before sleeve admission, a disjoint independent confirmatory corpus must meet the same thresholds on one-sided 95% exact lower bounds. This interpretation was fixed while all 48 human labels remained blank and zero return identities had been spent; it cannot rescue a known classification or investment outcome. ## Machine outputs - `artifacts/feasibility/active_ownership_13d_item4_v3/document_audit.parquet` - `artifacts/feasibility/active_ownership_13d_item4_v3/frozen_human_labels.csv` - `artifacts/feasibility/active_ownership_13d_item4_v3/result.json` ## Claim boundary V3 can establish document extraction feasibility only. It cannot establish classification accuracy until frozen labels are complete, and it cannot establish returns, Sharpe, drawdown, correlation, capacity, or sleeve admission. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/alphamax-equity-momentum-lineage ------------------------------------------------------------------------------ # AlphaMax equity momentum: signal, trial lineage, and evidence boundary **Short title:** AlphaMax equity momentum: complete trial lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `alphamax_equity_momentum` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-24 ## Abstract AlphaMax is ALPHAC's US-equity long/short momentum program. Its canonical signal is 12-minus-1 cross-sectional momentum: rank securities by split-adjusted return from approximately twelve months ago through one month ago, then hold a dollar-neutral long/short portfolio. This paper does not present a single favourable backtest as proof. It reconciles the entire charged family: 115 distinct hypothesis identities recorded from 2026-06-20 through 2026-08-17 across the primary and Sharadar research ledgers. The evidence is deliberately uncomfortable. A frozen 2023–2026 construction reported net Sharpe 0.91 and maximum drawdown 8.68% in the persisted deployed-path artifact. The later, preregistered 2005–2026 replication reported net Sharpe approximately -0.05 and a drawdown exceeding one third, failing its DSR and return gates. Construction studies did not rescue the family: a 4-by-4 weighting and breadth grid failed its family-wise Reality Check, and beta-neutral, volatility-scaling, and short-tail modifications were not adopted. The correct claim is therefore not “momentum is proven.” It is that AlphaMax is a live paper research sleeve with a plausible mechanism, a selected short-window survivor, a failed deep-history replication, and an explicit forward burden of proof. ## Claim boundary This paper supports four claims only: 1. The economic hypothesis and implementation can be stated precisely. 2. Every charged identity in this family is enumerated in the public machine-readable manifest. 3. Positive, null, and negative results are preserved together, including later corrections. 4. Current paper trading is forward evidence collection, not external attestation and not proof of the governing Sharpe or drawdown objectives. It does **not** establish a forward Sharpe, expected maximum drawdown, future return, investment capacity, or live-money performance. The program remains paper-only and not externally attested. ## Economic mechanism and falsifiable hypothesis The hypothesis is delayed cross-sectional price adjustment: stocks with high intermediate-horizon returns continue to outperform recent losers for a limited horizon. ALPHAC excludes the most recent month because short-horizon reversal can contaminate the continuation signal. The mechanism is falsified for this implementation if a point-in-time, survivorship-aware, net-of-cost walk-forward cannot produce positive and statistically defensible returns after the complete family-wide search is charged. The literature motivates a prior, not a result: - Jegadeesh and Titman document intermediate-horizon return continuation and later partial reversal in US equities ([Journal of Finance, 1993](https://doi.org/10.1111/j.1540-6261.1993.tb04702.x)). - Asness, Moskowitz, and Pedersen find common momentum structure across asset classes and connect it to funding-liquidity risk ([Journal of Finance, 2013](https://doi.org/10.1111/jofi.12021)). - Daniel and Moskowitz show that momentum can crash during panic-state rebounds, making tail and regime tests load-bearing rather than decorative ([Journal of Financial Economics, 2016](https://doi.org/10.1016/j.jfineco.2015.12.002)). - Barroso and Santa-Clara study volatility management as a response to momentum's time-varying risk ([Journal of Financial Economics, 2015](https://doi.org/10.1016/j.jfineco.2014.11.010)). - Korajczyk and Sadka demonstrate that trading costs and capacity materially constrain momentum implementations ([Journal of Finance, 2004](https://doi.org/10.1111/j.1540-6261.2004.00656.x)). - Novy-Marx isolates the intermediate horizon as the principal source of the effect ([Journal of Financial Economics, 2012](https://doi.org/10.1016/j.jfineco.2011.05.003)). These papers do not validate ALPHAC's data, universe, execution, or selected configuration. ## Literature and overlap decision The literature supports treating intermediate-horizon momentum as one economic family. It does not support counting each allocator, universe, cadence, quality overlay, volatility forecast, or breadth choice as an independent sleeve. ALPHAC therefore assigns all 115 identities below to one family, charges every implementation to the union trial denominator, and grants the family at most one portfolio-sleeve slot. Residual momentum, reversal overlays, and quality-conditioned momentum are not credited as diversification unless future evidence demonstrates both an independent mechanism and sufficiently low out-of-sample return correlation. None does so here. ## Exact ALPHAC implementation The canonical feature is `eq_mom_252_21`: ```text signal(i,t) = ln(adjusted_close(i,t-21) / adjusted_close(i,t-252)) ``` The factor is computed on the equity session grid and cross-sectionally standardized inside the point-in-time eligible universe. Corporate actions must be knowable by the decision timestamp; universe membership is applied before cross-sectional transforms. Portfolio weights decided using information through session `t` become effective on `t+1`, preventing same-close execution. The pre-registered deep-history specification fixed a top-200 liquidity universe with hysteresis, 30 names per side, dollar neutrality, quarterly rebalancing, a trailing-126-session 12% volatility target, 2.0-times gross cap, purged anchored-expanding walk-forward, and explicit equity costs. A later operational construction used a wider top-2000 universe, 100 names per side, inverse-volatility leg weights, quarterly signal horizon, and explicit commission, spread, latency, and borrow costs. Those are different hypotheses. The ledger correctly charges changes in universe, breadth, cadence, allocator, or signal; only `start`/`end` rolling-window changes are exempt from the hypothesis count. ## Trial lineage The public manifest binds this family key to 115 distinct identities. The grouping below is an accounting view, not permission to collapse the denominator. | Identity group | Charged identities | Research question | |---|---:|---| | Canonical `eq_mom_252_21` | 23 | Universe, cadence, horizon, and walk-forward implementations | | Weighting × breadth forensic grids | 48 | The 16-cell primary grid plus 16 no-drift and 16 volatility-guard return configurations | | Construction forensic arms | 8 | Cadence, breadth, universe, and train/test attribution | | Live-window hysteresis arms | 6 | Exit-band and minimum-hold settings on the selected K=30 construction | | Deep-history turnover arms | 8 | Monthly/quarterly cadence crossed with baseline, hysteresis, hold, and combined settings | | Volatility-scaling overlays | 5 | Whether alternative ex-ante risk forecasts improve the sleeve | | Momentum + short reversal | 5 | Whether recent reversal repairs the core signal | | Momentum + operating margin | 5 | Whether quality conditions the momentum exposure | | Momentum + earnings yield | 3 | Whether value conditions the momentum exposure | | Residual reversal | 1 | Whether residualized reversal adds independent information | | Signal-to-noise momentum | 1 | Whether volatility normalization improves ranking | | Momentum ensemble | 1 | Whether fixed horizon blending improves robustness | | Short-horizon equity momentum | 1 | Whether a 63/42-session definition generalizes | | **Total** | **115** | Every row remains in the family-wide search burden | Machine labels covered by this family are `eq_mom_252_21`, `eq_rev_21`, `eq_operating_margin`, `eq_earnings_yield`, `eq_rev_resid_21`, `eq_mom_sn_252_21`, `eq_mom_ens`, `eq_mom_63_42`, `forensic_alphamax_construction`, `forensic_alphamax_weighting`, `alphamax_hyst_live`, `alphamax_turnover`, and `alphamax_volscale`. Variant identifiers remain attached to their exact hypothesis keys in the manifest rather than being treated as independent economic families. The machine-readable source of truth is [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json). Select identities where `research_family_key` equals `alphamax_equity_momentum`; each row provides the exact `hypothesis_key`, immutable first measurement, source ledger, candidate papers, and missing packet sections. ## Results and decisions ### Selected short-window artifact The persisted `k30_dn_63` deployed-path artifact covers 2023-07-06 through 2026-06-01 and reports net Sharpe 0.9071, cumulative return 24.54%, annualized volatility 13.07%, maximum drawdown 8.68%, and annual turnover 4.11. It is the historical survivor that motivated paper deployment. These are backtest statistics from a selected configuration, not forward performance. ### Fresh-vendor clean-workspace replay On 2026-08-24, I reacquired the available Polygon stock data under the owner's current licensed access, reconstructed the exact 375-identifier strategy-window universe union, sealed a private input inventory, and ran the historical command at pinned source commit `fd3e930f41b0a62b222ecda4ab83bae21a4ce9f2` in a temporary workspace outside the repository. The current entitlement begins on 2021-08-23. It excludes 58 requested sessions from 2021-06-01 through 2021-08-20, so the manifest does not claim a complete historical universe lookback. The gap precedes the first leg's training and test periods but intersects the global feature warm-up. The replay did not reproduce the historical result exactly. Timestamps and configuration matched, but the equity frame and log returns differed. The largest absolute equity-path difference was $574.69. Historical annualized Sharpe was 0.9071; the fresh-vendor replay produced 0.9213. The historical final equity was $124,536.21; the replay produced $124,987.26. Historical maximum drawdown was 8.68%; the replay reported 8.60%. The 27-trial validation context was retained rather than recomputed from a smaller search: historical DSR was 0.3406 and replay DSR was 0.3479. Both failed the 0.95 portfolio-maturity threshold. This is a failed exact reproduction even though the headline metrics are close and the fresh result is slightly more favourable. The surviving 2026-06-20 artifact remains the historical record and is not regraded. The divergence is consistent with at least one unrecovered historical input difference, including revised vendor rows, exact per-date membership, corporate-action state, or the unavailable warm-up interval. The available evidence does not identify a unique cause. A reviewer must therefore treat the short-window result as version-sensitive and not as a portable strategy reproduction. ### Deep-history preregistered replication The 2005-01-04 through 2026-06-01 preregistered momentum run reports net Sharpe -0.0493, cumulative return -15.07%, annualized volatility 10.66%, a maximum drawdown exceeding one third, and DSR below the 0.95 gate. It was killed under its preregistered rule. This contradiction dominates any honest interpretation: the short-window survivor does not establish durable historical replication. ### Construction attribution The eight-arm construction study showed that universe and cadence decisions materially changed the measured result. On its common 2022–2026 basis, arm Sharpes ranged from 0.172 to 1.613 and DSR values from 0.025 to 0.529. None met the complete admission standard. This dispersion is evidence of specification sensitivity, not a menu from which to select the largest number. The later 4-by-4 weighting/breadth grid used the 2005–2026 research panel. Challenger net Sharpes ranged from -0.293 to +0.066 against -0.062 for the incumbent cell. Although individual cells could look better, the preregistered White Reality Check returned p=0.315. Zero cells were adopted. That report also generated two complete 16-cell robustness surfaces that were initially omitted from the ledger. The no-drift modelling convention produced net Sharpes from -0.564 to -0.077; the volatility-eligibility guard produced -0.245 to +0.081. They were explicitly labelled robustness views, but they still changed portfolio returns and therefore still consume selection identities. All 32 are now charged. Their persisted summaries do not preserve exact daily curves or higher moments, so this correction cannot manufacture current-union DSR values for them. Two turnover studies account for another 14 identities. The selected-window K=30 hysteresis screen reported net Sharpes from 1.282 to 1.630 over only 728 sessions and large turnover reductions for several exit bands. The deep-history broad-universe study, however, reported net Sharpes from -0.192 to -0.134 across all eight cadence/hold settings. These are parameter screens, not new sleeves; identical ex-post results under some minimum-hold settings are still charged because the settings were separately tried. No short-window improvement is presented as a deep-history or forward Sharpe result. The beta-neutral study rejected its own premise: estimated market beta was approximately -0.014 on the research panel but +0.319 on the live-book sample, and the treatment had opposite effects across the two contexts. Volatility-scaling and short-tail controls likewise failed their adoption gates. No failed construction is silently promoted into the paper program. ## Uncertainty, selection, and forward burden The family-level annualized Sharpe observations in the identity manifest range from approximately -0.744 to +1.813. That range is not a confidence interval; it is a warning about configuration and sample sensitivity. ALPHAC applies its Deflated Sharpe Ratio against the union of every return hypothesis across all research profiles, not only the variants displayed in this paper. As of this evidence date that union contains 228 identities, and no current legacy restatement clears DSR 0.95. The governing program objective is an honest forward Sharpe of 1.5 with expected maximum drawdown near 11%, pursued across a diversified book of up to 14 sleeves. AlphaMax has not established those targets. The only acceptable path is a sufficiently long, continuous, broker-reconciled paper record followed by external replication or scrutiny. Targets are design objectives, never guaranteed outcomes and never reasons to weaken a gate. ## Execution, costs, and capacity boundary The research path models one-way equity costs including commission, half-spread, latency, realized turnover, and short borrow. The strategy is dollar-neutral and positions drift between rebalances. The backtester replays point-in-time corporate actions and applies next-session execution semantics. Capacity claims remain conditional. Breadth and liquidity screens can support a modelled estimate, but borrow availability, market impact, locates, crowding, and crisis liquidity require security-level forward evidence. The website must therefore distinguish modelled capacity from broker-observed execution and must not describe either as live-money proof. ## Reproduction map Primary implementation and evidence paths: - `src/alphaforge/features/library/equity_price.py`: canonical feature implementation. - `docs/design/EQUITIES_SLEEVE.md`: point-in-time equity data and feature contract. - `docs/design/PRE_REGISTRATION.md`: deep-history gate and fixed momentum specification. - `var/experiments.jsonl` and `var_sharadar/experiments.jsonl`: immutable charged identities. - `artifacts/walkforward/k30_dn_63/`: selected short-window backtest artifact. - `artifacts/publication/alphamax_upstream_replay_manifest.json`: public hash-only binding to the private fresh-input packet, source reconstruction, rights boundary, and disclosed entitlement gap. - `artifacts/publication/alphamax_upstream_clean_workspace.json`: author-run clean-workspace replay receipt and failed exact comparison. - `artifacts/walkforward/prereg_momentum/`: preregistered deep-history result. - `artifacts/sweep/alphamax_construction/`: eight-arm attribution study. - `artifacts/probe/alphamax_weighting/`: family-wise weighting/breadth grid. - `scripts/probe_alphamax_betaneutral.py`, `scripts/probe_alphamax_shorttail.py`, and `scripts/probe_alphamax_volscale.py`: rejected construction probes. - `artifacts/research/trial_packet_manifest.json`: exact family/identity join and packet debt. Reproduction requires the pinned project environment and licensed/source datasets represented by the artifacts. Public artifacts permit claim auditing; they do not imply that every underlying licensed market-data row can be redistributed. ## Packet completeness and legacy limitations This family paper materially improves lineage coverage but does not retroactively create evidence that did not exist. At publication time, the manifest still marks every identity packet incomplete. In particular, some legacy identities lack a contemporaneous preregistration, complete return series, or independently rerunnable data bundle. Those absences must remain explicit. A later validator may bind this paper to exact identities and credit only sections it can prove; it must not convert “documented legacy absence” into “verified preregistration.” ## Decision **Research decision:** retain AlphaMax as a paper-only forward experiment; do not claim the historical edge is established; do not adopt any failed construction enhancement; continue broker-reconciled observation under the frozen operational specification. **Publication decision:** publish the positive survivor, failed deep-history replication, complete family trial count, and unresolved evidence debt together. Any future promotion requires new forward evidence under unchanged gates, not a more flattering retrospective window. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/alphatrend-managed-futures-lineage ------------------------------------------------------------------------------ # AlphaTrend managed-futures trend: complete trial lineage and evidence boundary **Short title:** AlphaTrend: managed-futures trend lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `managed_futures_trend` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract AlphaTrend is ALPHAC's managed-futures trend program. It takes volatility-normalized directional positions from medium- and long-horizon price trends across liquid exchange-traded market proxies, then combines them under a covariance-aware risk budget. This paper reconciles all 21 charged hypothesis identities in the family rather than presenting the strongest backtest alone. The result is promising as a diversifier but statistically unresolved. Nineteen identities have finite Sharpe estimates ranging from -0.238 to +0.345. Six identities retain complete walk-forward artifacts, seven retain source-bound summary reports, and eight retain immutable ledger summaries without full curves. Thirteen have persisted artifact-era DSR values; zero clear the 0.95 gate. The 17-market baseline had Sharpe 0.289 and 9.69% vol-matched maximum drawdown in a replica screen. Correlation whitening reduced Sharpe to 0.186, a single 110-session signal reached 0.271, and expanding to 33 ETFs reduced Sharpe to 0.128 while worsening vol-matched drawdown to 14.42%. AlphaTrend remains a paper evidence-collection sleeve, not an established forward result. ## Claim boundary This paper establishes the implemented hypothesis, complete family trial count, persisted results, evidence gaps, and historical decisions. It does not establish future return, an achieved forward Sharpe, expected maximum drawdown, capacity, live-money performance, or external attestation. Paper execution through Alpaca is clearly separated from historical simulation. ## Economic hypothesis and literature The falsifiable hypothesis is that the sign and magnitude of an asset's medium-horizon excess-price move contains information about its next return, and that combining trends across genuinely different markets improves risk-adjusted performance. Possible mechanisms include slow information diffusion, investor underreaction, positioning constraints, and compensation for bearing reversal risk. These mechanisms motivate a prior; they do not validate ALPHAC's implementation. - Moskowitz, Ooi, and Pedersen document time-series momentum across futures and forward markets ([Journal of Financial Economics, 2012](https://doi.org/10.1016/j.jfineco.2011.11.003)). - Hurst, Ooi, and Pedersen examine long historical evidence for trend following ([Journal of Portfolio Management, 2017](https://doi.org/10.3905/jpm.2017.44.1.015)). - Lempérière and coauthors study trend following over roughly two centuries and emphasize crisis behavior and risk management ([Journal of Investment Strategies, 2014](https://doi.org/10.21314/jois.2014.043)). - Baltas and Kosowski analyze momentum and trend construction in futures markets ([SSRN working paper](https://doi.org/10.2139/ssrn.1968996)). ## ALPHAC implementation The core signal blends three volatility-normalized price trends: ```text trend(i,t,L) = [log P(i,t) - log P(i,t-L)] / [sigma(i,t) * sqrt(L)] signal(i,t) = mean(trend(i,t,63), trend(i,t,126), trend(i,t,252)) ``` Weights are determined from information available through session `t` and become effective on the next session. The principal ETF implementation uses 17 proxies spanning equities, rates, commodities, and currencies, a 33-session volatility estimate, covariance-aware allocation, monthly rebalancing, gross and name caps, 6 basis points per side, and 50 basis points annualized short borrow. The full walk-forward path uses purged anchored-expanding windows. A separate futures-proxy experiment is retained as a distinct identity because its instruments and data path are different. ## Trial lineage | Identity group | Charged identities | Evidence retained | |---|---:|---| | Core signal/cadence/universe studies | 14 | Six full walk-forwards; eight immutable ledger summaries | | Allocator and signal-horizon screen | 3 | Source-bound summary report | | Fixed and selected breadth screen | 4 | Source-bound summary report | | **Total** | **21** | Every identity remains in the family and union burden | The breadth count includes two post-hoc procedures: dropping the largest full-sample PnL contributor and greedily adding markets only when estimated effective breadth rises. These are not free diagnostics. They generated measured return configurations and are charged as selection identities. Rounded equality between the ARP baseline and breadth baseline is not used to collapse them because their exact return curves were not preserved together. The machine-readable source of truth is [`/glassbox/alphatrend_family.json`](/glassbox/alphatrend_family.json). It binds every hypothesis key to the immutable ledger, strongest available artifact, source hash, exact configuration, evidence grade, and missing measurements. ## Complete walk-forward evidence | Configuration | Sharpe | Max DD | Turnover/yr | Artifact-era DSR | Decision | |---|---:|---:|---:|---:|---| | 63/126/252 blend, 17 ETFs, 21-session rebalance | 0.263 | 10.29% | 6.44× | ~0.000 | Fail DSR | | 126-session signal | 0.175 | 13.32% | 5.47× | 0.704 | Fail DSR | | 252-session signal | 0.182 | 11.52% | 4.93× | 0.700 | Fail DSR | | Blend, 5-session rebalance | 0.278 | 10.91% | 12.31× | 0.798 | Fail DSR | | Blend, 10-session rebalance | 0.311 | 10.19% | 9.39× | 0.816 | Fail DSR | | Real-futures proxy path | -0.238 | 16.03% | 8.97× | ~0.000 | Fail DSR | The highest complete-artifact Sharpe is not adopted as proof. It was one of several cadence and signal choices, remained below the historical DSR gate, and increased turnover materially. ## Allocator and signal-horizon screen All three rows share 5,161 sessions and are historical summaries without daily curves or kurtosis. Maximum drawdown is shown after matching each stream to baseline realized volatility. | Variant | Sharpe | Realized vol | Vol-matched max DD | Turnover/yr | Artifact-era DSR | |---|---:|---:|---:|---:|---:| | Baseline 63/126/252 blend | 0.289 | 4.49% | 9.69% | 4.65× | 0.000 | | Correlation-whitened allocator | 0.186 | 2.75% | 12.76% | 7.79× | 0.000 | | Single 110-session signal | 0.271 | 4.56% | 10.57% | 5.31× | 0.000 | Correlation whitening did not improve the baseline. The 110-session signal was close but weaker. Neither is promoted. ## Breadth experiment | Basket/procedure | Sharpe | N_eff | Avg. pair correlation | Vol-matched max DD | Decision | |---|---:|---:|---:|---:|---| | Baseline 17 | 0.289 | 13.52 | 0.127 | 9.69% | Control | | Expanded 33 | 0.128 | 11.01 | 0.250 | 14.42% | Reject | | Expanded minus largest contributor (SHY) | 0.217 | 10.11 | 0.264 | 10.04% | Reject | | Greedy N_eff-pruned 22 | 0.204 | 14.76 | 0.153 | 9.58% | Reject | More tickers did not mean more independent bets. The 33-market expansion raised average correlation, reduced effective breadth, reduced Sharpe, and worsened drawdown. The selected 22-market basket raised estimated N_eff relative to baseline but still reduced Sharpe. This is a useful null: breadth acquisition must be exposure-aware and independently validated, not counted by ticker quantity. ## Uncertainty, missing evidence, and capacity Eight identities have only immutable ledger summaries; two of those have non-finite Sharpe because their reduced instrument sets did not support a valid estimate. They remain charged and visible. Summary-only ARP and breadth reports preserve no exact daily curves or kurtosis, so current-union DSR cannot be honestly reconstructed for those rows. The family packet therefore reports original DSR only where it exists and never substitutes a rounded estimate. No persisted AlphaTrend capacity sweep measures market impact, ETF creation/redemption effects, borrow availability, or stressed liquidity across AUM. Capacity is **unmeasured**. A gross cap and liquid ticker list are implementation controls, not capacity evidence. ## Paper execution and forward burden AlphaTrend is one of the broker-executed Alpaca paper sleeves. Its public paper record is useful only if it remains continuous, broker-reconciled, and configuration-controlled. The record is too short to establish a forward Sharpe or the program's expected maximum-drawdown objective. Historical simulations selected from the 228-identity union cannot be relabelled as forward evidence. The family earns at most one sleeve slot. It remains in evidence collection because the mechanism is distinct and the paper program needs diversifiers, not because a backtest passed the governing standard. Any production change requires a versioned declaration; any future research variant must be registered before returns are inspected. ## Reproduction and provenance Run from the repository environment: ```text uv run python scripts/audit_alphatrend_family.py uv run python scripts/build_trial_packet_manifest.py uv run pytest -q tests/unit/test_alphatrend_family.py tests/unit/test_trial_packet_manifest.py ``` The audit reads only immutable experiment ledgers and persisted artifacts. It opens no holdout, records no trial, and fails if identity count, artifact Sharpe, source hash, or evidence mapping drifts. Authorship and research leadership are credited to Arhan Canli; that credit does not alter the statistical claim boundary. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/alphavintage-macro-surprise-lineage ------------------------------------------------------------------------------ # Point-in-Time Inflation Surprise and the Equity Size Spread ## A corrected null, a deployment-governance failure, and a frozen forward experiment **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **System:** ALPHAC / AlphaC Algorithms · AlphaVintage sleeve **Version:** 1.0, 2026-08-23 **Status:** public working paper; not peer reviewed **Capital boundary:** historical research simulation and a separately labelled Alpaca paper account ## Abstract This paper reports a point-in-time inflation-surprise strategy applied to the dollar-neutral IWM-minus-SPY equity size spread. The fixed specification constructs headline and core CPI surprises from expanding AR(3) forecasts fit within each historical macro-data vintage, enters after the vintage date, clips exposure, and charges 6 basis points one-way per leg. The original active-day evaluation appeared to pass its four preregistered reading rules. Two subsequent integrity findings changed that conclusion: a missing adjacent CPI observation could cause an old change to be reused under a new vintage, and zero-exposure trading sessions were omitted from the portfolio calendar. A single sealed correction, with no retuning and zero new hypotheses, produced net Sharpe **0.2298**, Newey-West t-statistic **1.2673**, and maximum drawdown **-25.1%** over 6,296 sessions. The t-statistic failed the locked 1.5 threshold, so the research verdict is **KILLED**. AlphaVintage had entered an Alpaca paper account six days before that corrected verdict. It was not removed after the result because the forward composition had already been frozen and because historical portfolio diagnostics showed lower dependence and drawdown despite a slightly negative book-Sharpe contribution. This is not presented as validation. It is a prospective paper-trading experiment whose continuation, correction history, and conflict between standalone alpha and portfolio diversification are disclosed here. The central result is therefore not a profitable anomaly claim. It is an auditable case study in point-in-time data engineering, falsification, and deployment governance. ## 1. Claim boundary The corrected historical signal is **not research-admitted**. The Alpaca account is paper-only; its broker-derived record is self-published, short, and not an independent attestation. Nothing in this paper establishes funded performance, a forward Sharpe, an expected live drawdown, causal price underreaction, or future returns. Repository publication is not peer review. The paper distinguishes three decisions that are easy to conflate: 1. **Did the standalone historical signal pass its locked rule?** No. 2. **Did the sleeve historically diversify the specified four-sleeve book?** Descriptively yes on the measured window, though not prospectively established. 3. **Should it remain allocated?** No conclusion is drawn here. The current paper allocation is a frozen experiment, not an endorsement. ## 2. Motivation and prior evidence Macroeconomic announcements can move equities through discount-rate, risk-premium, and cash-flow channels. Pearce and Roley (1984) emphasize the unexpected component of announcements; Wachter and Zhu (2018) study the concentration of equity premia around scheduled announcements; Modugno and Palazzo (2025) relate aggregate activity and price news to equity-market and firm outcomes. Those papers motivate studying macro news, but none establishes the specific delayed IWM-minus-SPY effect tested here. The data problem is equally important. Croushore and Stark's real-time-data work shows why the vintage available to an historical decision maker can differ materially from today's revised series. The Philadelphia Fed's Real-Time Data Set for Macroeconomists publishes vintage snapshots for that purpose. CPI is released on a schedule maintained by the U.S. Bureau of Labor Statistics. The strategy deliberately uses historical vintages rather than a modern revised history and delays entry until the first trading close strictly after the recorded vintage date. The proposed mechanism was that unexpectedly high inflation disadvantages small companies through financing and margin channels, producing a gradual relative rotation from IWM toward SPY. This is a falsifiable economic story, not evidence that the effect exists. The experiment does not isolate financing costs, margins, institutional flows, or announcement-time reactions, so the mechanism remains conjectural. ## 3. Frozen specification The implementation is `scripts/probe_cpi_surprise_size.py`. Exactly one configuration was tried: | Element | Locked value | |---|---| | Tradable instruments | IWM and SPY | | Placebo market input | QQQ, used only for the QQQ-minus-SPY falsification test | | Portfolio | dollar-neutral IWM minus SPY spread | | Macro inputs | point-in-time headline CPI (`PCPI`) and core CPI (`PCPIX`) vintages | | Forecast | expanding ordinary-least-squares AR(3), fit strictly before the new observation | | Surprise | forecast residual divided by in-sample residual standard deviation, clipped to +/-3 | | Composite | simple mean of headline and core standardized surprises | | Weight | negative clipped surprise, bounded to [-1, +1] | | Entry | close of first trading day strictly after the vintage date | | Exit | next vintage date | | Trading costs | 6 bp one-way on each leg at rebalance | | Configurations tried | 1 | Growth is differenced **within each vintage column**. Differencing a first-release series across vintages can mix seasonal re-estimation and base changes. The corrected implementation additionally requires the expected release month and its immediately preceding month to be finite. It skips an unusable vintage rather than filling, interpolating, carrying forward, or relabelling an older change. The portfolio return calendar retains every exchange session between first and last exposure. Sessions with no position receive an explicit zero. This is necessary because annualizing only active observations changes the time basis of the estimator. ## 4. Preregistered decision rule and trial lineage The candidate was to be added only if all four conditions held: - standalone net Sharpe exceeded its correlation-adjusted book hurdle; - Newey-West t-statistic was at least 1.5; - the apparent portfolio benefit came from mean return rather than variance dilution; and - a QQQ-minus-SPY placebo remained insignificant. Failure of any condition meant `KILLED`. The CPI candidate spent one configuration. Five later macro-vintage variants were declared and reported as the same information family, not independent sleeves. The public family lineage therefore contains seven immutable identities. The correction repaired the existing CPI identity and spent **zero** additional return hypotheses. ## 5. Integrity corrections ### 5.1 Missing-release fail-open defect The historical lake contains no October 2025 headline or core CPI level. A later vintage could contain November while the immediately preceding October value remained absent. The old `diff().dropna()` path could then leave an older computable change at the tail and treat it as the new release. The corrected rule requires the two adjacent latest months and otherwise emits no signal. ### 5.2 Active-day annualization defect The original curve persisted only days with nonzero exposure. That removed legitimate zero-return sessions from the first-to-last portfolio interval. The corrected curve contains 6,296 portfolio sessions, of which 5,998 are active. The former active-day net Sharpe of **0.3382** is superseded; it is retained solely in the correction record. ### 5.3 Sealed re-evaluation The correction protocol was written before revised performance was opened. AR lags, direction, clipping, costs, timing, instruments, scale, and gates were unchanged. The revised result replaced the prior result whether better or worse. | Measurement | Corrected value | Reading | |---|---:|---| | Gross annualized Sharpe | 0.44100360008192313 | diagnostic | | Net annualized Sharpe | **0.2298** | below any strong standalone claim | | Newey-West t-statistic | **1.2673** | fails locked 1.5 gate | | QQQ-SPY placebo Sharpe | -0.0205 | placebo remains dead | | QQQ-SPY placebo NW t | -0.11700964029171129 | placebo remains dead | | Maximum drawdown | **-25.1%** | economically material | | Portfolio sessions | 6,296 | correct calendar basis | | Active sessions | 5,998 | diagnostic only | | Verdict | **KILLED** | binding result | Three of four reading checks remained true; the significance check failed. A near-pass is a fail under a preregistered conjunction. No threshold was lowered to preserve the sleeve. ## 6. Deployment chronology and governance finding AlphaVintage first held a position in its dedicated Alpaca paper account on **2026-08-10**. The corrected re-evaluation was sealed on **2026-08-16**. The public state continued displaying the superseded 0.3403 Sharpe and 1.82 t-statistic until **2026-08-19**. That three-day publication lag and the fact that deployment preceded the final corrected verdict are governance failures, not footnotes. The present system records the sleeve as paper-only, labels the corrected `KILLED` verdict, and requires any composition change to begin a new declared forward epoch. Current broker reconciliation confirms a dedicated active paper account and exact overlapping equity marks, but it does not convert the historical null into alpha evidence. The process lesson is concrete: deployment eligibility must require a machine-verified sealed outcome, and public claims must be generated from the same artifact rather than copied into prose. The project now treats correction latency and source binding as engineering controls. ## 7. Portfolio evidence: diversification without standalone validation On the current 1,061-row common research window, AlphaVintage's correlations to the other sleeves are +0.0393 to crypto carry, -0.0620 to equity momentum, and -0.0444 to managed-futures trend. Its fixed-to-cash marginal contribution changes full-book research Sharpe from 1.7909 without the sleeve to 1.7846 with it, a **-0.0063** delta. Thus the current exact study does not show a positive historical Sharpe contribution. An older composition comparison on the same row count found that including AlphaVintage reduced average pairwise correlation from +0.0724 to +0.0260, increased the diversification ratio from 1.6425 to 1.9427, and reduced historical maximum drawdown from 3.81% to 2.75%. These are retrospective composition diagnostics. They were known before this paper, are not independent, and do not authorize a reweighting decision. The distinction matters: a weak-mean component can reduce covariance and drawdown, but variance dilution alone is not evidence of alpha. Conversely, deleting a frozen sleeve after seeing the comparison would select the composition in sample. The forward experiment exists to resolve that tension prospectively. ## 8. Execution, capacity, and unresolved realism IWM and SPY are liquid exchange-traded funds, and monthly turnover is low by construction. That does not make the backtest executable by default. The historical model uses a fixed 6 bp one-way cost per leg and does not fully model bid-ask variation, short borrow availability and fees, dividends on the short leg, locate failures, market impact, auction behavior, tax, or financing. The historical maximum drawdown is large relative to the weak mean estimate. A publication-grade capacity claim therefore remains **not established**. The Alpaca paper record can test order generation, broker marks, holdings, fills, and operational continuity. It cannot test borrow economics or market impact with real capital. Funded deployment would require a new capital decision and a separately governed evidence standard. ## 9. Reproducibility and provenance Canonical commands: ```text uv run python scripts/probe_cpi_surprise_size.py uv run python scripts/export_alphavintage_sealed_outcome.py uv run python scripts/analyze_current_book_diversification.py uv run python scripts/analyze_book_without_alphavintage.py ``` A PEP 723/`uv --isolated` path reacquired CPI vintages from the Philadelphia Fed and IWM, SPY, and QQQ histories from Yahoo, then recomputed the core signal, returns, costs, significance, and placebo outside the repository data tree. It matched 6,296 portfolio sessions, 5,998 active sessions, both gates, and the `KILLED` verdict. Net-Sharpe and Newey-West-t differences were 0.0000006327801884142836 and 0.000004964325143186343; the largest of six metric differences was 0.00001345836069367723. Yahoo data were not byte-identical (maximum relative price difference 0.0000013794), so the receipt says numerically near-identical core reproduction. Its four-decimal tolerance was selected after the observed drift and is diagnostic, not preregistered. This author-run replay excludes the separate diversification-strategy generation, vendor-row redistribution, and independent human replication. All three upstream benchmark strategies now have completed author-run replays, with different outcomes. A temporary workspace extracted pinned source commit `577555f12636e4df81e42a3940184678d0cceb7e`, copied a pre-refresh sealed snapshot of AlphaTrend's 408-file ETF lake plus its instrument and experiment state, and reran the declared 2003-01-01 through 2026-08-24 trend gauntlet. The resulting 5,191-row `mf_live_fwd/equity.parquet` is byte-for-byte identical to the curve consumed by this trial; every timestamp, equity value, and log return matches, and 466 of 467 output files match. Only `walkforward.json` differs: the committed source sees 13 trials, whereas the historical run used the later 228-identity DSR union. The historical DSR remains the published value and is not regraded. AlphaMax was replayed in a clean workspace from a newly acquired 375-instrument Polygon panel. Fifty-eight earlier lookback sessions were unavailable under the current entitlement, and the fresh-vendor curve did not reproduce the surviving historical curve. Timestamps and configuration match, but the maximum absolute equity-path difference is $574.69; annualized Sharpe is 0.9071 in the historical artifact and 0.9213 in the replay. Historical and replay DSR values are 0.3406 and 0.3479, so both fail the 0.95 gate. The stored historical artifact remains unchanged. The replay closes execution debt but not exact historical-input or output equivalence. The historical `prereg_investment` comparison was replayed from the surviving Sharadar archives in a separate temporary workspace. The loader rebuilt 24,085,990 price rows and the exact 6,835-name, 11,359-interval XUSE membership state. The strategy then reproduced all 779 output files byte for byte, including the 5,385-row equity parquet and its 75-trial validation block. The first disclosed attempt failed before strategy execution because the predecessor profile rebuilt only 1,050 XUSE identities. The corrected attempt bound three run-critical files from the first post-run commit, which restored the documented wide-universe state. This was source-lineage adjudication, not performance tuning. `prereg_investment` remains a non-sleeve historical gate input whose original run was not covered by its later preregistration. These replays establish two exact historical strategy-output equivalences and one completed fresh-vendor divergence. They do not recover every dirty historical source tree, grant vendor-row redistribution rights, validate the non-preregistered comparison prospectively, or constitute independent reproduction. The sealed corrected curve is `artifacts/probe/cpi_surprise_size/equity.parquet` with SHA-256 `d277c63ddf2bed6e9314aa863dbbf6adf3f4adb55bd89e8166aee4a19aab415f`. The result is `artifacts/probe/cpi_surprise_size/result.json` with SHA-256 `686654b4617efb8322f6fda37f2e71a375423aecc6de03477a0186cf2844e509`. The auditable restatement is `artifacts/engineering/alphavintage_sealed_outcome.json`. Trial identities are in `artifacts/research/macro_economic_trend_family.json` and the union trial manifest. The public bundle includes a versioned PDF, HTML and LaTeX source, machine-readable paper metadata, environment bindings, a data-rights manifest, checksums, a software bill of materials, RO-Crate, and the portable receipts. Data-rights review, exact AlphaMax historical-input recovery, a complete multi-sleeve end-to-end reproduction, and independent human reproduction remain explicit blockers before the release can be called externally replicated. ## 10. Limitations - The surprise is an AR residual, not a survey-based market expectation. - The vintage stamp is conservative but is not the exact BLS release timestamp for every month. - The IWM-SPY spread is an imperfect proxy for firm-size exposure and can load on sector, quality, profitability, duration, and financing conditions. - The Newey-West estimator does not solve all overlap, regime, and specification uncertainty. - The 1.5 threshold is a preregistered reading rule, not a universal evidentiary standard. - The family contains related macro tests; a single-configuration label does not erase broader research multiplicity. - Historical diversification is measured on a post-2022 window and is not crisis-complete. - The forward record is too short to support a performance or drawdown conclusion. ## 11. Conclusion The point-in-time CPI-surprise size-spread hypothesis did not survive its corrected locked test. That result remains published because a research platform is more credible when failed signals, software defects, delayed corrections, and awkward deployment decisions are first-class evidence. AlphaVintage's low measured dependence makes it a useful frozen forward experiment; it does not make it a validated alpha sleeve. Success for this project means resolving that distinction with time, broker-reconciled evidence, and independent reproduction, not changing the standard after seeing the answer. ## References - Croushore, D., and T. Stark (1999/2001), “A Real-Time Data Set for Macroeconomists: Does the Data Vintage Matter?”, Federal Reserve Bank of Philadelphia Working Paper 99-21 and *Journal of Econometrics* 105, 111-130. https://www.philadelphiafed.org/the-economy/macroeconomics/a-real-time-data-set-for-macroeconomists-does-the-data-vintage-matter - Modugno, M., and D. Palazzo (2025), “Decoding Equity Market Reactions to Macroeconomic News,” Federal Reserve Finance and Economics Discussion Series 2025-007. https://doi.org/10.17016/FEDS.2025.007 - Pearce, D. K., and V. V. Roley (1984), “Stock Prices and Economic News,” NBER Working Paper 1296. https://doi.org/10.3386/w1296 - U.S. Bureau of Labor Statistics, “Schedule of Releases for the Consumer Price Index.” https://www.bls.gov/schedule/news_release/cpi.htm - Wachter, J. A., and Y. Zhu (2018), “The Macroeconomic Announcement Premium,” NBER Working Paper 24432. https://doi.org/10.3386/w24432 ## Authorship and contribution statement **Arhan Canli** directed the research, specified the strategy and governance, built the software and evidence system, investigated the corrections, and wrote the paper. He is responsible for every claim, decision, and correction. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/alphavintage-missing-release-correction ------------------------------------------------------------------------------ # AlphaVintage missing-release correction protocol **Declared:** 2026-08-16 **Status:** REVISED RETURNS SEALED / VERDICT KILLED **Hypothesis-ledger impact:** zero new hypotheses; this repairs an existing identity. ## Confirmed defect The point-in-time RTDSM lake has no October 2025 headline or core CPI level. The December 15, 2025 vintage contains November, but its immediately preceding October level is null. The locked signal function computed monthly log differences, dropped null differences, and selected the last remaining difference as the newly released surprise. Consequently an older computable change could be repeated under a later vintage date even though no new month-over-month CPI change was computable. This is fail-open behavior and can splice a stale signal into a new holding period. ## Correction locked before revised performance For every monthly vintage dated `V`: 1. The newly released observation must be the calendar month immediately preceding `V`. 2. That observation and its immediately preceding calendar month must both exist and be finite. 3. If either check fails, the vintage emits no signal. No fill, interpolation, carry-forward, or substitution is permitted. 4. Interior gaps remain missing; only adjacent finite monthly changes enter the AR history. 5. The signal may resume only when two adjacent latest monthly levels exist again. The live writer imports the research signal function directly, so this one correction governs both paths. Regression tests must pin the exact November-present/October-missing shape before any revised curve is generated. ## Re-evaluation rule After code and tests pass, regenerate the existing AlphaVintage result once under the corrected data rule. Do not tune AR lags, sign, clip, costs, entry timing, instruments, scale, or gates. The revised result replaces the invalid result whether it improves or worsens. Publish the before/after metrics, changed vintage count, curve hash, code hash, and unchanged hypothesis count. If any admission gate no longer clears, remove the sleeve from research-validated/book arithmetic; do not respecify it. ## Calendar-integrity defect found during re-evaluation The prior curve persisted only `net[w.abs() > 0]`. That deleted zero-exposure trading sessions inside the first-to-last activity window, including the monthly transition dates. An active-day sample is not a portfolio return calendar and inflates annualization. The corrected curve retains every trading session between first and last exposure and records an explicit zero when the sleeve has no position. No return-bearing observation was added, removed, or tuned. ## Sealed outcome The unchanged identity was regenerated once after both corrections. Calendar-correct net Sharpe is `0.2298358829`, Newey-West t is `1.2673190577`, and maximum drawdown is approximately `-25.1%` over 6,296 portfolio sessions (5,998 active sessions). The superseded active-day Sharpe was `0.3382071994`. Gate `b_nw_t_ge_1p5` fails, so the final preregistered verdict is `KILLED` and AlphaVintage is not research-admitted. This correction adds zero hypotheses. - Curve SHA-256: `d277c63ddf2bed6e9314aa863dbbf6adf3f4adb55bd89e8166aee4a19aab415f` - Result SHA-256: `686654b4617efb8322f6fda37f2e71a375423aecc6de03477a0186cf2844e509` - Runner SHA-256: `80b55488c7caab97dcf121c7d0f744a05d80981f75aaa6529dc17613808c48ed` ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/author-protocol-approval-protocol ------------------------------------------------------------------------------ # Author review for approval-gated research protocols **Owner and intended author:** Arhan Canli **Current state:** two hash-bound blank packets; zero author protocol approvals ## Why this exists The merger-announcement and Treasury-auction redesigns have passed their no-return structural tests, but software cannot decide that Arhan understands or approves them. A chat reply also should not silently authorize the next research stage without binding the exact protocol and evidence versions being reviewed. Each tracked packet therefore freezes the protocol SHA-256, evidence-file SHA-256, evidence content hash, six author questions, six technical checks, the exact approval decision, and the narrow next stage it would authorize. Every answer and judgment remains blank. The packets are preparation, not approval. ## Current packets - `merger-announcement-identity-v2` binds the disjoint no-return confirmation design. Its governed approval would authorize only acquisition and freezing of the 2006–2015 SEC confirmation corpus. - `treasury-auction-state-machine` binds the no-return schedule state machine. Its governed approval would authorize only writing a separate return preregistration. Neither decision authorizes a return run, sleeve admission, external submission, independent-review claim, or performance claim. ## Workflow Prepare a private response outside the tracked publication tree: ```text uv run python scripts/verify_author_protocol_approval.py prepare \ --review-key merger-announcement-identity-v2 \ --output var/author_reviews/merger-announcement-identity-v2.json ``` or: ```text uv run python scripts/verify_author_protocol_approval.py prepare \ --review-key treasury-auction-state-machine \ --output var/author_reviews/treasury-auction-state-machine.json ``` Arhan must personally complete every answer, confirm every technical check with evidence, disclose all AI assistance, review every retained claim, record corrections, and bind the decision to the current protocol and evidence hashes. He must also change the response status to `AUTHOR_COMPLETED_RESPONSE`. Automation may explain a prompt but may not write, paraphrase, or approve Arhan's response. Verify a completed response without writing a tracked receipt: ```text uv run python scripts/verify_author_protocol_approval.py verify \ --input var/author_reviews/merger-announcement-identity-v2.json ``` Only after Arhan explicitly authorizes importing the verified result may an unused output path be provided. The verifier refuses to overwrite an existing receipt. ```text uv run python scripts/verify_author_protocol_approval.py verify \ --input var/author_reviews/merger-announcement-identity-v2.json \ --output artifacts/governance/author_protocol_approvals/merger-announcement-identity-v2-v1.json ``` ## Fail-closed rules Verification fails when a bound file changes, a question or technical check is absent, evidence is missing, the AI-assistance declaration is incomplete, the decision differs from the registry, any blocking issue remains, or the approved hashes do not match the current files. A passing receipt is still self-attestation. It does not independently prove who typed the answers, does not count as external review, and does not establish alpha, Sharpe, drawdown, diversification, or sleeve admission. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/bond-etf-nav-dislocation-feasibility ------------------------------------------------------------------------------ # Bond-ETF NAV dislocation — locked no-return source feasibility protocol **Short title:** Bond-ETF NAV dislocation: feasibility **Declared:** 2026-08-16 before collecting issuer page payloads or computing historical coverage. **Stage:** source and execution-measurement feasibility only. No ETF prices from a market-data vendor, no TRACE transaction records, no returns, and no signal parameter may be opened. ## Frozen identity boundary - Instruments: HYG and LQD, representing liquid US high-yield and investment-grade corporate-bond ETFs under one issuer disclosure format. - Research period: 2016-01-01 through 2025-12-31. - Economic identity: secondary-market correction of a valuation gap after distinguishing stale NAV from ETF price discovery. It is not authorized-participant creation/redemption arbitrage. - Official issuer premium/discount is a source input, not a trade signal and not proof of mispricing. - A future return protocol, if authorized, must enter no earlier than the next eligible session after all prior-day source values are public and must lock hedge, sign, horizon, costs, and stress rules. ## Frozen source routes 1. Fetch and hash the official iShares HYG and LQD product pages. Parse the embedded `performance.premiumDiscountChartData` dates and values without requesting ETF market history. 2. Fetch and hash each official `latest-holdings.csv`. This tests current schema only; it cannot be counted as historical holdings coverage. 3. Fetch FINRA's official TRACE historical-data information page and verify whether the stated transaction-level route requires an agreement/fees. Do not request transaction records. 4. Bind the SEC Rule 6c-11 disclosure requirement as source-contract evidence: recent daily data and recent premium/discount charts are not a permanent ten-year archive. ## Locked gates All are required to advance to a separate licensed-data preregistration: - issuer premium/discount dates cover at least 98% of XNYS sessions in 2016–2025 for each fund; - at least one hash-addressed holdings snapshot per month exists for each fund (120 per fund), with CUSIP/identifier, quantity, weight, and an as-of date known before the next session; - a transaction-level TRACE route with timestamps, price, size, corrections/cancellations, and stable bond identifiers is contractually available for the full period; - constituent valuation timestamps and evaluated-price methodology are available point-in-time; - ETF quote/trade data can support NBBO spread, latency, partial-fill, impact, and closing-auction stress, while underlying bonds support stale-print and no-trade treatment. Failure of any gate is `DATA_GATED`. Passing does not authorize returns. Thresholds and routes are not modified after collection. iNAV is not accepted as executable underlying value without a separate stale-input audit. ## Machine outputs - `artifacts/feasibility/bond_etf_nav_dislocation/issuer_premium_discount_manifest.parquet` - `artifacts/feasibility/bond_etf_nav_dislocation/source_probe_manifest.parquet` - `artifacts/feasibility/bond_etf_nav_dislocation/result.json` ## Claim boundary This protocol measures source sufficiency only. It cannot establish a gap sign, threshold, return, Sharpe ratio, drawdown, correlation, capacity, or sleeve-admission claim. ## Locked result Both official issuer pages and current holdings files were retrieved and hash-bound successfully. The embedded premium/discount series contains 249 target-period dates for each fund against 2,514 XNYS sessions in 2016–2025: 9.9045% coverage for HYG and LQD, far below the locked 98% gate. The series begins on 2025-01-02, consistent with recent-disclosure availability rather than a permanent ten-year archive. Each public holdings route supplied one current snapshot, versus 120 monthly snapshots required per fund. FINRA's official metadata confirms that transaction-level historical TRACE data exists through an agreement and paid delivery route. No TRACE transaction was requested. Public issuer pages do not supply the missing historical valuation timestamps or synchronized ETF/bond execution state needed to distinguish stale bond marks from ETF mispricing. **Decision:** `DATA_GATED`. Zero ETF market records, underlying bond transactions, returns, signs, thresholds, horizons, or portfolio statistics were opened, and zero return identities were spent. Machine-readable result: `artifacts/feasibility/bond_etf_nav_dislocation/result.json`. ## Reachability classification — 2026-08-22 These four failures are not extraction-engineering tasks. A crawler cannot manufacture the measured 0.8809546539379475 fractional issuer-coverage shortfall, 119 missing monthly holdings snapshots per fund, point-in-time evaluated bond marks, or synchronized executable ETF and bond records. The family is therefore `PAID_ARCHIVAL_AND_EXECUTABLE_DATA_REQUIRED`, not “nearest to passing.” The next action is an owner spending and licensing decision. Purchasing access would authorize collection only; it would not pass a gate, open returns, or admit a sleeve. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/borrow-execution-foundation ------------------------------------------------------------------------------ # Point-in-time securities-borrow foundation AlphaForge now has tested primitives for security-level borrow availability, locates, fees, recalls, and forced-buy-in deadlines, plus optional event-driven integration for locate caps, dynamic fees, and recall cover orders. This is engineering evidence, not historical borrow coverage, return evidence, or a sleeve-admission result. No market returns were opened and no research hypothesis was spent. ## What is enforced - Borrow quotes carry observation, availability, and exact validity timestamps. - Easy, hard, and unavailable states are explicit. An unavailable quote cannot report lendable quantity. - Locates may be granted, quantity-capped, or denied; a grant cannot exceed requested or observed availability. - The required locate covers only incremental short exposure after netting long inventory and existing shorts. - Security-level fees accrue on ACT/365 only when one quote covers the entire interval. - Recall notices are point-in-time and cover no more than the recalled quantity or remaining short. - A missed cover deadline becomes an explicit forced-buy-in instruction. No execution price or fill is fabricated. When a borrow provider is supplied to the event-driven backtester, incremental short orders are denied or quantity-capped from the PIT locate, and open shorts accrue the security-level fee whose quote covers the complete holding interval. With no provider, the existing general-collateral path and golden master remain unchanged. Known recalls become reduce-only next-bar cover orders. Conflicting strategy orders are superseded, deadline breaches are labeled `forced_buy_in`, and an obligation is reduced only by the quantity actually filled. Dropped or partial orders therefore retry on later bars. ## Deliberate boundary The platform does not yet ingest a historical securities-lending feed, reserve broker locates, model rebates/collateral, persist outstanding obligations across process restarts, allocate partial recalls across strategies, simulate buy-in auctions, or route and reconcile live orders. Existing general-collateral assumptions and current broker `easy_to_borrow` flags are not historical evidence. The machine-readable capability statement is published at [`/glassbox/borrow_execution_contract.json`](/glassbox/borrow_execution_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/cftc-hedging-pressure-feasibility ------------------------------------------------------------------------------ # CFTC hedging pressure — no-return feasibility protocol ## Scope This stage audits only identifiers, dates, market labels and commodity classifications from the CFTC Disaggregated Futures Only dataset (`72hh-3qpy`). It deliberately excludes producer, dealer, managed-money and other position columns; it loads no prices and calculates no returns. ## Point-in-time constraint CFTC says each report normally contains Tuesday positions and is released Friday at 3:30 p.m. Eastern, with holiday exceptions. CFTC also says a complete history of actual release dates does not exist and only the recent 13 months are available. Therefore `report_date + 6 days` is stored only as a conservative Monday default; it is not called a verified release timestamp. ## Locked gates 1. At least 100,000 metadata rows and 15 calendar years. 2. At least 99% completeness for identity, report date, market and commodity identifiers. 3. Dataset IDs are unique even though CFTC does not warrant a formal primary key. 4. At least 98% of report dates are Tuesdays. 5. Exact historical release lineage covers at least 95% of observations. 6. A separately reviewed mapping from CFTC market codes to liquid tradable contracts is sealed. The last two gates fail closed until evidenced. A structurally clean dataset cannot pass to a return test without them. ## Next action and kill rules If metadata gates pass but release lineage fails, publish `DATA_GATED`. A future branch may use archived CFTC pages to reconstruct release dates or preregister a lag conservative enough to cover known disruptions, but it must do so before returns are opened. Kill if release timing remains unverifiable, contract mapping is unstable, lagged positions add nothing beyond trend and curve carry, stressed costs fail, or correlation to AlphaTrend exceeds 0.35. No failed return identity may be rescued by changing the sign, lag, normalization or market set. ## Reachability audit — 2026-08-22 The exact-release gate is now measured unreachable as preregistered. CFTC's [COT documentation](https://www.cftc.gov/MarketReports/CommitmentsofTraders/index.htm) states that no historical release-date list exists and only 13 months of release dates are available. Even granting exact timestamps to every observation in that full window, only 8.37% of the 183,676 metadata rows could be covered, versus the locked 95% requirement. CFTC's [special announcements](https://www.cftc.gov/MarketReports/CommitmentsofTraders/HistoricalSpecialAnnouncements/index.htm) also document holiday, incident, and shutdown delays that make a universal Friday timestamp false. Building the fixed tradable-contract map is therefore not authorized for this protocol: it cannot rescue the independent release-lineage failure, and the family registry already binds this mechanism to the retired killed `cot_positioning` campaign. A future conservative-lag redesign would require a new preregistered identity and a documented novelty distinction. It cannot be called completion of this candidate. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/corporate-action-basis-reconstruction ------------------------------------------------------------------------------ # Reconstructing corporate-action basis without opening strategy returns **Short title:** Corporate-action basis reconstruction **Author:** Arhan Canli **Project:** AlphaC Algorithms / Canli Capital **Research status:** Corrected reproduction complete; factor remains killed; global split gate failed ## Abstract An immutable operating-margin replay exposed a corporate-action data defect: dividend values from the frozen Sharadar ACTIONS archive were being treated as raw cash amounts even when they were expressed on a later split-adjusted basis. This note records the diagnosis, issuer-anchored repair contract, versioned materialization, full-lake validation, external cross-check, path-exposure audit, exact issuer verification, and one fail-closed corrected reproduction. The dividend gate passes after repair, while the global split-boundary gate remains failed. The corrected operating-margin result improves materially but remains negative and **KILLED**; it does not earn sleeve admission or production promotion. ## Trigger and preserved result The valid historical operating-margin result remains **KILLED**: Sharpe `-0.4173809362582861`, maximum drawdown `0.39623483315571484`, and final equity `63911.64507926929`. A later apparent Sharpe of `0.2595404513705637` is rejected because its replay was contaminated by unverified corporate-action units. The first divergence was a legitimate RGLD dividend; the largest distortion was a CMCT cashflow produced by interpreting a split-adjusted dividend as raw cash. Historical results are not rewritten by this investigation. ## Diagnosis and repair contract Across 167,120 positive dividend rows, 422 exceeded the full pre-ex-date raw close. Applying the product of same-ticker raw `action='split'` values on or after each dividend date reconciled 421 of those 422 rows. Raw `adrratiosplit` rows were treated as metadata, not as a second executable share mutation. Apple provides the ordinary-event anchor. The frozen source contains a dividend value of `0.205` on 2020-05-08 and a later four-for-one split. Their product, `0.82`, exactly equals Apple's issuer-declared cash dividend. This supports—but does not elevate beyond inference—the following normalization: `raw cash amount = source dividend value × product of later same-ticker market split ratios` The sole unresolved impossible row, VATE on 2020-05-14, was quarantined exactly after issuer and independent-provider evidence failed to support it. A zero-value HDB marker was also quarantined exactly. No amount was imputed. The source archive and original lake remain immutable. The sealed repair receipt has content hash `sha256:48fcfde04e3c7f7d28bc349c93b55911f97514317e74bac67fca80980b621e47`. ## Versioned materialization The corrected corporate-action lake is a new physical version, not an in-place edit. It maps 171,924 base rows to 171,780 normalized rows: 167,118 dividends were normalized, 31,807 dividend amounts changed, 142 ADR-ratio metadata rows were removed from execution, 4,662 market-split rows were preserved, and exactly two source rows were quarantined. Non-corporate-action datasets are hard-linked and the original lake is preserved by hash. The materialization receipt has content hash `sha256:178c4564f9c5e0b917db752879c08a2f25c3133e614f92f0ecec6af3c33ef1c0`. ## Full-lake validation The dividend gate passes: all 167,118 dividend rows were checked; zero exceed the full pre-ex-date close; the maximum observed multiple is `0.9836065573770493`; and 259 rows lack a two-sided price boundary and remain explicitly counted. The split gate fails. Of 4,662 market-split groups, 4,189 are consistent, three would verify under the reciprocal ratio, 109 have unexplained price boundaries, and 361 lack a two-sided price boundary. In total, 473 failed or unverifiable events affect 401 instruments. The validation receipt therefore records `CORPORATE_ACTION_VALIDATION_FAILED_SPLIT_BOUNDARIES`, content hash `sha256:6ed09e42b6e6a744df4dfb3c9bbd927b58ac70a813c9c819a1592daa8afae583`. The engine now fails closed when an exposed position or order encounters a split that violates its price-boundary sanity check. It may no longer log the defect and continue with unconverted exposure, which could fabricate profit and loss. ## Independent split cross-check A GET-only Polygon reference audit downloaded 28,079 split records from 1997-12-31 through 2026-08-23 and cross-checked all 473 local failed or unverifiable events by date and ticker alias. The external provider confirms the stored ratio for 114 events, confirms the reciprocal of the stored ratio for one event (BMNR on 2021-04-27), reports a materially different event ratio for two events (ACHC on 2011-11-01 and JHG on 2017-05-30), and has no matching event for 356. Three initially apparent conflicts resolve at the source's recorded five-decimal precision. These classifications narrow the next investigation; they do not close the gate. Stored-ratio confirmation does not explain a disagreeing or absent local price boundary. BMNR is a candidate for a separately sealed reciprocal-ratio repair, not an authorized mutation. Conflicting and unmatched events remain closed. The external cross-check receipt has content hash `sha256:b401c5260988ba900d0acac857bfeda28a3cb353d6a18db3b9ef55890dc67a32`. ## Lifecycle and sealed-path accounting The 473 failed or unverifiable events were then classified against each instrument's frozen price lifecycle. Of these, 332 precede the first price, 23 occur on the first-price boundary with no pre-existing exposure, five follow the final price, 112 occur within a price lifecycle, and one lacks a frozen lifecycle. This narrows the global unresolved set without deleting a source event or declaring the lake valid. The lifecycle receipt has content hash `sha256:deed344bd2823f820e326b69f510f704a11b3ba3d2621100594da2600f78cb2d`. Within the operating-margin window, 71 in-lifecycle failed events were audited against the sealed historical order and position path. Fifty-one had independent-provider support and 20 remained unresolved. Sixty-nine had no observed pre-boundary position or queued order. Exactly two were held: ADTX on 2022-09-14 and SPCE on 2024-06-17. This is historical-path evidence, not an assumption about an unseen counterfactual path. The exposure receipt has content hash `sha256:c9d379d6a7bd9a7991f561e84162ba1f8c78715b32d540b7b56b6d179eaf6dfd`. Issuer filings independently confirm ADTX's one-for-50 reverse split and SPCE's one-for-20 reverse split on the exact stored dates. The corrected reproduction therefore accepted only two exact `(instrument, ex-date, ratio)` tuples—ADTX at `0.02` and SPCE at `0.05`—as authorization to bypass the price-gap heuristic. A wrong instrument, date, or ratio still failed closed. The exact-event verification receipt used by that reproduction has content hash `sha256:fa8595944365c27e6a8a49a490ccdafd7f37db31808e569da527c8926fb1b550`. ## Global fail-closed routing and subsequent issuer resolutions Every one of the 473 failed events now has exactly one governance route. Three hundred sixty-six are non-executable under frozen lifecycle evidence, 25 have exact issuer authorization, 12 are issuer-verified composite actions that remain quarantined, 16 have issuer conflicts or date mismatches, and 52 have provider corroboration but remain failed closed because their local price boundary still disagrees. Two remain unresolved within a price lifecycle; the sole no-lifecycle event is now an issuer-timeline conflict. The global gate therefore remains failed. The policy receipt has content hash `sha256:20dceb4995121d0895223f830d87e858c5f527e2936cadb5cdf3a98778ab2b28`. The two additional exact authorizations are AMPE and EVHC. Ampio's filing establishes a fifteen-to-one reverse split effective on 2022-11-09 and the first resumed NYSE American trading date on 2022-11-22. The frozen five-decimal ratio `0.06667` is the rounded form of `1/15`; the authorization binds that exact stored tuple and creates no general tolerance. Envision's filing establishes a `0.334` merger exchange conversion and first Newco trading under `EVHC` on 2016-12-02. The batch receipt has content hash `sha256:beceafdeb0917e77ccd2c30d2bd95fd39b18e7f55e115307a36d5cb13199567e`. Ocean Rig is the fifth exact authorization. Its issuer release establishes a 1-for-9,200 reverse split effective on 2017-09-21. The frozen `0.00011` ratio is the five-decimal representation of `1/9,200`, and the 2017-09-22 event date is the first frozen price bar after the issuer-effective date. Concurrent restructuring issuance explains why the local price gap cannot validate the split mechanically; the authorization covers only the old-share mutation, not any entitlement to new restructuring shares. The receipt has content hash `sha256:d5b2e24b502dffc1c059e82525c30829a657a0add8354896ed57b60f474d06ea`. ETS1 is the sixth exact authorization. The issuer filing establishes a one-for-eight reverse split effective on Friday, 2005-10-28. The frozen event on Monday, 2005-10-31 is the first subsequent price bar, and its stored ratio is exactly `0.125`. No nearby companion action is recorded, so the authorization binds only that exact instrument, event date, and ratio. The receipt has content hash `sha256:855fdfd19c27b5cdb0250bec08fa9d443acd966c3c3b08a912d5891a0b596ce1`. Six further plain splits complete the 12 exact authorizations. Issuer filings bind BNI's three-for-one distribution, EPAC's two-for-one distribution, GDW's three-for-one distribution, HAFC's and JAKK's three-for-two distributions, and LNG's one-for-four reverse split to the frozen event date or first frozen post-distribution bar. Each has an exact scalar shareholder mutation, no nearby companion action, and no general ratio tolerance. The batch receipt has content hash `sha256:6342504521c9d41ce2e22eb7fd54273ba7db85ca46a3ab00a24557c52fa400da`. Four further events bring the exact authorization set to 16. CuraGen's filing binds its two-for-one distribution on 2000-03-30 to the first subsequent frozen bar. Wild Oats' filings bind its three-for-two splits effected on 1998-01-07 and 1999-12-01 to their respective first subsequent frozen bars. Intermedia's filing similarly binds its two-for-one split paid on 1998-06-15 to the 1998-06-16 frozen event. All four lack nearby companion actions. Allaire remains quarantined because its filing confirms the split and record date but does not establish the exact distribution or trading-effective date needed to bind the frozen event. The batch receipt has content hash `sha256:e6885c1f1b355f5fb71f030a0edb9d21baf3a5bacd07de0ce99f38f0ea435a1c`. UTI Energy is the 17th exact authorization. Its filing states that the board authorized a two-for-one stock split in the form of a stock dividend, paid on 2000-10-03 to holders of record on 2000-09-25. The issuer payment date, frozen event date, and stored ratio `2.0` agree exactly, and there is no nearby companion action. The receipt has content hash `sha256:4fd9b0d804c589bbf619ab89ed1146a57d8a6448911cc847da1bcdead781533a`. Three further events bring the exact authorization set to 20. McLeodUSA's filings bind its two-for-one distribution on 1999-07-26 and three-for-one distribution effective 2000-04-24 to their respective first subsequent frozen bars. Metzler's filing binds its three-for-two stock dividend directly to 1998-04-01. The separate NCI1 event on 1998-04-02 is not authorized because the issuer describes only the April 1 action. The exact batch receipt has content hash `sha256:61f151501bd8c35b483517399632062aeea7e48938129ee6b91fbe373aa6bbf3`. Five further plain events bring the exact authorization set to 25. Beyond.com and Network Commerce each completed one-for-15 reverse splits on their frozen event dates. Worldwide Xceed completed a one-for-10 reverse split on its frozen date. ACE Limited's three-for-one distribution and Cellular Communications International's three-for-two distribution bind to their respective first frozen post-distribution bars. Each stored ratio is the exact issuer ratio or its explicit five-decimal representation, and none has nearby companion-action context. The batch receipt has content hash `sha256:3fe329129db627a4fa26b3a6f51d75ddc70ac77d5857f788de68c399b08384ac`. Twelve composite share mutations are issuer-verified but not executable. ITT completed a one-for-two reverse split after distributing Exelis and Xylem; Sabra's REIT conversion delivered one Sabra share for every three Old Sun shares; NorthStar completed a one-for-two reverse split alongside its asset-management separation; IHG exchanged 11 new shares for every 15 old shares plus £1.65 cash per old share; and Tyco completed a one-for-four reverse split immediately after distributing Tyco Electronics and Covidien. CMO paired its one-for-two reverse split with a $7.30 special cash dividend on the same ex-date. ATNI's `0.4` share mutation accompanied one Emerging Communications share per old share, while KSU's one-for-two reverse split accompanied two Stilwell shares per old share. KMI1's three-for-two split was distributed concurrently with a cash dividend that is absent from the frozen actions feed. AT&T's one-for-five reverse split followed its same-day Broadband spin-off and Comcast-share distribution. Redback's approximate 73.39:1 reverse split accompanied new creditor equity and stockholder warrants under its bankruptcy plan. Sodexho Marriott's one-for-four reverse split was part of Marriott's spin-off and merger transaction: each old share also received one share in each of two New Marriott classes, and the issuer completed the transaction four days after the frozen event date. Applying only the share mutation would corrupt shareholder value, so all 12 remain composite-action quarantines. The receipt has content hash `sha256:e1d1d9fb384877b52199e86d0924e126b4eb208a7a9382ef3c9fc2aa5e60334b`. Sixteen records remain hard quarantined because primary issuer evidence conflicts with the frozen event semantics. GEVA's one-for-five effective date differs from the stored event date; MHGVY's filing says each ADS represented one ordinary share rather than the stored `0.1`; DIAL1's 200-for-one reverse split became effective before the frozen event date; and PRTK's one-for-five mutation occurred inside a merger that also issued `0.14134` shares per target share, before the frozen event date. IPAR, USB, and CDR have issuer distribution or occurrence dates that differ from their frozen events. NVEC's stored one-for-five mutation occurred inside a merger that also issued 3.5 surviving-company shares per acquired-company share, before the frozen event date. NCI1's April 2 row duplicates the issuer's single April 1 stock dividend. Peregrine's issuer filing binds its old-to-new equity conversion to the August 7 reorganization effective date and states that new stock traded from August 8, not the frozen October 17 event date. Ambev's issuer filing places its one-for-five share conversion and stock bonus on May 31, not the frozen June 9 event. Eni's filing places its two-for-one reverse split and ADS-ratio change on June 18, not the frozen June 22 event. EXMCQ's filing shows stable shares outstanding across the alleged split window and identifies `0.05` as a rights-offering exercise price rather than a share mutation. None is executable as a plain split. Atlas Air's issuer filing reports 19,815,338 shares at 2005 year-end and 20,049,108 at 2006 Q2, contradicting the frozen six-for-one mutation. Alcon's filing reports 308,519,051 shares at 2003 year-end and 305,654,454 at 2004 year-end, contradicting the frozen one-for-ten mutation. Arizona Aircraft Spares' filing states that the public company was incorporated in December 2000 and that `AZAA` trading began on 2003-10-01; the frozen 2000-11-10 event predates both the issuer and ticker lifecycle. None of the three additions authorizes a ratio repair. The conflict receipt has content hash `sha256:fa5c744c0268e1c05c32d3fbfd286db01073a9e1a6367331ca908dae04145395`. Six records are resolved in the opposite direction. BASXQ, TDW, CIVI, KEGX, EGLE2, and CQB all cross bankruptcy or recapitalization boundaries where old equity was canceled and replacement value included a new CUSIP, warrants, aggregate ownership allocations, new shares, or combinations of those instruments. Chiquita's old preferred, preference, and common stock was exchanged for an aggregate new-equity allocation plus seven-year warrants. A scalar stored ratio is not a complete supported old-to-new shareholder conversion for any of the six. Each row is preserved in lineage and routed as a non-executable lifecycle discontinuity; a simulated position crossing one must abort. The receipt has content hash `sha256:af66b2190bc8aac83320d7ff7b8b540d57372698bd8a6d9cfde96f668d7f44dc`. ## Corrected zero-trial reproduction A trial-specific authorization bound the corrected lake, failed global split status, lifecycle accounting, sealed-path exposure, exact issuer events, and execution-code hashes before returns were reopened. One reproduction of the immutable `single_operating_margin` identity then ran in a new content-addressed directory. It spent zero hypotheses and left the historical result and experiment ledger unchanged. | Measurement | Immutable result | Corrected reproduction | |---|---:|---:| | Annualized Sharpe | -0.4173809363 | -0.1457641219 | | Maximum drawdown | 39.62348332% | 24.46692315% | | Final equity | $63,911.65 | $84,805.92 | | Total return | Not separately sealed | -15.19408261% | The correction removes a material distortion, but it does not rescue the factor: Sharpe, CAGR, and total return remain negative. The verdict remains **KILL**. The sealed reproduction receipt has content hash `sha256:04c000216be3ba13f1ba3e196d8543e77ff1f18a876753005c6b13a7b856ed0f`. ## Claim boundary and next decision This study reconstructs corporate-action data and reports one corrected reproduction of an already-spent identity. It spends no new strategy hypothesis and establishes no sleeve, live-performance, capacity, or forward-performance result. The global split gate remains failed; future identities may not treat this lake as globally valid while two events remain genuinely unresolved. A runner may bind only an explicitly sealed exact authorization and must abort on any other exposed failed event. Unmatched records cannot be made green by deletion. Primary issuer and schema references: - [Apple dividend history](https://investor.apple.com/dividend-history/default.aspx) - [Apple 2020 dividend filing](https://www.sec.gov/Archives/edgar/data/320193/000032019320000050/a8-kexhibit991q2202032.htm) - [Sharadar equity-prices documentation](https://sharadar.com/docs/stocks) - [Sharadar corporate-actions documentation](https://sharadar.com/docs/actions) - [ADTX reverse-split filing](https://www.sec.gov/Archives/edgar/data/1726711/000121390022061276/ea166672-8k_aditxt.htm) - [SPCE reverse-split filing](https://www.sec.gov/Archives/edgar/data/1706946/000119312524159991/d829568d8k.htm) - [AMPE reverse-split and trading-resumption filing](https://www.sec.gov/Archives/edgar/data/1411906/000155837022018084/ampe-20221117xex99d1.htm) - [EVHC merger conversion and first-trading-date filing](https://www.sec.gov/Archives/edgar/data/1678531/000167853117000044/evhc-2016123110k.htm) - [Basic Energy Services emergence filing](https://www.sec.gov/Archives/edgar/data/1109189/000110918916000402/basic-form8xkforemergence.htm) - [Basic Energy Services new-equity trading notice](https://www.sec.gov/Archives/edgar/data/1109189/000110918916000402/exh992201623pressrelease.htm) - [Ocean Rig restructuring and reverse-split release](https://www.sec.gov/Archives/edgar/data/1447382/000091957417006882/d7659156_ex99-1.htm) - [Tidewater emergence filing](https://www.sec.gov/Archives/edgar/data/98222/000119312517242513/d431632d8k.htm) - [Tidewater new-equity trading notice](https://www.sec.gov/Archives/edgar/data/98222/000119312517242513/d431632dex992.htm) - [Bonanza Creek emergence filing](https://www.sec.gov/Archives/edgar/data/1509589/000095010317004047/dp75602_8k.htm) - [Key Energy emergence filing](https://www.sec.gov/Archives/edgar/data/318996/000119312516794624/d313262d8k.htm) - [Key Energy restructuring allocation](https://www.sec.gov/Archives/edgar/data/318996/000119312516794624/d313262dex991.htm) - [Eagle Bulk emergence filing](https://www.sec.gov/Archives/edgar/data/1322439/000143774914018448/egle20141015_8k.htm) - [ITT spinoff and reverse-split filing](https://www.sec.gov/Archives/edgar/data/216228/000095012311095346/y93291e8vk.htm) - [Sabra REIT conversion filing](https://www.sec.gov/Archives/edgar/data/1492298/000119312510261436/d8k.htm) - [NorthStar reverse-split disclosure](https://www.sec.gov/Archives/edgar/data/1273801/000127380114000061/nrf0630201410-q.htm) - [IHG scheme share exchange and cash consideration](https://www.sec.gov/Archives/edgar/data/858446/000115697305000999/u49002e6vk.htm) - [Tyco distributions and reverse-split disclosure](https://www.sec.gov/Archives/edgar/data/833444/000110465907052190/a07-17393_3ex99d1.htm) - [GEVA reverse-split filing](https://www.sec.gov/Archives/edgar/data/911326/000119312511294917/d251415d8k.htm) - [MHGVY ADS-ratio filing](https://www.sec.gov/Archives/edgar/data/1578526/000110465914032214/a14-11076_120f.htm) - [DIAL1 reverse-split filing](https://www.sec.gov/Archives/edgar/data/771950/000095012309035313/c89015e10vq.htm) - [PRTK merger and reverse-split filing](https://www.sec.gov/Archives/edgar/data/1178711/000119312509020145/d8k.htm) - [ETS1 reverse-split filing](https://www.sec.gov/Archives/edgar/data/846909/000095013505006345/b57408ene10vq.htm) - [HAFC stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/1109242/000091205701539508/a2062901z10-q.htm) - [JAKK stock-dividend filing](https://www.sec.gov/Archives/edgar/data/1009829/000095014899002339/0000950148-99-002339.txt) - [LNG reverse-split filing](https://www.sec.gov/Archives/edgar/data/3570/000119312504049308/d10k.htm) - [BNI stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/934612/000093461298000017/0000934612-98-000017.txt) - [EPAC stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/6955/000095013198002327/0000950131-98-002327.txt) - [GDW stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/42293/000004229300000009/0000042293-00-000009.txt) - [CuraGen stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/1030653/000092701600001788/0000927016-00-001788.txt) - [Wild Oats 1998 stock-split filing](https://www.sec.gov/Archives/edgar/data/909990/000092735698000444/0000927356-98-000444.txt) - [Wild Oats 1999 stock-split filing](https://www.sec.gov/Archives/edgar/data/909990/000089973300000020/0000899733-00-000020.txt) - [Intermedia stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/885067/000095014498009211/0000950144-98-009211.txt) - [UTI Energy stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/912899/000095012900005078/0000950129-00-005078.txt) - [ATNI split-off filing](https://www.sec.gov/Archives/edgar/data/879585/000095013098001580/0000950130-98-001580.txt) - [K N Energy split and concurrent-dividend filing](https://www.sec.gov/Archives/edgar/data/54502/000095013499001524/0000950134-99-001524.txt) - [KSU Stilwell distribution and reverse-split filing](https://www.sec.gov/Archives/edgar/data/54480/000005448000000020/0000054480-00-000020.txt) - [McLeodUSA 1999 stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/919943/000092838599002618/0000928385-99-002618.txt) - [McLeodUSA 2000 stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/919943/000092838500001564/0000928385-00-001564.txt) - [Metzler three-for-two stock-dividend filing](https://www.sec.gov/Archives/edgar/data/1019737/000095013198002261/0000950131-98-002261.txt) - [Beyond.com reverse-split filing](https://www.sec.gov/Archives/edgar/data/1060531/000109581101504316/f74865e10-q.htm) - [Network Commerce reverse-split filing](https://www.sec.gov/Archives/edgar/data/1087879/000113724301500051/form10qnci.txt) - [Worldwide Xceed reverse-split filing](https://www.sec.gov/Archives/edgar/data/721176/000091205701508952/a2045655z10-q.txt) - [ACE three-for-one split filing](https://www.sec.gov/Archives/edgar/data/896159/000090256198000175/0000902561-98-000175.txt) - [Cellular Communications International stock-dividend filing](https://www.sec.gov/Archives/edgar/data/870762/000087076298000021/0000870762-98-000021.txt) - [CMO special-dividend and reverse-split filing](https://www.sec.gov/Archives/edgar/data/766701/000095013401503792/d88804e8-k.txt) - [CDR stock-split filing](https://www.sec.gov/Archives/edgar/data/761648/000095012303009594/y88871sv11.htm) - [IPAR stock-dividend split filing](https://www.sec.gov/Archives/edgar/data/822663/000093041301501460/c22238_10q.txt) - [NVEC merger and reverse-split filing](https://www.sec.gov/Archives/edgar/data/724910/000091205700052325/a2032378z8-k.txt) - [USB stock-split filing](https://www.sec.gov/Archives/edgar/data/36104/000104746999007568/0001047469-99-007568.txt) - [AT&T Broadband spin-off and reverse-split filing](https://www.sec.gov/Archives/edgar/data/5907/000095012303003510/e84804e10vk.txt) - [Redback bankruptcy securities and reverse-split filing](https://www.sec.gov/Archives/edgar/data/1081290/000119312504042090/d10k.htm) - [Marriott spin-off, merger, and one-for-four reverse-split filing](https://www.sec.gov/Archives/edgar/data/1048286/000092838598000674/0000928385-98-000674.txt) - [Peregrine reorganization conversion and trading-date filing](https://www.sec.gov/Archives/edgar/data/1031107/000104746904014838/a2134573z10-k.htm) - [Ambev share conversion and stock-bonus filing](https://www.sec.gov/Archives/edgar/data/1113172/000114420407063976/v089496_20-f.htm) - [Eni reverse-split and ADS-ratio filing](https://www.sec.gov/Archives/edgar/data/1002242/000131143505000018/sj0605en20f2.htm) - [EXMCQ shares-outstanding and rights-offering filing](https://www.sec.gov/Archives/edgar/data/725282/000072528298000006/0000725282-98-000006.txt) - [Atlas Air shares-outstanding filing](https://www.sec.gov/Archives/edgar/data/1135185/000093041306005893/c43889_10-q.htm) - [Alcon shares-outstanding filing](https://www.sec.gov/Archives/edgar/data/1167379/000116737905000020/acl20f2004.htm) - [Arizona Aircraft Spares formation and trading-history filing](https://www.sec.gov/Archives/edgar/data/1141880/000109432804000079/arizona10ksb041404woex.txt) - [Chiquita reorganization equity-and-warrant filing](https://www.sec.gov/Archives/edgar/data/101063/000102140802003831/d10k.txt) ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/corporate-action-lifecycle ------------------------------------------------------------------------------ # Corporate-action and delisting lifecycle replay AlphaForge now replays point-in-time splits, cash dividends, and metadata-confirmed delistings inside the event-driven backtester. This is engineering evidence, not a claim of complete historical coverage or investment performance. No return data was opened and no research hypothesis was spent. ## Enforced behavior - Every split and cash dividend retains its ex date and source availability timestamp. - An event published after its ex boundary fails closed; the engine will not rewrite an earlier holding with information that was unavailable then. - Splits convert held shares, average entry prices, and pre-ex queued quantities before the ex-date fill. A price-discontinuity guard rejects inconsistent split records. - Cash dividends accrue against the signed position entering the ex date: longs receive and shorts pay. The current schema lacks a payable date, so this is explicitly booked as an ex-date receivable or payable. - Applied transformations and cashflows persist in `corporate_actions.parquet` with each backtest. - A terminal price history is liquidated only when SCD2 instrument metadata supplies a qualifying `delisted_ts`. If metadata still says active, the run halts instead of inventing an exit. ## Defects closed The prior engine ignored dividend rows already present in the point-in-time lake. It also treated any terminal price history as a delisting and sold at the last close, even when lifecycle metadata said the instrument was active. Finally, a split converted an existing position but did not rescale a pre-ex order when the book was flat, allowing a reverse split to multiply intended exposure. Focused regressions now pin all three cases. ## Deliberate boundary The platform does not yet model payable-date settlement, withholding tax, fractional-share cash-in-lieu, mergers, tender consideration, spin-offs, rights, symbol changes, bankruptcy recoveries, delisting auctions, vendor correction histories, or live broker reconciliation. Complex same-boundary split/dividend combinations fail closed when the holding is exposed because the current lake does not encode deliverable-basis ordering. The machine-readable contract is available at [`/glassbox/corporate_action_contract.json`](/glassbox/corporate_action_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crowding-risk-foundation ------------------------------------------------------------------------------ # Point-in-time crowding and stressed capacity AlphaForge now has a coverage-aware crowding gate in the shared pre-trade path. It keeps institutional ownership, short interest, borrow utilization, fund flows, and liquidation time as separate observables rather than compressing them into an attractive but unauditable score. ## Enforced behavior - Every observation has explicit availability and validity timestamps. - Missing required metrics produce `UNASSESSABLE`; they are not imputed from current data. - Each limit breach is named independently. - Liquidation days use a configured daily ADV participation ceiling and are repeated under an explicit ADV haircut. - `BLOCK` and `UNASSESSABLE` reject new risk in the shared pre-trade checker. - Reduce-only orders remain permitted. ## Evidence boundary The arithmetic and pre-trade gate are implemented and tested. Historical ownership and mapped fund-flow coverage are not yet available across the traded universe, thresholds are not empirically calibrated to unwind losses, and correlated portfolio liquidation is not modeled. Therefore this does not claim that any historical or current sleeve passed a crowding test. The deterministic stress cases and source hashes are published at [`/glassbox/crowding_risk_contract.json`](/glassbox/crowding_risk_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-carry-lineage ------------------------------------------------------------------------------ # Crypto perpetual carry: trial lineage, capacity failure, and live evidence boundary **Short title:** AlphaForge crypto carry: complete trial lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `crypto_carry` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-24 ## Abstract AlphaForge studies cross-sectional carry in USDT-margined perpetual futures, ranking contracts by the negative trailing mean of observed funding: expensive longs rank as shorts and negative-funding contracts as longs. This paper reconciles all 25 charged hypothesis identities. The historical `carry_fund_21` walk-forward grew a simulated $100,000 to $138,236.27 from 2022-02-08 through 2026-06-01, with Sharpe 0.6766 and maximum drawdown 19.60%, but failed its DSR gate. A later eight-configuration matrix reported PBO 0.8818, no deflated winner, and a **NO-DEPLOY** verdict. Seven identities belong to a broader multi-factor engine, making their capacity sweep context rather than carry capacity; the sole carry-tilted arm had Sharpe 0.0618. An exact-timestamp current-state replay on 2026-08-23 does not reproduce the selection: final equity is $103,335.16, Sharpe 0.1065, and maximum drawdown 20.98%. At the first decision, the historical 22 names included EOS while the current 21 did not; restoring EOS reproduces all ten historical order quantities. A zero-trial audit binds every surviving ledger: overlapping prices, position and funding marks, and funding rates agree, but holdings and state paths diverge. Because the historical run sealed neither its exact code nor derived-input snapshots, a unique additive attribution of the multi-year gap is structurally unidentifiable. Prospective private snapshots are now enforced but cannot repair that omission. The material correction therefore remains open and external submission is blocked. The forward record is weaker: AlphaForge is a local simulated paper broker, not an Alpaca account or externally attested record. Its first configuration was signal-dead; funding cashflows were omitted until a forward-only repair; fewer than half of intended hourly cycles completed; and the stored universe remains frozen at 2026-06-01. Crypto carry is therefore an incumbent experiment with a plausible mechanism, severe selection and capacity evidence, known operational defects, and an unmet forward burden of proof, not a validated sleeve. ## Claim boundary This paper supports six claims only: 1. The funding-carry hypothesis and point-in-time implementation can be stated precisely. 2. Every charged family identity is enumerated in a public machine-readable manifest. 3. The selected positive artifact and later negative carry/blend evidence are published together. 4. A related multi-factor engine's capacity degradation is contextual evidence only and is not presented as carry capacity or investable capacity. 5. The paper record, defects, corrections, and unresolved production gaps are disclosed. 6. The selected artifact is preserved as a historical result, but its current exact reproducibility is disproved and the open correction is machine-verifiable. It does **not** establish a forward Sharpe, expected maximum drawdown, future return, live-money performance, riskless arbitrage, or externally verified execution. It does not establish that the current live universe is the same strategy as the selected historical artifact. ## Economic mechanism and falsifiable hypothesis Perpetual futures have no expiry date, so exchanges use recurring funding transfers to pull the contract toward its reference index. When the funding rate is positive, long holders pay short holders; when it is negative, shorts pay longs. A cross-sectional carry strategy therefore takes the opposite side of expensive positioning: it shorts persistently positive-funding contracts and buys persistently negative-funding contracts. The mechanism is compensation for constrained arbitrage, speculative demand, margin and liquidation risk, not a guaranteed convergence trade. It is falsified for this implementation if a point-in-time, net-of-fee, impact-aware walk-forward cannot remain positive after the complete search is charged, if the return disappears at useful capital, or if operational constraints make the intended decisions untradeable. The literature supplies a prior, never proof of this implementation: - He, Manela, Ross, and von Wachter show how funding anchors perpetuals to spot while margin, liquidation, and trading frictions prevent a riskless arbitrage interpretation ([Fundamentals of Perpetual Futures](https://arxiv.org/abs/2212.06888)). - Ackerer, Hugonnier, and Jermann develop no-arbitrage pricing for perpetual futures and the funding mechanism ([NBER working paper](https://doi.org/10.3386/w32936)). - Schmeling, Schrimpf, and Todorov document large, time-varying crypto carry and connect it to trend chasing and scarce arbitrage capital ([Crypto Carry](https://doi.org/10.2139/ssrn.4268371)). - Gornall, Rinaldi, and Xiao emphasize basis risk, constrained arbitrage capital, and speculative demand in perpetual markets ([Funding Payments Crisis-Proofed Bitcoin's Perpetual Futures](https://doi.org/10.2139/ssrn.5036933)). - Chi and coauthors find that basis is the strongest of the crypto-futures cross-sectional signals they study, while signal frequency matters ([Journal of Futures Markets, 2023](https://doi.org/10.1002/fut.22425)). These sources do not validate ALPHAC's market data, universe, costs, trial selection, or paper execution. ## Exact ALPHAC implementation For instrument `i`, decision time `t`, and the last `K` funding settlements known by `t`, the historical feature is: ```text carry(i,t) = -mean(funding_rate(i, settlements <= t)) * 3 * 365 ``` The negative sign makes a high positive funding rate unattractive to a long position. The factor uses a backward point-in-time as-of join: only settlements whose stored publication timestamp is available by `t` may enter the feature. `carry_fund_21` uses 21 settlements, historically about seven days at three settlements per day; `carry_fund_90` uses 90 settlements, historically about 30 days. The `3 * 365` annualization is an implementation assumption, not a universal exchange rule. Binance exposes `fundingIntervalHours` because intervals can be adjusted. Its official market-data API separately exposes funding history and current interval information ([Binance USD-M Futures market data](https://developers.binance.com/docs/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-History)). The ranking sign and settlement count remain meaningful when intervals change, but the annualized scale is then approximate unless the contemporaneous interval is applied. This limitation is disclosed rather than silently treating every period as eight hours. The selected artifact uses rank allocation, 25 legs, weekly rebalancing (168 hourly bars), a 10-basis-point no-trade band, 6,048 training bars, 1,512 test bars, 72 purge bars, and 168 embargo bars across 58 Binance perpetual instruments. Other charged identities change the funding horizon, blend, cadence, allocator, no-trade band, or regime treatment. Each change remains a distinct hypothesis identity even though all belong to one economic family. ## Trial lineage The public manifest binds 25 distinct return identities to `crypto_carry`. The labels below sum exactly to the family total; they are an accounting view and do not collapse the trial denominator. | Machine-label group | Charged identities | Research question | |---|---:|---| | `carry_fund_21` | 10 | Primary seven-day funding rank under cadence, allocator, band, and regime changes | | `carry_fund_21 + carry_fund_90 + carry_z_252` | 3 | Whether three carry horizons improve robustness | | `carry_fund_21 + carry_fund_90 + carry_z_252 + carry_mom_21_63` | 6 | Whether carry dynamics add information across the original and recovered legacy ledgers | | `carry_fund_90` | 2 | Whether a slower funding window is more persistent | | `carry_z_252` | 2 | Whether long-window normalization improves ranking | | `carry_fund_21 + carry_fund_90 + carry_mom_21_63` | 1 | Whether a reduced dynamic blend improves carry | | `carry_fund_21 + carry_fund_90 + mr_res_72` | 1 | Whether a carry-plus-residual-reversal tilt improves the multi-factor engine | | **Total** | **25** | Every identity remains charged to the union search burden | Twenty-one identities use the original crypto-perpetual research profiles. Four recovered legacy identities were filed with their durable result artifacts: one original carry experiment, two shorter-window carry experiments, and the grand matrix's carry-plus-reversal tilt. Their recorded annualized Sharpe observations range from -1.3945 to +0.6766. That range is not a confidence interval; it is direct evidence of specification sensitivity. The machine-readable source of truth is [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json). Select identities where `research_family_key` equals `crypto_carry`; each row includes its exact hypothesis key, immutable first measurement, source ledger, paper binding, and missing packet sections. ## Results and decisions ### Selected historical survivor > **Open material correction (2026-08-23).** The table below reports the immutable selected > historical artifact, not current-code performance. A current-state replay reports Sharpe 0.1065 > and 20.98% maximum drawdown, and the original run did not bind every derived input. The result is > therefore labelled **historical artifact; not currently exactly reproducible; open correction**. > It must not be described as validated or submission-ready. The persisted `crypto_carry_wk` artifact covers 1,575 daily observations from 2022-02-08 through 2026-06-01. It reports: | Measure | Persisted value | |---|---:| | Initial / final simulated equity | $100,000 / $138,236.27 | | Total return / CAGR | 38.24% / 7.80% | | Annualized Sharpe / volatility | 0.6766 / 11.83% | | Maximum drawdown | 19.60% | | Annual turnover | 33.22x | | Fees paid | $7,372.72 | | Net funding cashflow | $19,500.02 | | DSR / DSR gate | 0.0386 / failed | Funding contributed roughly half of the artifact's dollar gain. The result is therefore mechanically dependent on accurate funding settlement and cannot be validated by a live ledger that records price and fees but omits funding. The full-history Sharpe also hides a severe 2022 tail: the recorded 2022 segment was approximately -1.63 Sharpe and the full artifact's maximum drawdown was 19.60% around the LUNA/FTX period. ### Related system-level robustness study The later grand backtest used a 2021-01-01 through 2026-06-01 window and eight distinct configurations. It must not be described as a pure carry replication. Seven configurations use the engine's default, broad crypto multi-factor signal set (`alpha_names: null`) while varying ML, regime, cadence, band, or allocator. Only the eighth explicitly tilts to `carry_fund_21 + carry_fund_90 + mr_res_72`, and that arm reported Sharpe 0.0618. The seven multi-factor configurations belong to the separate `crypto_multifactor_engine` research family; the carry-tilted arm remains charged to `crypto_carry` because carry is its primary named input. All four Block A multi-factor variants produced the same Sharpe 0.0424 and DSR 0.2112 at $1 million. Other multi-factor variants reported annualized Sharpes of -0.7901 for daily rebalancing, -0.1994 for the tighter 10-basis-point band arm, and -0.0946 for MVO. None cleared DSR 0.95. Cross-sectional-combinatorial validation reported PBO 0.8818 against a gate below 0.20. There was no deflated winner and the persisted verdict is **NO-DEPLOY (honest null)**. Regime and ML labels did not rescue the result; the regime path was substantially inactive during cold-start periods, so equality of outcomes is not evidence that regimes never matter. The selected carry artifact and broad multi-factor matrix are not interchangeable. The matrix is preserved because it contains one carry-tilted arm and valuable system-level stress evidence, but its baseline, PBO, winner decision, and capacity curve cannot be represented as a direct institutional re-grade of `carry_fund_21`. The carry-specific conclusion comes from the weak 0.0618 tilted arm, the recovered legacy carry experiments, the complete 25-identity lineage, and the failed selected-artifact DSR, not from relabelling a broader system as carry. ## Capacity: related-system decay, not measured carry capacity The grand matrix's capacity sweep varies capital for its default broad multi-factor configuration without adding a new return hypothesis: | Initial capital | Sharpe | DSR | Maximum drawdown | Final equity | |---:|---:|---:|---:|---:| | $100,000 | 0.4009 | 0.4803 | 13.14% | $118,509.86 | | $1,000,000 | 0.0424 | 0.2112 | 13.59% | $993,219.39 | | $10,000,000 | -0.3720 | 0.0460 | 22.69% | $8,043,578.96 | This is evidence that the related engine is highly sensitive to market impact, not a measurement of pure carry capacity. The broad engine's edge is almost absent at $1 million and negative at $10 million under the committed model. Carry capacity is **unmeasured**: no persisted carry-specific capital sweep exists. It remains unestablished until a preregistered carry sweep and forward fills, order-book depth, venue fragmentation, and financing are observed at the intended scale. ## Forward paper record and dated corrections AlphaForge uses `ALPHAFORGE_PAPERBROKER`: locally simulated fills against live exchange order books with a local ledger. It is paper-only, not an Alpaca account, not live money, and not externally attested. ALPHAC's public composite is derived from its sleeves and is not itself a broker account. The following defects materially limit interpretation: - **Historical replay divergence, correction opened 2026-08-23.** A zero-new-trial replay on the current local state retained all 37,776 timestamps; the replay-minus-historical final-equity delta was -34,901.11 dollars. Sharpe fell from 0.6766 to 0.1065 and maximum drawdown rose from 19.60% to 20.98%. The old receipt wording incorrectly said the run isolated software drift and gave the non-exact outcome a `PASS` label. It has been re-sealed without rerunning as `REPLAY_EXECUTED_MATERIAL_CODE_OR_MUTABLE_INPUT_DRIFT_QUANTIFIED`. The first sizing difference is exactly attributable to mutable universe membership: EOS was present in the historical decision set and absent today. The corrected realized-vol overlay also changes the later path and bound 71 rebalances. The complete surviving path audit shows exact overlapping exogenous values but divergent quantities and risk states. It also proves why the omitted historical code, universe, metadata, and signal snapshots prevent a unique additive attribution of the terminal gap. Repeating the current-state replay cannot restore missing history. A prospective control now atomically freezes the exact signal frame, universe intervals, SCD2 metadata, execution partitions, resolved settings, dirty source tree, and lockfile before every persisted walk-forward. That control is deliberately not presented as retroactive evidence. The original artifact remains preserved; no historical number is silently overwritten. - **Signal-dead start, corrected 2026-07-05.** From 2026-06-23 through 2026-07-05 the public explanation said carry was compressed. The actual cause was a wiring bug that blended equity-fundamental factors, undefined for crypto, into the signal and invalidated every cycle. The loop was then restricted to `carry_fund_21` with weekly rebalancing and signal-health logs. - **Funding omitted, repaired forward-only.** The live paper broker initially moved cash only on fills, so the mechanism's funding cashflows never reached the account. A live settlement path was added with point-in-time publication filtering and tests. Historical marks were not restated, which preserves continuity but leaves the early record economically incomplete. - **Structural venue availability.** As of the evidence date, the loop had completed fewer than half of its expected hourly cycles. The current machine-readable paper state publishes the exact rolling count. A strategy that is unmanaged for most intended cycles is not meaningfully continuous even when its observed marks are retained. - **Commodity contamination remains unresolved.** The 2026-08-22 store still contains a 20-member universe effective from 2026-06-01. Four contracts, XAU, XAG, CL, and BZ, reference gold, silver, WTI, and Brent rather than cryptoassets. Removing them would change the strategy and therefore requires preregistration and remeasurement, not a silent filter. - **Universe refresh remains unresolved.** The newest stored crypto membership decision is 2026-06-01; the July and August decisions are absent. Catch-up logic exists in `LiveLoop`, but the production constructor does not pass a universe refresher. The current live book therefore remains based on stale liquidity membership. No missed historical rebalance is reconstructed. These corrections are evidence about process quality only if they remain visible and are pinned by tests. They are not evidence that the return process is profitable. ## Selection, diversification, and governing targets The family is one economic sleeve candidate, not 21 independent sources of alpha. Every return hypothesis remains charged to the union ledger. It also cannot receive diversification credit from old correlations measured before commodity-linked contracts overlapped AlphaTrend's metals and energy exposures. Correlation must be remeasured on the actual contemporaneous books and stressed in risk-off periods before any sleeve-count or diversification claim is made. The governing objective is an honest forward Sharpe of 1.5, expected maximum drawdown near 11%, and a diversified book of up to 14 sleeves. Crypto carry has established none of those targets. Its selected historical maximum drawdown already exceeds the program objective, its institutional re-grade is a null, and its forward execution record is too short and discontinuous to estimate a reliable Sharpe. ## Reproduction map Primary implementation and evidence paths: - `src/alphaforge/features/library/carry.py`: point-in-time funding features. - `src/alphaforge/data/sources/ccxt_source.py`: funding interval metadata ingestion. - `src/alphaforge/execution/paper.py` and `src/alphaforge/live/loop.py`: paper fills and live funding settlement. - `docs/design/alphaDesign.md`: original signal and annualization contract. - `var*/experiments.jsonl` and the four recovered `artifacts/**/experiments.jsonl` ledgers , immutable charged identities in the canonical durable union. - `artifacts/walkforward/crypto_carry_wk/walkforward.json`: selected historical survivor. - `artifacts/probe/crypto_carry_frozen_current_code_replay/replay_receipt.json`: truthful current-state non-reproduction receipt, metric deltas, and input-freeze audit. - `artifacts/probe/crypto_carry_replay_drift/first_rebalance_attribution.json`: exact causal reconstruction of the EOS membership effect on every first-decision order quantity. - `artifacts/probe/crypto_carry_replay_drift/full_path_attribution.json`: exhaustive surviving ledger comparison, code archaeology, and machine-readable non-identifiability proof. - `artifacts/audit/walkforward_input_snapshot_protocol.json` and `src/alphaforge/validation/input_snapshot.py`: prospective pre-run snapshot enforcement, atomicity, private data-rights boundary, and tamper validation. - `artifacts/publication/crypto_carry_replay_correction.json`: open material correction, publication decision, remediation, and zero-new-trial classification. - `artifacts/grand_backtest/20260616T143620Z/matrix.json` and `verdict.md`: related multi-factor robustness, PBO, capacity, and no-deploy context; only `C_carry` is carry-tilted. - `artifacts/research/trial_packet_manifest.json`: exact family/identity join and packet debt. - [`/glassbox/crypto_carry_selected_walkforward.json`](/glassbox/crypto_carry_selected_walkforward.json) : public selected-artifact payload. - [`/glassbox/crypto_carry_grand_matrix.json`](/glassbox/crypto_carry_grand_matrix.json): public grand-matrix payload. - [`/glassbox/crypto_carry_2022_tail.json`](/glassbox/crypto_carry_2022_tail.json): reproducible UTC-daily 2022 tail derivation. Reproduction requires the pinned project environment and the underlying market-data lake. Public artifacts permit claim auditing; they do not imply that every venue dataset can be redistributed. The full current-state equity Parquet remains local and is bound by its SHA-256 in the replay receipt; it is withheld from the public bundle under the conservative source-rights policy because it is a row-level derived series. ## Packet completeness and legacy limitations This family paper verifies shared identity, authorship, mechanism, literature, family accounting, and stable-publication sections for 25 identities. Its 2026-08-23 correction proves that the selected output is not currently exactly reproducible; this is a publication blocker, not a 26th return identity. It does not retroactively manufacture identity-level preregistrations, return series, exact environment snapshots, or complete rerunnable data bundles. The manifest must therefore continue to mark all 25 trial packets incomplete until every missing required section is proved. A family-paper binding is not a completed packet. ## Decision **Research decision:** retain AlphaForge only as an incumbent paper experiment under observation; do not describe the historical edge as validated; do not claim positive $10 million capacity; and do not admit this family under the current evidence. **Operational decision:** fail closed on promotion while the live universe is stale, commodity classification is unresolved, and intended-cycle continuity remains structurally weak. Preserve all prior marks and corrections; repair forward without reconstructing decisions that never ran. **Publication decision:** preserve the positive survivor, failed DSR, current-state replay, first-decision attribution, weak carry-tilted matrix arm, the broader engine's PBO 0.8818 and capacity decay, live execution provenance, and unresolved defects together under Arhan Canli's authorship. External submission is blocked while the material replay correction is open. A corrected release must present the historical and current-state results side by side, bind every derived input, and undergo independent scrutiny; no more favourable retrospective window may replace either result. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-carry-portable-v1 ------------------------------------------------------------------------------ # A hash-bound prospective test of cross-sectional perpetual-futures carry **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Trial:** `crypto_carry_portable_v1` **Hypothesis identity:** `da5f5f47f99f9bd2` **Evidence date:** 2026-08-24 **Status:** working paper; historical simulation; admission incomplete; not externally submitted or peer reviewed; not an investment solicitation ## Abstract This paper reports the first ALPHAC crypto-carry identity whose data decision, code, environment, trial parameters, and private execution inputs were frozen before its return path was computed. The experiment tests whether a weekly, cross-sectional funding-rate signal in USD Tether (USDT)-margined perpetual futures produces useful net out-of-sample returns under the current AlphaForge engine. The data rule admitted 57 instruments from checksum-verified official archives and excluded `ICPUSDT` before return computation because 14 required monthly funding archives were absent. The runner then stitched 25 purged and embargoed walk-forward legs from 8 February 2022 through 1 June 2026. The single registered path produced an annualized daily Sharpe ratio of 0.9689, 10.84% CAGR, 11.01% annualized volatility, 12.30% daily maximum drawdown, and 55.88% total return after the implemented costs. The probabilistic Sharpe ratio (PSR) was 0.9776. The deflated Sharpe ratio (DSR) was 0.0914 against 229 union identities: an important warning about the project-wide search burden, but not a standalone admission gate under the reservation-bound v7 contract. Sixteen of 25 individual legs had positive Sharpe; the median leg Sharpe was 0.4756. The minimum leave-one-calendar-year-out Sharpe was 0.6232, while the partial 2022 segment itself was negative. The candidate is **not admitted**. Its disposition is `INCOMPLETE`, not `ADMIT` and not `KILL`, because the preregistered stress, capacity, execution-scenario, diversification, book-contribution, and book-drawdown evidence is not yet complete. The probability of backtest overfitting (PBO) is undefined for the single registered path because no eligible path matrix was generated; it is reported as null rather than zero. At the primary-result seal, the next forward identity remained mechanically blocked pending a complete packet. This result demonstrates a promising frozen simulation and a strict research-governance process, not a validated sleeve or expected future performance. ## 1. Contribution and claim boundary The contribution is primarily methodological. The experiment joins five controls that the earlier crypto-carry result did not preserve together: 1. a source-completeness rule decided before returns; 2. a point-in-time universe reconstructed from instrument lifecycles; 3. an exact preregistration and one-identity reservation; 4. a pre-execution snapshot of every derived decision and execution input; and 5. a deterministic result receipt that reconciles the equity curve, walk-forward report, ledger, snapshot, code, environment, and governing contract. The paper supports the following narrow claims: - exactly one registered historical simulation was executed for this identity; - the immutable path and same-path diagnostics have the values reported here; - all 781 private snapshot files rehash to the pre-execution manifest; - no post-result gate was changed; and - required admission evidence remains missing, so the candidate is not admitted. It does not establish live or forward performance, independently reproduced performance, capacity, diversification, expected book drawdown, peer review, external publication, or future return. The raw and derived market rows are not licensed for public redistribution. A checksum proves byte identity, not economic correctness. ## 2. Hypothesis and related literature Perpetual futures use recurring funding transfers to keep a non-expiring contract near its spot index. Positive funding ordinarily transfers value from longs to shorts; negative funding reverses the direction. Persistent funding can therefore represent compensation for supplying balance sheet to crowded positioning, but it can also proxy for crash exposure, constrained arbitrage, liquidation risk, and speculative demand. For instrument \(i\) at decision time \(t\), the registered signal is the negative mean of the 21 most recent funding settlements available to the system, annualized by the implementation: \[ c_{i,t}=-\operatorname{mean}(f_{i,t-20},\ldots,f_{i,t})\times 3\times365. \] The negative sign ranks expensive positive-funding contracts toward the short side and negative-funding contracts toward the long side. The factor is a cross-sectional ranking input; its annualization scale does not itself create return. Funding information becomes available five minutes after its recorded settlement timestamp in the portable data model. The economic prior is consistent with work on perpetual-futures pricing, constrained arbitrage, and crypto basis. He, Manela, Ross, and von Wachter describe how funding, margin, liquidation, and trading frictions jointly anchor perpetuals rather than create riskless convergence. Ackerer, Hugonnier, and Jermann formalize no-arbitrage pricing for perpetual futures. Schmeling, Schrimpf, and Todorov document large and time-varying crypto carry linked to trend chasing and scarce arbitrage capital. Chi and coauthors find basis prominent among the crypto-futures signals they study. These papers motivate the test; none validates ALPHAC's data, portfolio construction, costs, or result. The falsifiable alternative is that the spread is unstable, selected from a large research union, insufficient after stress and impact, positively exposed to the existing book, or operationally untradeable. Any of those outcomes prevents admission even when the primary Sharpe is positive. ## 3. Prospective design ### 3.1 Identity and trial accounting The preregistration was frozen before portable-v1 returns were computed. It fixed family account `crypto_carry`, return identity `crypto_carry_portable_v1`, config hash `50d9e8b059fee773`, and hypothesis identity `da5f5f47f99f9bd2`. Reservation ordinal 229 charged one hypothesis. The runner's execution token authorized exactly one primary return trial; the ledger contains one matching immutable record and no unregistered variant was used to replace it. The 228 earlier identities remain a retired historical epoch. This trial enters the prospective v7 epoch and the complete 229-identity union used by the runtime DSR calculation. The seriality rule requires this trial's complete, hash-valid packet before a future identity can be reserved. ### 3.2 Data decision before returns The source authority was a fresh cache of checksum-verified official Binance public archives. Eligibility required every official object declared by the data contract. Fourteen monthly funding objects for `ICPUSDT`, covering July 2021 through August 2022, were unavailable; the symbol was excluded before the return engine ran. No local or API gap-fill substituted for the missing official objects. Fifty-seven instruments remained. The fresh official OHLCV archives disagreed with the older frozen local state at 1,256 overlapping rows. This trial deliberately uses the current official bytes and is therefore a new prospective identity, not an exact replication of the historical selected artifact. Instrument lifecycle metadata removes observations outside listing and delisting intervals. The resulting private lake contains 2,137,040 OHLCV rows, 272,846 funding rows, and 108 point-in-time universe intervals when read through the production interfaces. The exchange metadata history remains a limitation. Fresh historical `exchangeInfo` snapshots were not available, so the earliest observed metadata version is made valid from the run start while retaining its original validity timestamp as lineage. That rule was frozen and disclosed before returns, but it prevents an independent historical-metadata claim. ### 3.3 Walk-forward and execution model The trial configuration was fixed as follows: | Parameter | Registered value | |---|---:| | Declared data window | 2021-06-01 to 2026-06-01 UTC | | Training window | 6,048 hourly bars | | Test window | 1,512 hourly bars | | Purge / embargo | 72 / 168 bars | | Walk-forward legs | 25 | | Signal | `carry_fund_21` | | Allocator | cross-sectional rank | | Rebalance interval | 168 hours | | No-trade band | 0.001 of equity | | Initial simulated capital | $100,000 | | Machine-learning (ML) / regime gates | off / off | The current event-driven engine fills under its next-open model. The frozen base configuration declares 5 basis points of perpetual taker fees, a default 2.5-basis-point half-spread, 2 basis points of latency cost, square-root market impact, and a 1% average-daily-volume (ADV) order cap. Portfolio limits include 1.0 gross exposure, 0.5 absolute net exposure, a 0.15 per-position limit, a 0.15 annualized volatility target, and a 1.5 maximum volatility scale. The risk state halves gross at 10% account drawdown and flattens at 15%, followed by a 336-hour cooldown. These are simulated execution assumptions. The result does not contain broker fills or evidence that the model matches realizable queue position, venue fragmentation, outage behavior, or market impact at larger capital. ### 3.4 Pre-execution input snapshot After the derived signal frame was computed but before the first execution leg, the runner sealed: - 2,454,144 derived signal rows; - 108 universe intervals and 57 instrument metadata rows; - 603 raw OHLCV and funding partitions; - the resolved run declaration; and - 174 source and environment files. The complete snapshot contains 781 files and 102,831,710 bytes. Its inventory root is `c8b573712103907130a301f22d578feb07e31de0939339450f766b2d037df822`. The snapshot is private because redistribution rights are not established. Its public receipt exposes hashes, counts, and methods only. ## 4. Primary result The stitched out-of-sample path begins after the first training window, on 8 February 2022, and ends on 1 June 2026. Headline ratios use Coordinated Universal Time (UTC) day-last equity and daily simple returns; hourly ratios are diagnostics. | Measure | Immutable value | |---|---:| | Daily return observations | 1,574 | | Initial / final simulated equity | $100,000.00 / $155,880.82 | | Total return / CAGR | 55.88% / 10.84% | | Annualized Sharpe | 0.9689 | | Annualized volatility | 11.01% | | Sortino / Calmar | 1.4336 / 0.8813 | | Daily / hourly-bar maximum drawdown | 12.30% / 13.50% | | Annual turnover | 31.44x | | Fees paid | $7,398.00 | | Net funding cashflow | $18,408.38 | | PSR / DSR | 0.9776 / 0.0914 | The daily maximum drawdown ran from the 18 June 2022 peak to the 12 August 2023 trough. The risk counters report 16,591 half-gross bars, no halted-flat bars, 225 rebalances, and 225 fallback uses. The result is therefore not a frictionless funding accrual: it depends materially on the optimizer, risk state, price path, turnover, and funding cashflows. ### 4.1 PSR and DSR answer different questions PSR 0.9776 measures evidence that the path's Sharpe exceeds zero under the implemented non-normality adjustment. DSR 0.0914 instead compares it with an expected maximum Sharpe after the recorded search burden. The runtime report used all 229 union identities and an expected maximum per-period Sharpe of 0.08437. The observed annual Sharpe can therefore look promising while the deflated probability remains low. The generic walk-forward report also emits `clears_dsr_gate: false` for a 0.95 indicator. That field is not the governing per-sleeve decision rule here. The reservation-bound v7 contract says per-sleeve DSR must be measured and published but is not itself gated at 0.95; incremental admission is determined by the full conjunction of standalone, stress, execution, capacity, and book-contribution evidence. Calling this trial a DSR KILL would silently reintroduce a gate the contract removed. Suppressing the low DSR would be equally misleading. This paper does neither. ### 4.2 Temporal and leg stability Sixteen of 25 walk-forward legs had positive Sharpe and nine were nonpositive. Leg Sharpe ranged from -2.4817 to 6.6152, with median 0.4756. Short legs make the extrema noisy, so they are reported as diagnostics rather than independent trials or confidence intervals. | UTC calendar segment | Daily observations | Compounded return | Annualized Sharpe | |---|---:|---:|---:| | 2022 partial | 326 | -6.79% | -0.5857 | | 2023 | 365 | 2.18% | 0.2989 | | 2024 | 366 | 19.63% | 1.7475 | | 2025 | 365 | 11.57% | 0.9781 | | 2026 partial | 152 | 21.40% | 3.7872 | The result is not uniformly positive through time. Its strongest annualized segment is also a partial year. Removing one calendar year at a time leaves annualized Sharpe between 0.6232 and 1.4346; the minimum occurs when the partial 2026 segment is excluded. This same-path diagnostic is encouraging but does not substitute for a preregistered regime stress or a path matrix. ## 5. Admission audit and unresolved evidence The primary path clears two directly evaluated v7 thresholds: net Sharpe is above 0.15 and 1,574 daily observations exceed the 756-observation minimum. DSR is present, satisfying its measurement requirement. Those facts are necessary and insufficient. The following evidence is not yet established for this identity: - Newey-West significance and autocorrelation-inflation ratio under a frozen lag rule; - stressed-cost and stressed-execution Sharpe; - an execution-scenario bundle for the applicable operational dimensions; - a monotone capacity curve with at least three capital points and a $500,000 floor decision; - ordinary and crisis-conditional correlation with the existing book, including one-sided 95% bounds; - candidate-to-book average correlation and the change in the book's average pairwise correlation; - point and bootstrap-lower-bound book Sharpe contribution; - leave-one-period-out book Sharpe contribution; - expected-shortfall and maximum-drawdown deltas; - expected and 95th-percentile book maximum drawdown; and - full-union book DSR and overlay replay. PBO is null with status `NOT_DEFINED_SINGLE_REGISTERED_IDENTITY_NO_PATH_MATRIX`. A single path does not supply the cross-configuration matrix required by combinatorially symmetric cross-validation (CSCV). Reporting null is not a pass; it also is not the fabricated value zero. The observed 12.30% candidate maximum drawdown is not directly comparable with the program's 11% **expected book maximum drawdown** objective. One is the deepest realized decline on this candidate simulation; the other is a distributional estimand for the combined book. The book quantity remains unmeasured. The formal disposition is therefore: ```text INCOMPLETE / NOT ADMITTED ``` It is not `KILL` because no measured applicable gate has yet been shown to fail in the sealed receipt. It is not `ADMIT` because the listed required gates are unmeasured. The final evidence packet may close the identity as permanently incomplete, but packet completion cannot convert the candidate into an admission. No threshold has been altered after observing the result. ## 6. Relationship to the historical crypto-carry result The earlier selected `crypto_carry_wk` artifact reported Sharpe 0.6766, 19.60% maximum drawdown, and final simulated equity of $138,236.27 over the same ending date. A current-state attempt to replay that historical configuration produced Sharpe 0.1065 and final equity $103,335.16. The old run had not sealed exact code and derived inputs, so its multi-year difference is not uniquely attributable. Portable v1 does not repair or overwrite that artifact. It differs in its current official input bytes, 57-name eligible set, prospective v7 reservation, and exact pre-execution snapshot. Its Sharpe of 0.9689 is a new first measurement, not evidence that the historical 0.6766 was correct. The historical correction remains open and independently visible in the family lineage paper. ## 7. Reproducibility and data-rights boundary The publication-safe result receipt is `artifacts/research/crypto_carry_portable_v1_result.json`. It binds the preregistration, reservation, run configuration, v7 contract, exact ledger record, result inventory, and verified private input snapshot. Its initial content hash is `sha256:00c516f5c5465e399aff5a03f99e65897c370c88482a4387c3e34ac0668a3c7f`. The receipt can be regenerated and compared without computing a new return path: ```bash uv run python scripts/seal_crypto_carry_portable_v1_result.py --check ``` This command rehashes every private snapshot leaf, recomputes the same-path diagnostics from the sealed equity curve, and fails if any bound result, ledger record, source, environment, or contract byte has drifted. It is an integrity verification, not an independent return reproduction. An external reader can inspect the public-safe receipts and source but cannot independently replay the market path from the intended public bundle because the underlying archive rows and derived signal frame are private. Public redistribution remains prohibited unless each source's rights are established. An exact clean-environment replay from a rights-cleared input package and an independent human reproduction are still required before those statuses can be claimed. ## 8. Threats to validity The central threats are explicit: - **Selection burden:** the low DSR shows that one attractive path must be interpreted in the context of a large research union. - **Single registered path:** no path matrix exists for PBO, and no parameter perturbation may be invented post-result without a new identity. - **Metadata approximation:** early historical instrument metadata uses a frozen deterministic fallback rather than contemporaneously archived exchange snapshots. - **Model risk:** fills, spreads, latency, impact, funding timing, risk controls, and venue behavior are simulated. - **Capacity unknown:** scaling can alter impact and portfolio decisions nonlinearly. - **Portfolio interaction unknown:** standalone Sharpe does not establish negative correlation or positive book contribution. - **Data redistribution:** private inputs prevent public push-button reproduction today. - **No forward evidence:** this is historical walk-forward evidence, not a broker-reconciled live record. These limitations define the next research work; they are not footnotes that a positive Sharpe can cancel. ## 9. Conclusion Portable v1 is the strongest ALPHAC crypto-carry result in provenance quality, not yet in admission status. One registered and fully input-snapshotted simulation produced Sharpe 0.9689 with 12.30% maximum drawdown and positive leave-one-year-out diagnostics. The same result also produced DSR 0.0914 under the complete union burden and lacks the stress, capacity, execution, diversification, and book-risk evidence required by the governing contract. The correct scientific conclusion is neither promotional success nor automatic rejection. It is a promising, immutable primary measurement held at `INCOMPLETE / NOT ADMITTED` while the missing tests remain missing. The work is credible only if that boundary survives publication unchanged. ## References 1. Ackerer, D., Hugonnier, J., & Jermann, U. J. *Perpetual Futures Pricing*. [NBER Working Paper 32936](https://doi.org/10.3386/w32936). 2. Chi, Y., Hao, W., Hu, J., & Ran, Z. (2023). *An empirical investigation on risk factors in cryptocurrency futures*. [Journal of Futures Markets](https://doi.org/10.1002/fut.22425). 3. He, Z., Manela, A., Ross, O., & von Wachter, V. *Fundamentals of Perpetual Futures*. [arXiv:2212.06888](https://arxiv.org/abs/2212.06888). 4. Schmeling, M., Schrimpf, A., & Todorov, K. *Crypto Carry*. [SSRN 4268371](https://doi.org/10.2139/ssrn.4268371). 5. Bailey, D. H., & López de Prado, M. (2014). *The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality*. [Journal of Portfolio Management](https://doi.org/10.3905/jpm.2014.40.5.094). 6. Bailey, D. H., Borwein, J. M., López de Prado, M., & Zhu, Q. J. (2017). *The Probability of Backtest Overfitting*. [Journal of Computational Finance](https://doi.org/10.21314/JCF.2016.322). ## Authorship and credit Arhan Canli conceived the ALPHAC research program, designed and implemented the AlphaForge system, specified the prospective trial and governance controls, assembled and audited the evidence, and is the accountable author of this paper. Tool-assisted drafting or engineering does not transfer authorship or responsibility. Canli Capital is the project identity; no institutional affiliation, peer review, external replication, or investment endorsement is implied. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-defensive-lineage ------------------------------------------------------------------------------ # Crypto defensive factors: positive summaries without admission evidence **Short title:** Crypto defensive factors: complete trial lineage **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **Family key:** `crypto_defensive` · **System:** ALPHAC / AlphaForge **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract This record reconciles two cross-sectional defensive-factor identities in crypto perpetual futures: 720-hour low beta and 720-hour low realized volatility. The immutable ledger summaries report annualized Sharpe ratios of 0.6295 and 0.6946 over 1,247 observations. Those are positive historical summaries, but they are not admission results. Neither identity retains a complete identity-matched curve, maximum drawdown, current-union deflated Sharpe ratio, capacity study, or broker-reconciled forward record. A later low-volatility reopening reproduced a lower Sharpe of 0.5229 and passed four diversification diagnostics, but its venue-reality gate remained outstanding and its DSR remained 0.04. The family therefore contributes zero sleeves. ## Research question and mechanism The test asks whether crypto assets with lower trailing market beta or lower realized volatility earn better subsequent risk-adjusted returns than their more aggressive peers. The economic prior is not that low risk mechanically causes high return. It is that leverage constraints, delegated benchmarks, and demand for lottery-like payoffs can raise the price of high-beta or high-volatility assets relative to defensive assets. Frazzini and Pedersen formalize the leverage-constraint channel in conventional markets ([Journal of Financial Economics](https://doi.org/10.1016/j.jfineco.2013.10.005)). Transfer to crypto is uncertain. Perpetual funding, listing age, liquidation risk, exchange fragmentation, and unstable token liquidity can all make a low-volatility rank a disguised liquidity or maturity exposure. Low beta and low volatility are consequently treated as two implementations of one defensive hypothesis, not two independent sleeves. ## Frozen implementations and trial accounting Both identities use rank allocation, a 63-bar rebalance interval, a 10-basis-point no-trade band, an 8,760-bar training window, and a 2,184-bar test window. The recorded configuration universe contains 3,112 instrument identifiers. The signal names and immutable results are: | Identity | Signal | Observations | Sharpe | Skew | Kurtosis | |---|---|---:|---:|---:|---:| | `56cada31ea70f66a` | `beta_lowbeta_720` | 1,247 | 0.6295 | 0.3642 | 9.9238 | | `e204cb10f8ee937c` | `lowvol_720` | 1,247 | 0.6946 | -0.1637 | 18.8212 | The high kurtosis of both summaries matters. A Sharpe estimate can conceal concentrated gains or losses when returns are far from Gaussian. Without the exact identity-matched curves, the tails, drawdowns, event concentration, and dependence of the two estimates cannot be reconstructed honestly. The two identities remain charged to the 228-identity research union even though neither is admitted. ## Reopening evidence and contradiction A related low-volatility reopening is preserved at `artifacts/analysis/lowvol720_reopen/result.json`. It is useful because it tests portfolio overlap, but it is not substituted for the missing historical curve. The reopening reproduced candidate Sharpe at 0.5229 rather than the ledger summary of 0.6946. That discrepancy is disclosed rather than averaged away. The reopening passed four preregistered diagnostics. Correlation with the existing book was 0.1243 at the selected lag, below the 0.15 kill threshold. Correlation with crypto carry was 0.0877, below 0.25. Regression on BTC and a dominance proxy produced an R-squared of 0.2039, below 0.50. Adding the candidate at the tested weight increased the common-window book Sharpe by 0.2687. These measurements support distinctness within that historical window. They do not establish return reliability, execution, or capacity. The fifth gate, venue reality, was never completed. The reopening explicitly retained DSR 0.04. Passing correlation screens cannot repair a failed selection-adjusted probability or replace a forward execution record. ## Evidence still required Admission would require a newly frozen, point-in-time implementation with one declared return identity; exact daily returns; funding, fees, slippage, liquidation, and venue assumptions; a current-union DSR; drawdown and tail analysis; impact and capacity evidence; and a continuous broker or exchange-reconciled forward record. The low-beta and low-volatility variants would also need joint exposure attribution to show whether they contain more than one economic bet. No such completion is inferred from the positive summaries. There is no Alpaca performance attributed to this family, and no live-money result is claimed. ## Reproduction and decision The machine-readable family record is [`crypto_defensive_family.json`](/glassbox/crypto_defensive_family.json). It binds both hypothesis keys, configurations, first ledger summaries, source hashes, and the related reopening artifact. The global trial join is [`trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json). **Decision: NOT ESTABLISHED / zero sleeves.** The historical signal is interesting enough to justify a properly frozen prospective test, but not strong enough to enter the book. Research, implementation, and the decision to preserve the contradiction were directed by **Arhan Canli**. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-lab-carry-crash-incident ------------------------------------------------------------------------------ # When Crypto Carry Became Crash Exposure: The LABUSDT Incident **Short title:** LABUSDT carry-crash incident **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Status:** public incident research; not peer reviewed; not investment advice **Evidence date:** 2026-08-23 **Machine evidence:** `/glassbox/crypto_lab_carry_crash_incident.json` ## Abstract AlphaForge bought LABUSDT at a paper fill of 16.150421 USDT on 5 July 2026 while its point-in-time funding signal was negative. It closed the same 114-token long at 0.155300 USDT on 30 July and opened a short at the same rebalance. The long lost 99.04% on price and produced a net price loss of 1,824.37 USDT after its entry and close fees. Independent dated market records show that LAB itself collapsed during July; the fill sequence is not evidence of a 100-for-one symbol remapping or a paper-broker decimal error. This distinction matters. Rejecting a real 99% move as “bad data” would erase the exact tail risk that a perpetual-carry strategy is paid to bear. The correct response is to preserve the loss, identify the strategy mechanism, and improve prospective attribution. The episode closed before the flagship forward record began on 7 August, so it does not explain the current flagship loss. The investigation instead exposed an observability defect: historical position snapshots retained quantity and average entry but not each cycle's exact mark and unrealized profit or loss. ## Claim boundary This is a forensic description of one paper-traded episode. It spends zero return hypotheses, does not estimate Sharpe or expected maximum drawdown, does not authorize a parameter or weight change, and does not rewrite any equity mark. The external sources corroborate market context; the immutable local fill ledger is authoritative for AlphaForge's own execution claim. ## What happened The frozen ledger contains three LABUSDT fills: 1. buy 114 LAB at 16.150421 USDT on 5 July 2026; 2. sell 114 LAB at 0.155300 USDT on 30 July, closing the long; and 3. sell 5,467 LAB at 0.155300 USDT, opening the new short. The long episode's gross price P&L is ```text 114 × (0.155300 − 16.150421) = −1,823.44 USDT ``` Entry and close fees add 0.93 USDT, producing net price P&L of approximately −1,824.37 USDT. This calculation excludes funding cashflows because the historical store did not retain an instrument-level funding-payment ledger sufficient to reproduce that component independently. ## Why this was carry risk, not a broken symbol Funding was negative when the long was selected. A negative rate means shorts pay longs, so the frozen carry signal ranked LAB as a long candidate. During the holding interval, the funding regime changed sign. The scheduled rebalance then closed the long and opened a short. That is the intended direction of the signal; the failure was that the spot-price collapse overwhelmed the carry payment before the next rebalance. Independent market context is consistent with the local fills. A dated [LABUSDT price history](https://chartexchange.com/symbol/crypto-labusdt/historical/) records the collapse through July, while [Phemex's 13 July delisting notice](https://phemex.com/announcements/phemex-will-delist-labusdt694) documents a contemporaneous venue response. Neither source proves AlphaForge's execution; the signed local ledger does that. Together they reject the narrower hypothesis that 16.15 to 0.155 was merely a local decimal or contract-identity error. ## Why no jump filter is being added A filter that refuses to mark a held position after a large price move would make reported equity false. A filter that removes LAB only after observing this crash would also be an unregistered, event-fitted strategy change. Neither is acceptable. The loss remains in the AlphaForge record, and no live weight or signal parameter changes because of this incident. The broader tail question remains legitimate: whether a pre-registered liquidity, age, concentration, or crash-risk rule can improve expected portfolio Sharpe without merely deleting the realized loser. That requires a new identity, frozen rule, complete historical replay, multiple-testing charge, and forward transition—not an incident patch. ## Prospective observability correction The investigation could reproduce aggregate sleeve equity and fills but could not allocate every subsequent mark-to-market change by instrument. `positions_snapshots` stored quantity, average entry, and opening timestamp only. Aggregate equity is insufficient to reconstruct historical instrument marks, and those marks will not be invented. The paper execution path now prospectively persists, for each open position and cycle: - the exact order-book mid used in account equity; - whether the mark came from the order book or the explicit entry-price fallback; - marked market value; and - unrealized P&L relative to average entry. Legacy rows migrate additively and remain null for these fields. This improves future sleeve-risk diagnosis without changing orders, signals, weights, historical marks, or the governing forward Sharpe contract. ## Conclusion LAB was a genuine adverse market event and an example of the left-tail exposure embedded in crypto carry. The institutional response is not to delete the loss. It is to preserve it, state what the evidence can and cannot reconstruct, and ensure future position-level losses are independently attributable from the same marks used in account equity. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-momentum-lineage ------------------------------------------------------------------------------ # Crypto momentum: complete trial lineage and failed sleeve-admission evidence **Short title:** AlphaForge crypto momentum: complete trial lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `crypto_momentum` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract AlphaForge tested cross-sectional and time-series momentum in perpetual-futures prices. This paper reconciles all 18 charged crypto-momentum hypothesis identities recorded from 2026-06-20 through 2026-06-25. The best persisted result, a 21-day time-series momentum signal rebalanced weekly, had annualized Sharpe 0.4863, total return 26.83%, and maximum drawdown 17.02% from 2022-02-08 through 2026-06-01. Its artifact-era Deflated Sharpe Ratio was only 0.0684. The worst result, a seven-day cross-sectional signal rebalanced daily, had Sharpe -1.1690, total return -42.39%, and maximum drawdown 50.64%. All 18 artifacts failed their recorded DSR gate. A separate 2021–2026 diagnostic combined three momentum signals and measured Sharpe 0.0780. Its full-sample correlation with a carry diagnostic was +0.0444 and stress correlation was negative, but the combined Sharpe was only 0.0556 and even the reported decorrelated ceiling was 0.1206. Diversification without standalone edge does not earn a sleeve slot. No persisted momentum capacity sweep exists. This family is research-only: it is not validated, admitted, live, or part of an Alpaca paper account. ## Claim boundary This paper establishes only that: 1. the economic hypotheses and implemented formulas can be stated precisely; 2. all 18 charged identities are joined to immutable ledger rows and persisted artifacts; 3. positive, negative, selection-adjusted, and diversification evidence is published together; 4. every persisted artifact failed its original DSR gate; and 5. overlap with existing price-trend families is explicitly resolved. It does **not** establish a forward Sharpe, expected maximum drawdown, useful capacity, independent alpha source, future return, live execution record, or investable product. Artifact-era DSR values use the selection context stored when each run was produced; this paper does not mislabel them as restatements against the current 228-identity union. ## Economic hypotheses The cross-sectional hypothesis is that assets with stronger recent returns than peers continue to outperform those with weaker returns over the next holding interval. The time-series hypothesis is that an asset's own normalized trailing return predicts the sign and relative strength of its next return. Possible mechanisms include slow information diffusion, investor attention, behavioral underreaction, trend-chasing flows, and compensation for crash or liquidity risk. None makes momentum a law; rapid reversals, crowded exits, trading costs, and changing market structure are direct falsifiers. The primary literature supplies a prior and an overlap map, not validation of ALPHAC: - Moskowitz, Ooi, and Pedersen document time-series momentum across conventional futures and forwards ([Journal of Financial Economics](https://doi.org/10.1016/j.jfineco.2011.11.003)). - Liu and Tsyvinski identify crypto-specific momentum and investor-attention effects while showing that standard asset-pricing factors do not fully explain crypto returns ([Review of Financial Studies](https://doi.org/10.1093/rfs/hhaa113)). - Liu, Tsyvinski, and Wu construct crypto market, size, and momentum factors ([Journal of Finance](https://doi.org/10.1111/jofi.13119)). - Grobys and Sapkota test momentum in cryptocurrency markets ([Economics Letters](https://doi.org/10.1016/j.econlet.2019.03.028)). - Chi and coauthors study cross-sectional risk factors in cryptocurrency futures and emphasize that signal frequency matters ([Journal of Futures Markets](https://doi.org/10.1002/fut.22425)). These studies do not validate AlphaForge's universe history, feature timestamps, transaction-cost model, trial search, or implementation. ## Exact ALPHAC implementation Let `C(i,t)` be the point-in-time close for instrument `i` at hourly decision bar `t`. Missing history remains missing rather than being backfilled from the future. For long horizon `L` and short skip `S`, cross-sectional momentum is: ```text mom_xs_L_S(i,t) = ln(C(i,t-S) / C(i,t-L)) ``` The charged variants use `L=168` with `S=24`; `L=504` with `S=48`; and `L=2160` with `S=168`. They correspond approximately to seven-day/one-day-skip, 21-day/two-day-skip, and 90-day/seven-day-skip signals on hourly bars. The values are ranked across the complete point-in-time universe at each decision. For horizon `L`, time-series momentum is: ```text mom_ts_L(i,t) = ln(C(i,t) / C(i,t-L)) / (EWMA_vol_168(i,t) * sqrt(L)) ``` The charged horizons are 168, 504, and 2160 hourly bars. The denominator scales trailing returns by a 168-hour exponentially weighted volatility estimate. Positive values imply long direction and negative values short direction before portfolio construction. Normalization does not eliminate gap risk or make signals comparable when data quality differs across instruments. Most artifacts use rank allocation over 58 Binance perpetual contracts, with 25 walk-forward legs, 6,048 training bars, 1,512 test bars, 72 purge bars, and 168 embargo bars. Charged variants change signal horizon, blend, allocator, rebalance cadence, or half-universe split. Such changes remain distinct hypotheses even when they share one economic mechanism. ## Complete trial lineage The public family packet binds 18 immutable identities to `crypto_momentum`: | Machine-label group | Charged identities | Question tested | |---|---:|---| | `mom_ts_504` | 9 | 21-day trend across daily, 3-day, weekly, 2-week, long-only-rank, and split-universe variants | | `mom_xs_504_48` | 2 | 21-day cross-sectional momentum at daily and weekly cadence | | `mom_ts_2160` | 2 | 90-day time-series trend under daily and weekly cadence | | `mom_xs_2160_168` | 1 | 90-day cross-sectional momentum with a seven-day skip | | `mom_xs_168_24` | 1 | Seven-day cross-sectional momentum with a one-day skip | | `mom_ts_168 + mom_ts_504 + mom_ts_2160` | 1 | Multi-horizon time-series blend | | `mom_ts_504 + mom_xs_504_48` | 1 | Weekly time-series/cross-sectional blend | | `mom_xs_504_48 + mom_xs_2160_168 + mom_ts_504` | 1 | Recovered legacy diversification diagnostic | | **Total** | **18** | Every identity remains charged to the global search burden | Seventeen identities came from the original `var*` research profiles. The eighteenth was recovered from `artifacts/exp1/20260625T075446Z/experiments.jsonl` when canonical discovery was corrected to include durable artifact ledgers. This correction ran no experiment. The recovered artifact names 3,358 configured instruments across both `BINANCE` and `XUSE` namespaces, unlike the cleaner 58-contract crypto panels. It is retained as a diagnostic, not treated as a direct replication. The machine-readable source is [`/glassbox/crypto_momentum_family.json`](/glassbox/crypto_momentum_family.json). It includes every hypothesis key, immutable ledger source, source hash, compact configuration, persisted result, and artifact-era validation verdict. The global identity join remains available at [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json). ## Results ### Best persisted specification The strongest artifact is weekly `mom_ts_504` with rank allocation: | Measure | Persisted value | |---|---:| | Initial / final simulated equity | $100,000 / $126,825.13 | | Total return / CAGR | 26.83% / 5.67% | | Annualized Sharpe / volatility | 0.4863 / 12.38% | | Maximum drawdown | 17.02% | | Annual turnover | 30.32x | | Fees paid | $7,274.25 | | Net funding cashflow | +$975.14 | | Artifact-era DSR / gate | 0.0684 / failed | This is the maximum Sharpe among the 18 persisted identities, not an independently chosen confirmatory result. It fails the governing DSR threshold and its drawdown exceeds the program's 11% expected-maximum-drawdown objective. ### Worst persisted specification Daily `mom_xs_168_24` is the clearest falsification: | Measure | Persisted value | |---|---:| | Initial / final simulated equity | $100,000 / $57,605.73 | | Total return / CAGR | -42.39% / -12.01% | | Annualized Sharpe / volatility | -1.1690 / 10.47% | | Maximum drawdown | 50.64% | | Annual turnover | 129.02x | | Fees paid | $22,178.23 | | Artifact-era DSR / gate | 0.0000001665 / failed | The difference between the best and worst identities is specification sensitivity, not evidence that the best setting has isolated a stable law. Across the complete family, annualized Sharpe ranges from -1.1690 to +0.4863 and maximum drawdown ranges from 15.15% to 50.64%. Zero of 18 persisted validations clears its artifact-era DSR gate. ## Diversification diagnostic: low correlation is insufficient The recovered `exp1` momentum blend measured annualized Sharpe 0.0780, maximum drawdown 20.94%, and artifact-era DSR 0.5607. Against its carry diagnostic, full-sample correlation was +0.0444; correlation was -0.5768 on the combined book's worst 2.5% of days and -0.6290 when either sleeve was in its worst 2.5%. Those correlations appear attractive in isolation. But the equal combination produced Sharpe only 0.0556 and maximum drawdown 12.82%. Even the artifact's decorrelated Sharpe ceiling was only 0.1206. Negative stress correlation cannot rescue two weak expected-return processes. The test therefore supports a null: momentum does not earn a separate sleeve slot merely because it sometimes offsets carry. ## Capacity and execution boundary No persisted crypto-momentum capacity sweep changes capital while holding the momentum return hypothesis fixed. Capacity is therefore **unmeasured**, not zero and not positive. Turnover as high as 129.02x, fees, venue concentration, order-book depth, funding, and crowding make extrapolation especially unsafe. There is also no continuous broker-reconciled forward record for this crypto-momentum family. AlphaForge's incumbent paper experiment is funding carry; AlphaMax and AlphaTrend already express related price-trend mechanisms in equities and managed futures. Crypto momentum is not an Alpaca paper sleeve, not an AlphaVintage result, and not included in published live returns. ## Overlap and sleeve decision Crypto momentum, AlphaMax equity momentum, and AlphaTrend managed-futures trend differ in market, formation horizon, and portfolio construction, but all monetize persistence in prices. They are not automatically three independent economic mechanisms. Under the research taxonomy, the 18 crypto variants form one family and at most one sleeve candidate. An independent sleeve claim would require a preregistered forward specification, a clean crypto-only point-in-time universe, net positive standalone evidence after current union deflation, measured capacity, and contemporaneous return correlations against the actual live books, including stress windows. None is presently established. ## Reproduction map - `src/alphaforge/features/library/momentum.py`: signal formulas and point-in-time feature code. - `docs/design/alphaDesign.md`: original momentum specification and research contract. - `var*/experiments.jsonl` and `artifacts/exp1/20260625T075446Z/experiments.jsonl`: immutable charged identities. - `artifacts/cpanel/*/walkforward.json` and `artifacts/walkforward/crypto_mom_base/walkforward.json`: original persisted simulations. - `artifacts/exp1/20260625T075446Z/momentum/walkforward.json` and `exp1_metrics.json`: recovered momentum/diversification diagnostic. - `scripts/audit_crypto_momentum_family.py`: deterministic ledger-to-artifact audit. - `artifacts/research/crypto_momentum_family.json`: generated family evidence packet. - [`/glassbox/crypto_momentum_family.json`](/glassbox/crypto_momentum_family.json): stable public machine-readable packet. Reproduction requires the pinned project environment and underlying market-data lake. The public packet proves the claims made here and hashes their source artifacts; it does not imply that every venue or vendor dataset may be redistributed. ## Packet completeness This family paper verifies shared identity, authorship, mechanism, literature, family accounting, and stable-publication sections for 18 identities. It does not retroactively manufacture exact identity-level preregistrations, full return bundles, environment snapshots, or capacity studies. All 18 trial packets therefore remain incomplete until every required section is proved. A family paper is meaningful coverage, not a completed identity packet. ## Decision **Research decision:** reject sleeve admission. Preserve all 18 identities, including the severe negative result and the recovered mixed-universe diagnostic. Do not search additional momentum variants without a new mechanism and explicit family budget. **Live decision:** do not add crypto momentum to the paper book. It has no broker-reconciled forward record, no measured capacity, and no independently validated edge. **Publication decision:** publish the complete family null under Arhan Canli's authorship. The credible accomplishment is not the 0.4863 selected Sharpe; it is a record that makes the selected result, failed deflation, 50.64% adverse drawdown, overlap, and non-admission equally inspectable. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-multifactor-engine-lineage ------------------------------------------------------------------------------ # Crypto multi-factor engine: seven trials, capacity decay, and no-deploy verdict **Short title:** AlphaForge crypto multi-factor engine lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `crypto_multifactor_engine` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract AlphaForge ran a historical robustness matrix over crypto perpetual futures from 2021-01-01 through 2026-06-01. Seven charged identities belong to the broad multi-factor engine: a baseline rank allocator; ML, regime, and combined overlays; daily rebalancing; a tighter no-trade band; and mean-variance allocation. An eighth matrix identity explicitly selected carry and residual reversal and is accounted for in the separate `crypto_carry` family. None of the seven engine identities cleared its artifact-era DSR gate. Annualized Sharpe ranged from -0.7901 to +0.0424 and maximum drawdown from 13.59% to 33.93%. The four baseline/overlay arms all produced the same Sharpe 0.0424 and DSR 0.2112. Cross-sectional combinatorially symmetric validation across all eight matrix trials reported PBO 0.8818 against a gate below 0.20 and no deflated winner. The matrix verdict was **NO-DEPLOY**. A capital sweep on the regime-gated engine showed Sharpe 0.4009 at $100,000, 0.0424 at $1 million, and -0.3720 at $10 million under the committed impact model. This is useful capacity-failure evidence, not a promise that the $100,000 result is repeatable. The family has no admitted sleeve and no broker-reconciled forward record. ## Claim boundary This paper reconciles seven immutable return identities to one persisted matrix and publishes the positive, negative, capacity, and selection-adjusted evidence together. It does **not** establish a forward Sharpe, expected maximum drawdown, independent economic mechanism, live result, or future return. The artifact serializes `alpha_names: null`; therefore the exact expanded default feature list is not recoverable from the matrix configuration alone. No feature-level attribution is claimed. ## Research question and overlap decision The engine asked whether a broad cross-sectional blend becomes robust through nonlinear sizing, regime gating, cadence, turnover control, or covariance-aware allocation. Possible mechanisms come from the component families, carry, momentum, reversal, liquidity, and defensive effects, not from the word “multifactor.” Combining weak signals can reduce noise, but complexity can also increase estimation error and hidden selection. Liu, Tsyvinski, and Wu construct crypto market, size, and momentum factors ([Journal of Finance](https://doi.org/10.1111/jofi.13119)); Liu and Tsyvinski document crypto return predictors and differences from conventional asset classes ([Review of Financial Studies](https://doi.org/10.1093/rfs/hhaa113)). Bailey and coauthors develop the PBO framework used to test whether strategy selection is likely to overfit ([Journal of Computational Finance](https://doi.org/10.21314/JCF.2016.322)). These sources support the research questions and validation tools, not this implementation's return. The seven configurations are one engine family, not seven sleeves. Carry-tilted `C_carry` remains in `crypto_carry`; named momentum trials remain in `crypto_momentum`. Shared data, instruments, construction, and latent market exposures prevent those labels from becoming automatic economic independence. ## Complete trial lineage | Matrix identity | Change from baseline | Sharpe | Max DD | DSR | DSR gate | |---|---|---:|---:|---:|---| | `A_blend` | rank baseline | 0.0424 | 13.59% | 0.2112 | fail | | `A_ml` | ML overlay | 0.0424 | 13.59% | 0.2112 | fail | | `A_regime` | regime overlay | 0.0424 | 13.59% | 0.2112 | fail | | `A_ml_regime` | ML plus regime | 0.0424 | 13.59% | 0.2112 | fail | | `C_rebal24` | daily rebalance | -0.7901 | 33.93% | 0.0049 | fail | | `C_band10` | 10-basis-point band | -0.1994 | 13.89% | 0.0935 | fail | | `C_mvo` | MVO allocator | -0.0946 | 15.94% | 0.1373 | fail | The public packet maps each row to its exact hypothesis key, config hash, immutable first ledger record, source file, SHA-256 hash, 1,612 observations, skew, and kurtosis. All seven remain charged to the current 228-identity union. The matrix's own DSR values use its complete eight-trial local selection set and are labeled artifact-era evidence rather than current-union restatements. ## What the unchanged overlays mean The four Block A arms returned byte-for-byte equivalent summary moments. That is not evidence that ML and regimes work equally well. The persisted verdict reports that the regime gate was inactive in early out-of-sample legs while its expanding fit window lacked 730 daily BTC observations and fell back to the blend. The matrix also does not persist enough feature-level diagnostics to prove where the ML path altered positions. The defensible conclusion is that these overlays did not improve the measured return, not that they were validated. Daily rebalancing was the strongest falsifier: turnover rose to 80.58x, Sharpe fell to -0.7901, and maximum drawdown reached 33.93%. MVO lowered turnover to 15.19x but did not create positive Sharpe. A tighter band also remained negative. Portfolio machinery did not rescue the edge. ## Selection and capacity evidence The eight-column matrix, including the separately classified carry arm, used 5,000 CSCV combinations over 1,612 daily observations. PBO was 0.8818; the required gate was below 0.20. No configuration cleared DSR 0.95 and no deflated winner was selected. | Initial capital | Sharpe | DSR | Max DD | Turnover | Final equity | |---:|---:|---:|---:|---:|---:| | $100,000 | 0.4009 | 0.4803 | 13.14% | 44.53x | $118,509.86 | | $1,000,000 | 0.0424 | 0.2112 | 13.59% | 39.74x | $993,219.39 | | $10,000,000 | -0.3720 | 0.0460 | 22.69% | 44.31x | $8,043,578.96 | The sweep varies capital for the regime-gated engine without adding return identities. Under its notional/ADV impact model, the already thin edge decays materially with size. This does not prove true exchange capacity, the model still needs external calibration, but it decisively forbids a claim of scalable backtested edge. ## Live and sleeve decision The family is not an Alpaca paper sleeve, not an AlphaForge live sleeve, and not included in published broker returns. There is no continuous broker-reconciled forward record for these seven configurations. Historical capacity rows cannot substitute for live slippage, funding, fills, venue outages, or counterparty risk. **Decision: FAIL / NO DEPLOY.** The family contributes zero sleeves. Any future attempt must freeze the expanded feature set rather than serialize `null`, preregister one configuration, establish point-in-time universe lineage, use current-union deflation, calibrate impact from observed fills, and accumulate forward evidence. It would be a new charged identity. ## Reproduction and authorship - `scripts/grand_backtest.py` and `src/alphaforge/analytics/grand_matrix.py`: matrix driver and validation logic. - `artifacts/grand_backtest/20260616T143620Z/matrix.json`: persisted measurements and capacity. - `artifacts/grand_backtest/20260616T143620Z/verdict.md`: contemporaneous no-deploy decision. - `artifacts/grand_backtest/20260616T143620Z/experiments.jsonl`: immutable dedicated ledger. - `scripts/audit_crypto_multifactor_family.py`: deterministic seven-identity audit. - [`/glassbox/crypto_multifactor_family.json`](/glassbox/crypto_multifactor_family.json): public machine-readable family packet. - [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json): global identity join and incomplete identity-level packet ledger. Reproduction requires the pinned AlphaForge environment and underlying point-in-time market-data lake. Public hashes make the persisted evidence tamper-evident; they do not make private market data publicly reproducible or the work independently peer reviewed. This record and the ALPHAC system were authored and directed by **Arhan Canli**, Founder of Canli Capital. Credit is explicit and verifiable in the source and public corpus; scientific claims remain bounded by the evidence. ## Conclusion The multi-factor engine is valuable because it records a failed robustness test cleanly. Complex overlays did not improve the baseline, faster trading made outcomes worse, PBO was high, and modeled capacity decayed. The institutional decision is zero sleeves and continued evidence collection, not a renamed backtest winner. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-reversal-lineage ------------------------------------------------------------------------------ # Crypto short-horizon reversal: two decisive negative trials **Short title:** Crypto residual reversal **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **Family key:** `crypto_short_horizon_reversal` · **System:** ALPHAC / AlphaForge **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract Two historical identities test whether crypto perpetual-futures returns reverse after common movement is removed. One uses a 24-hour residual signal; the other combines 24- and 72-hour residuals. Both are strongly negative in the implemented direction. Their immutable annualized Sharpe summaries are -2.1527 and -2.1140 across 1,574 observations. The result rejects the tested reversal rule, but it does not automatically establish the opposite momentum trade. Exact curves, maximum drawdowns, costs, funding attribution, and current-union DSR are not preserved at the family level. The family contributes zero sleeves and remains in the trial union as a negative result. ## Hypothesis and estimand Residual reversal asks whether an asset-specific price move over a short horizon predicts an opposite-signed subsequent return. The intended estimand is the net return to a rank portfolio that is long recent residual losers and short recent residual winners, measured out of sample under the recorded rebalance and portfolio rules. Short-term reversal has precedent in conventional equities. Lehmann documents weekly return reversals and considers whether they reflect market inefficiency or compensation for risk ([Journal of Finance](https://doi.org/10.1111/j.1540-6261.1990.tb05110.x)). That literature is a prior, not a transport theorem. Crypto trades continuously; perpetual funding transfers value between long and short positions; liquidations can create directional cascades; and venue-specific microstructure can dominate a short-horizon signal. A residual estimated from historical returns does not remove these channels. ## Frozen configurations Both identities use rank allocation, a 24-bar rebalance interval, a 10-basis-point no-trade band, a 6,048-bar training window, a 1,512-bar test window, and the same 58-instrument configuration universe. This common construction makes the two rows related specifications of one mechanism. | Identity | Signal set | Observations | Sharpe | Skew | Kurtosis | |---|---|---:|---:|---:|---:| | `7d65785e1ea4789e` | `mr_res_24` | 1,574 | -2.1527 | -0.0875 | 7.0956 | | `9d39062d6525fdbb` | `mr_res_24`, `mr_res_72` | 1,574 | -2.1140 | -0.6294 | 8.8195 | Adding the 72-hour component does not rescue the hypothesis. It changes the shape of the negative return distribution, including more negative skew and higher kurtosis, while leaving the central conclusion intact. Both identities are charged. Rounded similarity is not used to erase one trial, and the horizon blend is not relabeled as a separate sleeve. ## Interpretation of the negative sign A strongly negative reversal return is compatible with several explanations: short-horizon continuation may dominate; residualization may remove the wrong common component; funding or turnover may overwhelm gross mean reversion; or the universe and rebalance design may expose liquidation trends rather than temporary dislocations. The summaries cannot distinguish among these explanations. Multiplying the return by minus one would create a new, selected momentum hypothesis. It would need a new preregistration, config hash, trial charge, cost model, and out-of-sample test. The negative result therefore remains a falsification of reversal, not evidence for an untested opposite trade. ## Statistical and execution boundary Only immutable first-summary moments are bound family-wide. The exact daily curves are not available in this packet, so maximum drawdown, autocorrelation, clustered uncertainty, funding exposure, and event concentration cannot be reconstructed. No artifact-era DSR survives for either identity, and no current-union DSR is estimated from incomplete moments. Capacity is also unmeasured. A 24-bar rebalance schedule could create substantial turnover and market impact, but the family record does not contain enough execution detail to quantify them. There is no broker-reconciled forward record and no Alpaca return attributed to this family. The absence of forward evidence does not weaken the historical rejection. It limits the explanations that can be defended. ## Reproduction and decision [`crypto_reversal_family.json`](/glassbox/crypto_reversal_family.json) publishes the hypothesis keys, configuration hashes, recorded signal sets, result moments, immutable ledger hash, and evidence grade. [`trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json) keeps both identities in the full research accounting. **Decision: FAIL / zero sleeves.** The implemented residual-reversal direction failed twice. A future study may test a different residual model or a separately preregistered continuation rule, but it cannot rewrite these observations. The research and decision record were directed by **Arhan Canli**. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/crypto-vrp-lineage ------------------------------------------------------------------------------ # Crypto volatility risk premium: one proxy trial and a published null **Short title:** AlphaForge crypto VRP proxy lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `crypto_volatility_risk_premium` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract AlphaForge tested one preregistered BTC/ETH volatility-risk-premium timing rule from 2021-03-24 through 2026-06-01. It compared Deribit DVOL closes with a seven-day Yang–Zhang realized- volatility estimate, entered only when the spread exceeded two volatility points, charged 10 basis points on signal turnover, and evaluated 1,492 expanding-window out-of-sample days after a 365-day warmup. The proxy produced annualized Sharpe -0.633, Deflated Sharpe Ratio 0.000, PSR 0.066, skew -9.517, and raw kurtosis 132.65. It failed. The diagnostic also illustrates why average variance premium is not timing alpha. BTC's mean DVOL-minus-realized spread was +0.044 and positive on 72.99% of days; an always-short variance proxy showed Sharpe 2.4818 but skew -5.4874. ETH's corresponding always-short proxy showed Sharpe 0.5309 and skew -10.6795. Those attractive averages coexist with catastrophic left tails. This family is not a sleeve, is not in an Alpaca account, and has no broker-reconciled forward record. ## Claim boundary This paper establishes the economic question, exact historical proxy, one charged identity, persisted null, and source hashes. It does **not** establish executable option P&L, option-surface history, capacity, live execution, expected maximum drawdown, forward Sharpe, or future return. DVOL is an index and the variance-swap expression is a signal-validity proxy. It omits the option strip, tradable quotes and sizes, strike interpolation, margin, hedging, jumps, and gap execution. ## Mechanism and falsifiable hypothesis Option-implied variance can exceed subsequently realized variance because sellers of convex downside insurance require compensation. Carr and Wu formalize model-free variance-swap rates and document variance risk premia ([Review of Financial Studies](https://academic.oup.com/rfs/article-abstract/22/3/1311/1581057)). That literature is a prior, not validation of AlphaForge's data, timing rule, or execution. The tested hypothesis was narrower: a large positive difference between DVOL and recent realized volatility should identify days when short-variance compensation exceeds crash and trading costs. The hypothesis is falsified if the preregistered timing return is negative, remains deeply left-skewed, or fails selection adjustment. All three occurred. For currency `i` and day `t`, the implementation was: ```text VRP(i,t) = DVOL(i,t) - YangZhangRV_7d(i,t) signal(i,t) = max(0, VRP(i,t) - 0.02) gross(i,t+1) = DVOL(i,t)^2 / 365 - log_return(i,t+1)^2 proxy_return = signal(i,t) * gross(i,t+1) - 0.001 * abs(change(signal)) ``` DVOL was stamped available after its source bar; realized volatility used only contemporaneously available OHLC. BTC and ETH proxy returns were equal weighted, normalized by a one-day-lagged expanding standard deviation, and scored only after the warmup. The direction was never inverted after seeing the result. ## Complete trial accounting The union contains exactly one identity in `crypto_volatility_risk_premium`: | Hypothesis key | Configuration hash | Observations | Sharpe | DSR | Decision | |---|---|---:|---:|---:|---| | `bd4688c240711a16` | `99596bbb5b6f8e38` | 1,492 | -0.633 | 0.000 | fail | The run originally used a global trial count of 84. The current union contains 228 identities; the historical DSR cannot be reconstructed honestly from rounded summary statistics alone and is therefore labeled artifact-era evidence, not a current-union restatement. The identity remains charged to the union regardless of its failure. ## Result and risk interpretation | Measure | Persisted value | |---|---:| | Annualized net proxy Sharpe | -0.633 | | Artifact-era DSR / PSR | 0.000 / 0.066 | | Skew | -9.517 | | Raw kurtosis | 132.65 | | OOS observations | 1,492 days | No maximum drawdown was persisted for this summary-only proxy, so none is invented here. The extreme skew and kurtosis are more decision-relevant than the appealing always-short average. Timing failed to transform the premium into admissible expected return. The historical proxy likely understates implementation difficulty. DVOL and seven-day realized volatility do not share a perfectly matched horizon; a variance-swap formula is not a fillable option strip; and the 10-basis-point signal-turnover charge is not a full options execution, hedging, and margin model. These limitations weaken positive claims. They do not rehabilitate a negative result. ## Capacity, overlap, and sleeve decision No options capacity sweep exists. There is no historical bid/ask surface, quote size, portfolio margin replay, delta-hedging ledger, or broker-reconciled forward option record. Capacity is **unmeasured**. Short volatility is also not presumed diversifying. It can load on the same crash, liquidity, and deleveraging states that hurt carry and risky-asset trend books. The artifact left correlation against live sleeves pending; no independence claim is made. **Decision: FAIL / RESEARCH ONLY.** Do not admit a VRP sleeve. A future return identity would need a separately preregistered, point-in-time options-surface implementation with executable quotes, defined-loss construction, hedging and margin costs, capacity, current-union deflation, and forward broker reconciliation. It would be a new charged trial, not a revision of this null. ## Reproduction and authorship - `scripts/exp2_crypto_vrp.py`: frozen proxy construction and original measurement driver. - `artifacts/exp2/20260625T094710Z/exp2_metrics.json`: persisted historical report. - `scripts/audit_crypto_vrp_family.py`: deterministic ledger-to-report audit. - `artifacts/research/crypto_vrp_family.json`: generated family evidence packet. - [`/glassbox/crypto_vrp_family.json`](/glassbox/crypto_vrp_family.json): public machine packet. - [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json): global identity join and remaining identity-level packet debt. Reproduction requires the pinned AlphaForge environment and underlying Binance/Deribit data lake. The public packet exposes exact configuration, immutable keys, source paths, and SHA-256 hashes so that missing private market data is disclosed rather than confused with public byte reproducibility. This research record and its ALPHAC implementation were authored and directed by **Arhan Canli**, Founder of Canli Capital. Authorship does not convert an internal result into peer review or independent verification. ## Conclusion The contribution is the rejection, not a strategy claim. A positive average crypto variance premium and a high naive Sharpe did not survive timing, costs, tail-risk inspection, or deflation. The honest sleeve count contributed by this family is zero. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/current-book-diversification-model ------------------------------------------------------------------------------ # Current-book diversification: the confidence-bound result **Author:** Arhan Canli **Program:** ALPHAC / AlphaC Algorithms **Study classification:** retrospective existing-return risk remeasurement **Capital:** research simulation over a paper-trading specification ## Result The exact current four-sleeve research specification is diversified, but it does **not** meet the program's governing average-correlation point gate. Across the 1,061-row common window from 2023-07-07 through 2026-06-01: | Measurement | Result | Governing comparison | Outcome | |---|---:|---:|---| | Average pairwise sleeve correlation | +0.0248 | at most 0.00 | **fails** | | 95% upper bound, 63-row block bootstrap | +0.0487 | at most +0.10 | passes | | Maximum ordinary pairwise correlation | +0.2098 | at most +0.35 | passes | | Maximum ordinary pair upper 95% bound | +0.3025 | at most +0.35 | passes | | Stressed design correlation | +0.50 | at most +0.50 | passes at the boundary | | Sleeve-only diversification ratio | 1.8153 | diagnostic | not a gate | | Effective independent sleeves | 3.8988 of 4 | diagnostic | not a gate | The long-run portfolio objective is approximately −0.03 average correlation. The current measured point is 0.0548 above it. Calling +0.0248 “near zero” may be descriptively reasonable, but it does not turn a positive value into a pass against a non-positive gate. ## What was measured The study reconstructs the same exact current book used by the current-composition drawdown study: - `alphavintage_live`, 25%; - `crypto_carry_wk`, 25%; - `k30_dn_63`, 25%; - `managed_futures`, 25%; and - the separately disclosed 10% strategic overlay split between BTC and SPY. Sleeve correlation uses the four sleeve returns only. The strategic overlay remains separate and is included in full-book and marginal-Sharpe diagnostics. The reconstructed sleeve contributions plus overlay equal the book return with zero numerical residual. ## Confidence procedure The primary uncertainty estimate uses 10,000 synchronized circular moving-block resamples, each as long as the observed 1,061-row window, with seed `20260825` and a 63-row block. Resampling the four columns together preserves contemporaneous cross-sleeve dependence. The one-sided upper bound is the empirical 95th percentile. | Block length | Bootstrap mean average correlation | Upper 95% | Maximum pair upper 95% | |---:|---:|---:|---:| | 21 rows | +0.0245 | +0.0484 | +0.2861 | | 63 rows, primary | +0.0247 | +0.0487 | +0.3025 | | 126 rows | +0.0244 | +0.0491 | +0.3086 | The primary upper-bound Monte Carlo standard error is approximately 0.00030. Block-length sensitivity does not change the conclusion: the point gate fails and the confidence-bound gates pass. ## Pairwise structure The six observed pairwise correlations are: | Pair | Correlation | |---|---:| | AlphaVintage / crypto carry | +0.0393 | | AlphaVintage / equity momentum | −0.0620 | | AlphaVintage / managed futures | −0.0444 | | Crypto carry / equity momentum | −0.0134 | | Crypto carry / managed futures | +0.0197 | | Equity momentum / managed futures | +0.2098 | The equity-momentum / managed-futures pair is the largest ordinary dependence. Its primary bootstrap upper bound remains below the prospective 0.35 ordinary-pair ceiling. ## Marginal historical diagnostics For each diagnostic, one sleeve's committed contribution is replaced by cash while every other weight and the strategic overlay remain unchanged. These are in-window research diagnostics, not reweighting instructions: | Sleeve replaced by cash | Full-book research Sharpe | Without sleeve | Marginal delta | |---|---:|---:|---:| | AlphaVintage | 1.7846 | 1.7909 | −0.0063 | | Crypto carry | 1.7846 | 1.2520 | +0.5326 | | Equity momentum | 1.7846 | 1.6378 | +0.1468 | | Managed futures | 1.7846 | 1.8755 | −0.0908 | Negative historical marginal values do not authorize deletion. The data were known before this protocol, the comparison is in-sample for this purpose, and existing sleeves predate the prospective admission contract. Any allocation change would require a new declared evidence epoch. ## What this establishes—and what it does not This study establishes a reproducible description of the exact current research composition. It shows that most pairwise and confidence-bound controls are inside their prospective ceilings, while the governing average-correlation point gate is not. It does not establish live-forward diversification. The frozen research curves end before the broker-reconciled forward record begins; the returns were known before the protocol; no independent human replication exists; and the window is not crisis-complete. It proves neither alpha nor the governing forward-Sharpe objective (1.5 when this study was sealed; 2.0 since 2026-09-14 under `config/owner_goals.json`) and spends zero new hypothesis identities. ## Reproduction ```bash uv run python scripts/analyze_current_book_diversification.py ``` The machine-readable result is `artifacts/analysis/current_book_diversification/result.json`. Its content hash is `sha256:42971513076f2ff21024e343c2ef771a78cbaeb2b3b6160f7d28a526dd4da256`. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/current-book-drawdown-model ------------------------------------------------------------------------------ # Current-composition maximum-drawdown model **Author:** Arhan Canli **Affiliation:** Canli Capital / AlphaC Algorithms **Version:** 2.0, generated from the study result **Capital boundary:** research simulation over a paper-trading specification ## Abstract This study estimates the two-year maximum-drawdown distribution of the current ALPHAC composition: three constituent sleeves (AlphaMax, AlphaTrend and AlphaVintage) at equal weights of one third each, plus a separately disclosed 10% strategic overlay (50% BTC and 50% SPY). Constituent strategies own their internal sizing, and the composite applies no second book-level volatility target. It does apply the declared book-level drawdown ladder (half gross at 5% below the high-water mark, flat at 10%), active since 2026-09-15; the models do not replay the ladder's state, so they describe the book without it. Two zero-drift models were frozen before execution. A 10,000-path circular moving-block bootstrap uses a 63-calendar-day primary block, with 21- and 126-day sensitivity arms. A separate 10,000-path regime model preserves observed component volatility and calm dependence while moving all four weighted contributions to 0.50 stress correlation for a predeclared 12% stress share and 40-day mean stress run. The conservative expected maximum drawdown is **8.99%**, inside the governing 11% design objective. The conservative p95 maximum drawdown is **15.86%**, outside the governing 11% design objective. The expected result is therefore encouraging; the tail result is not. Neither establishes live expected drawdown. Version 1.0 of this paper described the four-sleeve book that record v4 replaced (the record restarted on 2026-09-24). From version 2.0 every figure and composition statement here is generated from the study result by `scripts/render_current_book_drawdown_paper.py`. ## 1. Exact specification mapped The source builder reconstructs the same research book used by the public state: - AlphaMax at 33.3%; - AlphaTrend at 33.3%; - AlphaVintage at 33.3%; - fixed-weight aggregation; - no ALPHAC-level volatility target; - the declared book-level drawdown ladder, active since 2026-09-15: half gross at 5% below the high-water mark and flat at 10%, absorbing until the owner rearms it. The models below do not replay its state; - missing daily constituent marks contribute zero; and - a fixed +10% strategic overlay, 50% BTC and 50% SPY, outside constituent sizing. The component contributions reconstruct the daily book return with a largest absolute error of 1.7e-18. The study binds 8 input groups by SHA-256, including the live fingerprint, the protocol, the book implementation and the sleeve-equity inputs; the full list is in the machine artifact. ## 2. Calibration boundary The exact common window contains 1,061 calendar days from 2023-07-07 through 2026-06-01. In that window the research book has 5.11% annualized volatility and a 4.63% realized maximum drawdown. Its 1.17 Sharpe is labelled simulation, not forward evidence, and is not used as model drift: every arm removes the sample mean before estimating drawdown. This window begins after both COVID and 2022. That is a binding limitation. A block bootstrap cannot generate a crisis absent from its source window. ## 3. Frozen models ### 3.1 Circular moving-block bootstrap The primary 63-day arm produces: | statistic | maximum drawdown | |---|---:| | expected | 8.79% | | median | 8.19% | | p95 | 15.47% | | Monte Carlo standard error of expected | 0.035 percentage points | In the sensitivity arms, the 21-day arm gives 8.45% expected / 14.89% p95 and the 126-day arm gives 8.62% expected / 14.36% p95. All three expected values are inside 11%; all three tails exceed it. ### 3.2 Correlation-regime model The regime arm produces: | statistic | maximum drawdown | |---|---:| | expected | 8.99% | | median | 8.35% | | p95 | 15.86% | | Monte Carlo standard error of expected | 0.036 percentage points | The model's simulated stress-day share is published in the machine artifact. It changes dependence but deliberately does not invent a stress-volatility multiplier. ## 4. Decision The protocol defines the conservative expected value as the larger of the primary bootstrap and regime expectations. That value is 8.99%, so the current-composition modeled expectation is within the 11% design objective. The mandatory p95 is 15.86% and is not within 11%. Status: `CURRENT_COMPOSITION_EXPECTED_WITHIN_OBJECTIVE_HISTORICAL_TAIL_COVERAGE_INCOMPLETE`. This is not statistical establishment. The live record is still short; the common calibration window begins after COVID and 2022; a block bootstrap cannot generate a crisis absent from its window; the regime arm has no stress-volatility multiplier; neither model replays constituent instruments or the drawdown ladder's state; and execution gaps and liquidity feedback are not modeled. Those limitations are machine-readable failed establishment dimensions, not prose footnotes. ## 5. Reproduction ```text uv run python scripts/analyze_current_book_drawdown.py uv run python scripts/render_current_book_drawdown_paper.py uv run python scripts/seal_forward_drawdown_evidence.py uv run pytest -q tests/unit/test_current_book_drawdown.py tests/unit/test_forward_drawdown_evidence.py ``` Canonical machine result: `/glassbox/current_book_drawdown.json` Sealed claim boundary: `/glassbox/forward_drawdown_evidence.json` ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/customer-supplier-propagation-feasibility ------------------------------------------------------------------------------ # Customer–supplier propagation — locked no-return relationship-source protocol **Short title:** Customer-supplier propagation: feasibility **Declared:** 2026-08-16 before computing corpus prevalence, selecting the document sample, or extracting any customer name. **Stage:** official-source feasibility only. Market prices, returns, event outcomes, signs, horizons, and portfolio data are forbidden; zero return identities are spent. ## Frozen identity boundary - Supplier universe: domestic common-stock issuers already present in the immutable 10-K manifest. - Relationship availability: no earlier than the SEC acceptance timestamp of the supplier's 10-K. - Relationship fact: the filing must state that one customer accounts for at least 10% of supplier revenue and explicitly identify that customer by name. - Anonymous labels (`Customer A`, `one customer`, government categories), private entities, and names that cannot be resolved historically to one public issuer are not tradable edges. - A later return protocol, if authorized, must use a separately timestamped customer event and next-eligible-session supplier entry. This source audit does not choose the event, sign, or horizon. ## Frozen corpus and prefilter Use the existing hash-addressed SEC 10-K manifest and local primary-document cache. Restrict filing dates to 2016-01-01 through 2025-12-31. Every manifest identity must map deterministically to `data/raw/sec_10k_narrative/documents/{CIK}_{accession}.html.gz`. A document is a concentration candidate only when its raw filing contains `customer` within 400 characters of a numeric percentage from 10% through 100%, the equivalent `percent` form, or `ten percent`, after lower-casing and collapsing whitespace. This intentionally broad prefilter measures recall-oriented source prevalence; it does not establish a named relationship. From each calendar year, rank candidates by SHA-256 of `customer_supplier|CIK|accession` and retain the first 30. The resulting at-most-300-row sample is immutable. No failed or difficult document is replaced. ## Frozen extraction and gates Convert sampled filings with parser `sec-filing-sections-v2`. Preserve document hash and every ±500-character window around a qualifying concentration marker. A strict name candidate must: 1. occur in the same window as both customer language and a ≥10% concentration marker; 2. be a proper-name phrase adjacent to `accounted for`, `represented`, `sales to`, or `revenue from`; 3. exclude anonymous counts/labels, generic customer categories, governments, and pronouns; and 4. be preserved as extracted rather than silently fuzzy-matched. This v1 audit passes to a separately declared historical-entity-resolution audit only if all gates pass: - at least 99% of in-period manifest documents exist and decompress successfully; - at least 500 concentration candidates exist, with at least 25 in every calendar year; - all ten years contribute exactly 30 rows to the deterministic sample; - at least 50% of sampled documents yield one or more strict name candidates; and - no sampled row lacks CIK, accession, acceptance timestamp, source URL, or document hash. Thresholds and extraction rules are not altered after aggregate results are observed. A pass does not authorize prices or returns. Failure is `DATA_GATED`. Even after a pass, historical public-issuer resolution, relationship expiry, amendments, shared analyst coverage, event definition, delistings, costs, capacity, neutralization, walk-forward design, PBO, DSR, and portfolio correlation remain mandatory independent gates. ## Machine outputs - `artifacts/feasibility/customer_supplier_propagation/candidate_manifest.parquet` - `artifacts/feasibility/customer_supplier_propagation/document_sample.parquet` - `artifacts/feasibility/customer_supplier_propagation/result.json` ## Claim boundary This protocol can establish only whether public 10-K text is sufficiently prevalent and explicit to justify a historical entity-resolution audit. It cannot establish an investable graph or any return, Sharpe, drawdown, correlation, capacity, or sleeve-admission claim. ## Locked result The exhaustive source pass covered 36,424 manifest filings from 2016–2025. Primary documents were present and decompressible for 36,243 rows (99.503%), passing the 99% lineage gate. The broad prefilter retained 29,220 filings, every year contributed well above 25 candidates, and the frozen sample contains exactly 30 documents in each of ten years. The relationship-definition gate failed. Only 106 of 300 sampled documents produced one or more machine name candidates (35.333%, versus the locked 50% minimum). Post-result inspection also found that the v1 syntactic candidates include geographies, customer categories, and fragments in addition to genuine legal names. The output is therefore not a production relationship graph and must not be silently entity-resolved. The extraction rule is not tuned after observing this result. **Decision:** `DATA_GATED`. A separately declared v2 would require frozen human labels and a precision/recall gate before historical entity resolution. Zero market records, prices, returns, signs, horizons, or portfolio statistics were opened; zero return identities were spent. Machine-readable result: `artifacts/feasibility/customer_supplier_propagation/result.json`. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/electricity-load-weather-feasibility ------------------------------------------------------------------------------ # Electricity load/weather spread — key-free feasibility decision **Decision date:** 2026-08-15 **Decision:** DATA-GATED; no return trial or hypothesis identity spent. ## Economic mechanism Unexpected weather-driven electricity demand can change the marginal generation stack and the value of regional power relative to its marginal fuel. The proposed sleeve is not a directional weather bet: it must trade a regional power/fuel dislocation, neutralize generic natural-gas trend and seasonality, and use only forecasts available before the execution timestamp. ## What the official-source audit established - Form EIA-930 contains hourly actual demand and next-day demand forecasts by balancing authority. Respondents submit prior-day forecasts and operating data by 07:00 Eastern. - EIA publishes bulk operating history without an API key, including history before 2019. The current EBA archive is a mutable latest-state file, not an append-only release-vintage archive. - EIA explicitly says balancing authorities can revise historical submissions and that corrected values replace the historical record. A backtest downloaded today therefore cannot prove what forecast value was visible at the original decision time. - NOAA's GEFSv12 reforecast archive provides a fixed-model retrospective weather dataset for 2000-2019. It is useful for model and schema feasibility, but it is not the operational forecast market participants observed and cannot by itself establish tradable point-in-time performance. - CME lists financially settled PJM Western Hub peak and off-peak futures. The 1 MW monthly contracts began Globex listing in July 2026; older power contracts are predominantly block-market instruments. Free price proxies cannot establish executable historical spreads. - PJM Data Miner exposes public operating and market data, but its stated terms prohibit redistribution of data or derived information without membership. It is not a suitable source for the open research book without a separate license review. ## Fixed production market set The first admissible production study is deliberately narrow: 1. PJM Western Hub day-ahead peak monthly power futures; 2. PJM Western Hub day-ahead off-peak monthly power futures; and 3. Henry Hub natural-gas futures as the marginal-fuel control, not as a substitute outcome. ERCOT, MISO, nodal prices, electricity-sector equities, UNG and utility ETFs are excluded from the first study. Adding them would change the hypothesis or introduce non-executable proxy risk. ## Data required before preregistration - Append-only EIA-930 forecast snapshots captured with receipt timestamps, or a licensed archive that retains every original forecast vintage and correction. - Operational NOAA forecast vintages with initialization and availability timestamps. GEFS reforecasts may be used only as a calibration control and must be labeled retrospective. - CME DataMine trade, settlement, open-interest and bid/ask history for the exact power and gas contracts, plus point-in-time contract specifications and roll metadata. - Written confirmation that the intended broker supports the exact power contracts and order types. An Alpaca key does not solve this requirement because Alpaca is not the execution venue for the fixed power-futures set. - A redistribution/license review before any PJM-sourced value or derived statistic is published. ## Promotion and kill boundary Do not preregister or inspect returns until the data above are present. Then lock one regional construction, release clock, weather-to-load model, roll rule, costs, block constraints, capacity curve and trend/seasonality controls. Kill if original vintages cannot be reconstructed, if quoted liquidity cannot support the declared AUM, or if residual returns reduce to natural-gas trend, ordinary seasonality or a short-volatility power premium. ## Primary official references - EIA Form 930 data and quality notes: https://www.eia.gov/electricity/gridmonitor/about - EIA open-data bulk manifest: https://www.eia.gov/opendata/bulk/manifest.txt - EIA API documentation: https://www.eia.gov/opendata/documentation.php - NOAA GEFSv12 reforecast archive: https://registry.opendata.aws/noaa-gefs-reforecast/ - NOAA GEFS archive specifications: https://www.ncei.noaa.gov/products/weather-climate-models/global-ensemble-forecast - PJM Data Miner terms notice: https://www.pjm.com/markets-and-operations/etools/data-miner-2.aspx - CME PJM contract listings: https://www.cmegroup.com/markets/energy/electricity.html ## Sealed collection checkpoint — 2026-08-16 `scripts/audit_electricity_load_weather_feasibility.py` now binds a fixed PJM, ERCOT, MISO and ISO-NE panel with actual-demand (`D`) and day-ahead-demand-forecast (`DF`) series for 2019–2025. It requests only EIA-930 schema and load/forecast values—never power or fuel prices, positions, or returns—and fails closed unless all eight identities and required fields are present. The public `DEMO_KEY` returned persistent rate limiting during the sealed run. Bounded retry and `Retry-After` handling were exercised, but the collector refused to emit partial coverage. The machine result is therefore `DATA_GATED` with `source_collection_complete=false` and blocker `official_eia_collection_rate_limited_or_unavailable`. This is an operational collection failure, not evidence against the economic mechanism and not permission to weaken the source contract. Even a successful rerun cannot authorize returns: the EIA schema lacks an explicit forecast issue or revision-vintage timestamp and an unambiguous timezone/DST-fold field; full historical missingness/revision auditing and an operational NOAA vintage corpus also remain mandatory. Zero return hypotheses were spent. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/energy-inventory-lineage ------------------------------------------------------------------------------ # Petroleum inventory scarcity: a preregistered negative result **Short title:** Petroleum inventory scarcity **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **Family key:** `energy_inventory` · **System:** ALPHAC / AlphaForge **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract This study tests one preregistered implementation of petroleum-inventory scarcity using EIA first-release data and liquid exchange-traded energy proxies. The signal enters on the next market open after release, normalizes inventory surprises against five years of seasonal history, and hedges trailing DBC beta. Over 2,669 immutable ledger observations, annualized Sharpe was -0.5893, skew was -1.5157, and kurtosis was 30.2245. The fuller probe measured net Sharpe -0.5892, Newey-West t-statistic -1.8450, DSR effectively zero, and maximum drawdown of 41.05%. It passed exposure and correlation checks but failed the return, robustness, product-consistency, portfolio, and capacity gates. The verdict is KILL and the family contributes zero sleeves. ## Economic hypothesis Petroleum inventories connect physical scarcity to spot and futures prices. Low inventories can raise convenience yield because holding the physical commodity protects production and delivery needs. Gorton, Hayashi, and Rouwenhorst document broad relationships between commodity inventories, the basis, and risk premia ([Review of Finance](https://doi.org/10.1093/rof/rfs019)). The ALPHAC hypothesis is narrower. It asks whether the first public EIA petroleum release contains incremental information that can be traded after publication, once normal seasonality and broad commodity beta are controlled. This timing distinction is essential. A relation visible in revised inventory history or contemporaneous prices is not necessarily available to a trader at the next session open. ## Preregistered implementation The single charged probe uses USO and UGA as energy return proxies and DBC as the hedge instrument. The inventory score is normalized using five seasonal years, scaled over 52 weeks, and clipped to the interval [-3, 3]. Positions enter at the next session open after the EIA release. DBC hedge beta is estimated over 252 trailing sessions and clamped to [-3, 3]. One-way costs are 6 basis points for USO, 10 for UGA, and 3 for DBC. The out-of-sample period begins in 2016. This is one configuration. PBO is not defined because no selection surface exists inside the probe. The identity is still charged to the 228-trial global union for selection-adjusted inference. ## Result | Measure | Value | |---|---:| | Net annualized Sharpe | -0.5892 | | Newey-West t-statistic | -1.8450 | | Probabilistic Sharpe ratio | 0.0248 | | Deflated Sharpe ratio, 228-trial union | 7.37e-11 | | Maximum drawdown | 41.05% | | Annualized turnover | 52.30x | | Net Sharpe at twice costs | -0.9977 | | Realized DBC beta | -0.0137 | Both standalone products were negative: USO Sharpe was -0.4603 and UGA Sharpe was -0.7426. The twice-cost result moved farther below zero. The negative left tail and high turnover make the failure economically stronger than a marginally insignificant mean. ## Diversification did not rescue the return The candidate had low ordinary correlation with the four comparison sleeves. Average correlation was 0.0012 and the largest pair was 0.0323. The largest stressed correlation was 0.0790. Those figures clear the probe's overlap thresholds, but low correlation is not a sufficient admission criterion. At a 10% test weight, the candidate increased common-window book Sharpe by 0.0132 before the mean-zero control. Under the mean-zero control the change was -0.0139, and the leave-one-year-out change was negative for 2023. The observed standalone loss therefore cannot be defended as a stable diversification premium. The proxy capacity calculation was also poor. At 1% of ADV, the fifth-percentile estimate was only $14,919. This model is not a market-capacity certification, but it decisively fails the preregistered $5 million floor. ## Gate decision and provenance Five of thirteen preregistered research checks passed. Exposure and correlation limits passed; minimum Sharpe, DSR, Newey-West significance, twice-cost Sharpe, product consistency, mean-zero book contribution, leave-one-year-out stability, and capacity did not. The machine verdict is `KILL`. The ETF input source is locally mapped to Yahoo adjusted market data. A sanitized execution receipt records 5,119 USO bars, 4,645 UGA bars, and 5,163 DBC bars, with persisted partition hashes and an ingestion timestamp inside the execution window. This establishes local source identity, not redistribution rights, exact historical loader bytes, or independent replication. Raw rows remain withheld. ## Reproduction and decision The governed probe command is: ```text uv run python scripts/probe_eia_petroleum_inventory.py ``` The result is bound by its preregistration, input manifest, runner hash, environment lock, and admission-contract hash. The family packet is [`energy_inventory_family.json`](/glassbox/energy_inventory_family.json). **Decision: FAIL / zero sleeves.** First-release discipline, low beta, and low correlation do not offset a negative, left-tailed, cost-sensitive return. Research and implementation were directed by **Arhan Canli**; no historical result is relabeled as Alpaca or live performance. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/engineering-quality ------------------------------------------------------------------------------ # Engineering quality boundary This page reports the current static-quality boundary honestly. It is engineering evidence, not investment-performance evidence, and generating it evaluates no return stream or hypothesis. ## Verified clean scopes The production package under `src/alphaforge` and the complete `tests` tree pass the repository's configured Ruff rules. The production package also passes strict mypy across all 162 modules, and the current non-network test suite contains 3,961 passing tests. Twelve credentialed network tests remain deliberately deselected from the offline suite. GitHub's clean-checkout gate has a narrower, explicit boundary. It deselects 37 tests marked `workspace_evidence` because those checks require the git-ignored evidence corpus or the adjacent Canli Capital site workspaces. Those 37 checks remain part of the complete local offline suite; they are not represented as portable CI coverage. The marker makes this distinction visible in test collection instead of allowing a clean runner to fail on undeclared local dependencies. ## Explicit debt The `scripts` tree contains historical probes, one-off data collectors, diagnostics, and active operational exporters accumulated across the research program. It is not Ruff-clean. The machine-readable contract enumerates every current finding by rule and file and binds each debt file to its SHA-256 digest. This boundary is intentional but not celebratory: a clean production package does not make an unclean repository clean. Historical scripts will be remediated in reviewed batches, prioritizing active operational and publication paths before archived exploratory probes. Bulk autofix is not used across return-generating scripts because even apparently stylistic rewrites deserve tests and review when they sit near research evidence. ## Reproduction Run: ```text uv run ruff check src/alphaforge uv run ruff check tests uv run ruff check scripts uv run mypy --strict src/alphaforge ``` The current source-bound result is published locally at `/glassbox/lint_debt_contract.json`. Its status is `PRODUCTION_AND_TESTS_CLEAN_HISTORICAL_SCRIPTS_DEBT`; it must not be represented as a whole-repo clean claim. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/equity-insider-activity-lineage ------------------------------------------------------------------------------ # Clustered insider purchases: a corrected preregistered null **Short title:** Clustered insider purchases **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **Family key:** `equity_insider_activity` · **System:** ALPHAC / AlphaForge **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract This record examines whether clustered open-market purchases by corporate insiders predict issuer returns after a realistic filing delay. Two immutable identities are charged because the return aggregation was corrected before publication. The preliminary implementation produced annualized Sharpe -0.9931; the corrected first measurement produced -0.2433 over 2,669 observations. A later replay on an advanced input snapshot measured Sharpe -0.2315 over 2,674 observations, Newey-West t-statistic -0.7490, DSR 1.83e-7, and maximum drawdown 24.84%. The strategy had low correlation with the existing book but reduced observed book Sharpe at a 10% weight. Six of twelve preregistered research checks passed. The verdict is KILL and the family contributes zero sleeves. ## Mechanism and timing question Purchases by officers and directors can reveal information about valuation, operating conditions, or managerial confidence. A cluster may be more informative than one transaction because several decision makers commit personal capital independently. Lakonishok and Lee study the information content of insider trading ([Review of Financial Studies](https://doi.org/10.1093/rfs/14.1.79)). The empirical question is narrower than that prior. It asks whether a public investor could trade a specified Form 4 cluster after allowing for filing and implementation delay, then earn a beta-hedged net return. Results depend on transaction coding, amendments, issuer identity, the public timestamp, survivorship controls, and whether the portfolio weights simple returns correctly. A favorable literature result does not validate any of those details. ## Frozen probe The preregistered cluster requires at least two insiders purchasing within 30 days and at least $100,000 of aggregate value. The position is held for 63 sessions after a two-session filing delay. Issuer exposure is equal-notional at gross one and is hedged using trailing 252-session SPY beta, clamped between zero and three. One-way costs are 6 basis points for the issuer leg and 1 basis point for SPY. The out-of-sample period begins in 2016. One configuration was tested, so PBO is not defined inside the probe. Both recorded implementations remain charged to the global trial union. ## Correction and immutable trial accounting The preliminary implementation linearly combined adjusted log returns. The canonical curve and cost contracts require weighted simple returns. The correction changed implementation, not the economic parameters, and retained the same KILL verdict. It was assigned a distinct auditable configuration rather than overwriting the first result. | Identity | Implementation state | Observations | Sharpe | Skew | Kurtosis | |---|---|---:|---:|---:|---:| | `7c522581b35475e3` | Preliminary log-return aggregation | 2,669 | -0.9931 | -0.3088 | 16.4671 | | `d614fdc1daa2906c` | Corrected simple-return aggregation | 2,669 | -0.2433 | 0.2909 | 17.1010 | The large change in Sharpe shows why the correction matters. Preserving both identities prevents an implementation fix from silently erasing the research path. ## Corrected replay result The later replay contains five additional observations from an advanced data lake. It is an out-of-sample extension, not an exact reproduction of the immutable first measurement. | Measure | Value | |---|---:| | Net annualized Sharpe | -0.2315 | | Newey-West t-statistic | -0.7490 | | Probabilistic Sharpe ratio | 0.2260 | | Deflated Sharpe ratio, 228-trial union | 1.83e-7 | | Maximum drawdown | 24.84% | | Annualized turnover | 2.91x | | Net Sharpe at twice costs | -0.2850 | | Realized SPY beta | 0.0455 | The return remains negative after correction and at twice costs. The low realized market beta shows that broad equity exposure is not an adequate explanation for the failure. ## Diversification, capacity, and decision gates Average ordinary correlation with the four comparison sleeves was -0.0655; the largest ordinary pair was 0.0570 and the largest stressed pair was 0.1414. These are favorable overlap statistics. At a 10% test weight, however, observed common-window book Sharpe fell from 1.2236 to 1.1301, a change of -0.0934. Every leave-one-year-out change from 2023 through 2026 was negative. The fifth-percentile proxy capacity at 1% of ADV was $5.31 million, which passed the probe floor. This is model evidence, not a capacity certification. Capacity and diversification cannot admit a strategy with negative standalone return and an adverse observed portfolio contribution. Six of twelve preregistered research checks passed. Beta, correlation, mean-zero portfolio delta, and proxy capacity checks passed; minimum Sharpe, DSR, Newey-West significance, twice-cost Sharpe, observed book contribution, and leave-one-year-out stability did not. The machine verdict is `KILL`. ## Reproduction and claim boundary The current-snapshot command is: ```text uv run python scripts/probe_insider_clusters.py ``` The preregistration, input manifest, runner, environment lock, and admission contract are SHA-256-bound. Because the current snapshot contains five more observations, this command audits the unchanged corrected implementation but does not recreate the exact first curve. There is no broker-reconciled forward record and no Alpaca return attributed to this family. [`equity_insider_family.json`](/glassbox/equity_insider_family.json) preserves both immutable identities; the related probe result preserves the corrected extension and explicit reproduction boundary. **Decision: FAIL / zero sleeves.** The correction improved the estimate but did not create a positive result. Research, correction governance, and implementation were directed by **Arhan Canli**. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/equity-low-beta-lineage ------------------------------------------------------------------------------ # Equity low beta: two negative identities and no defensive sleeve **Short title:** Equity low beta **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **Family key:** `equity_low_beta` · **System:** ALPHAC / AlphaForge **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract Two historical identities test a 252-session equity beta rank. The implemented portfolio seeks a long-low-beta, short-high-beta spread under rank allocation. The shorter configuration reports annualized Sharpe -0.5995 over 728 observations. A deep-history configuration reports -0.0679 over 5,384 observations, with skew 8.2898 and kurtosis 311.7071. Neither estimate supports a defensive sleeve. The extreme higher moments in the longer summary also make a curve-level audit mandatory; they are not treated as evidence of an attractive positive tail. Exact curves, maximum drawdown, current-union DSR, capacity, and forward execution are not established. The family contributes zero sleeves. ## Hypothesis and economic prior The low-beta hypothesis asks whether equities with low trailing exposure to the market earn a better risk-adjusted return than high-beta equities after portfolio scaling and implementation costs. Frazzini and Pedersen connect a betting-against-beta premium to leverage constraints: investors unable or unwilling to lever low-risk assets may overpay for high-beta securities ([Journal of Financial Economics](https://doi.org/10.1016/j.jfineco.2013.10.005)). That mechanism does not imply that every beta-ranked long-short portfolio should work. Results can depend on beta estimation, volatility scaling, financing, short availability, sector composition, microcaps, delistings, corporate actions, and the universe definition. A low-beta rank can also overlap quality, profitability, size, and market-timing exposures. ALPHAC therefore treats the two rows as implementations of one defensive family, not separate sleeves. ## Recorded designs Both identities use signal `eq_bab_252`, rank allocation, 252 training bars, 63 test bars, and a 10-basis-point no-trade band. They differ in historical scope and rebalance cadence. | Identity | Recorded start | Rebalance | Configured IDs | Observations | Sharpe | Skew | Kurtosis | |---|---|---:|---:|---:|---:|---:|---:| | `1db3096d8f18eef5` | 2022-07-01 | 21 bars | 375 | 728 | -0.5995 | 0.2439 | 6.8348 | | `6c08c11a04ef43c5` | 2000-01-01 | 63 bars | 6,880 | 5,384 | -0.0679 | 8.2898 | 311.7071 | The configured identifier count is a lineage field, not a claim that every identifier was simultaneously eligible or traded. Point-in-time membership and exact position histories require the missing curve-level packet. The shorter result is plainly negative. The longer result is closer to zero, but its extreme skew and kurtosis show that the annualized Sharpe is not a sufficient description. A small number of large observations, stale prices, corporate-action discontinuities, changing universe coverage, or genuine jump returns could generate such moments. The summary cannot adjudicate among those possibilities. ## Why the longer sample does not rescue the signal A longer date range increases chronology, not automatically identification. The deep-history configuration changes the available universe and rebalance cadence alongside the sample period. It is therefore not a clean extension of the 375-identifier test. Comparing -0.5995 with -0.0679 does not isolate a time effect, a breadth effect, or a cadence effect. The extreme moments also prevent a conventional Gaussian interpretation of Sharpe uncertainty. Without daily returns, block dependence, event concentration, and drawdown cannot be measured. No DSR is reconstructed from summary moments, and no favorable sign is inferred from the positive skew. A strategy can have rare positive jumps and still be unusable or incorrectly measured. ## Execution and portfolio boundary The family packet does not establish borrow availability, short rebates, financing, market impact, turnover, or capacity. Those omissions are especially material for the high-beta short leg, where borrow and distress risk can be concentrated. There is also no identity-matched portfolio correlation study. Conceptual distinctness from AlphaMax momentum or equity quality is not measured diversification. No broker-reconciled forward record exists for either identity. No AlphaMax return, Alpaca paper return, or other sleeve result is relabeled as low beta. ## Reproduction path and next valid test [`equity_low_beta_family.json`](/glassbox/equity_low_beta_family.json) binds the two hypothesis keys, config hashes, signal names, first ledger summaries, and immutable ledger hash. It also marks maximum drawdown, capacity, and broker-forward evidence as unestablished. A valid new study would freeze one point-in-time equity universe, define the beta estimator and missing-data rules, retain exact daily positions and returns, model borrow and financing, test corporate-action integrity, and preregister the decision thresholds before inspecting results. It would be a new charged identity, not a repair of either historical row. **Decision: FAIL / zero sleeves.** Both recorded implementations are non-positive and the longer one contains unresolved extreme moments. Research and implementation were directed by **Arhan Canli**. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/equity-narrative-change-lineage ------------------------------------------------------------------------------ # Annual risk-factor narrative stability: a preregistered null **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `equity_narrative_change` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract ALPHAC preregistered one test of annual 10-K Item 1A narrative stability before opening the 2016–2025 return window. The locked strategy bought issuers with stable disclosures and sold issuers with changed disclosures after controlling for filing reaction, momentum, and filing-time industry. Across 2,514 observations, net Sharpe was -0.0074, DSR 0.0000114, Newey–West t-stat -0.0242, and maximum drawdown -28.47%. Twelve of 20 research gates passed, but the return, DSR, stress-cost, short-leg, capacity, mean-zero book-delta, and expected-shortfall gates failed. The sealed verdict is **KILL**. No sleeve was admitted. ## Hypothesis, literature, and overlap Material changes to risk disclosures may reveal changing operating or legal conditions before prices fully adjust. Cohen, Malloy, and Nguyen's *Lazy Prices* provides the prior ([NBER working paper](https://www.nber.org/papers/w25084)); it does not validate ALPHAC's corpus, signal, or return. The family is an issuer-information mechanism, not a momentum, value, quality, or generic sentiment sleeve. Exactly one identity was tested, and its failed direction was not inverted. The locked signal was five-token-shingle Jaccard stability between each unamended 10-K Item 1A and its immediate predecessor. Monthly residualization controlled for the filing reaction, 12-1 momentum, and accession-time two-digit SIC. The top residual quintile was long, the bottom quintile short, each cohort held 63 sessions, and the stock book was hedged with contemporaneous 252-session SPY betas. Baseline costs were 15 basis points one-way for stocks, one basis point for SPY, and 3% annual borrow on shorts. ## Trial and point-in-time lineage The immutable identity is hypothesis key `e2b76a7604131f00`, configuration hash `41ce2b1f40450a6e`. The preregistration fixed the direction, section, parser, controls, timing, costs, capacity limits, diversification test, and kill rules before returns were opened. SEC acceptance timestamps and immutable accession archives governed document availability; Sharadar issuer intervals, corporate actions, and delisted histories governed market lineage. A canonical input manifest binds every consumed market series. The corpus processed 82,491 eligible manifest rows, extracted 73,744 Item 1A sections, formed 65,050 adjacent filing pairs, and selected 5,556 rows across 52 cohorts. Fifty-eight terminal force-flat events were disclosed. Their presence independently prevents an `ADD` decision pending dedicated delisting payouts; the return gates already fail without relying on that escalation. ## Results and decision | Measure | Persisted value | |---|---:| | Net / 2x-cost Sharpe | -0.0074 / -0.4621 | | DSR / PSR | 0.0000114 / 0.4906 | | Newey–West t-stat | -0.0242 | | Maximum drawdown | -28.47% | | Realized SPY beta | 0.0033 | | Annual turnover | 3.954x | | 1% ADV p05 capacity | $739,828.89 | The low beta and low average correlation of 0.0235 do not rescue absent standalone edge. The short leg's gross contribution was negative, capacity missed $5 million, and 10% book inclusion failed the mean-zero control and worsened expected shortfall. The candidate passed 12 of 20 research checks and is technically ineligible under the admission contract. **Decision: KILL.** The family contributes zero sleeves, no Alpaca position, and no published live return. The result is not evidence of forward Sharpe or expected drawdown. A transcript, embedding, sentiment, quarterly-filing, or opposite-direction test would be a new hypothesis and must be separately preregistered and charged. ## Reproduction, evidence, and credit - [`/research/prereg-earnings-narrative-change.md`](/research/prereg-earnings-narrative-change.md) : immutable preregistration. - [`/glassbox/earnings_narrative_change_result.json`](/glassbox/earnings_narrative_change_result.json) : complete sealed result. - [`/glassbox/equity_narrative_family.json`](/glassbox/equity_narrative_family.json): deterministic family packet with hashes, exact configuration, gates, and lineage. - [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json): global union join. The work requires the pinned AlphaForge environment and source corpus. Public SHA-256 bindings make artifact replacement detectable; they do not imply independent peer review. The research, system architecture, and publication were authored and directed by **Arhan Canli**, Founder of Canli Capital. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/equity-quality-lineage ------------------------------------------------------------------------------ # Equity fundamental quality: 11 identities and no validated sleeve **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `equity_fundamental_quality` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract ALPHAC recorded 11 distinct equity-quality return identities spanning gross profitability, operating margin, return on equity, a quality composite, and a growth/profitability/earnings quality composite. Immutable annualized Sharpe measurements range from -0.8316 to +0.7643. Nine of 11 are negative. The two positives are both operating-margin variants over the shortest 2022–2026 history; the same signal over 2000–2026 is -0.4174. No family-wide persisted curves, drawdowns, DSR values, capacity sweep, or broker-reconciled forward record survive for these identities. The correct status is research-only, not a validated sleeve. ## Mechanism, literature, and overlap Quality factors hypothesize that profitable, conservatively financed businesses earn returns not fully explained by market beta, or that investors underweight persistent operating strength. Novy-Marx's gross-profitability evidence provides an important prior ([Journal of Financial Economics](https://doi.org/10.1016/j.jfineco.2013.01.003)). The Fama–French five-factor model incorporates operating profitability and investment ([Journal of Financial Economics](https://doi.org/10.1016/j.jfineco.2014.10.010)). Neither source validates ALPHAC's point-in-time joins, universe, costs, or implementation. Quality can overlap value, investment, momentum, sector structure, and defensive equity exposure. The taxonomy assigns mixed price-momentum configurations to AlphaMax before fundamental labels; the 11 rows here are therefore the quality-only family boundary, not every run containing a quality feature. One family can contribute at most one independent sleeve. ## Complete trial lineage | Signal group | Identities | Persisted Sharpe evidence | |---|---:|---| | `eq_gross_profitability` | 3 | -0.8214 to -0.2635 | | `eq_operating_margin` | 3 | -0.4174 to +0.7643 | | `eq_quality_composite` | 3 | -0.8316 to -0.5926 | | `eq_qual_gpe` | 1 | -0.5856 | | `eq_roe` | 1 | -0.7289 | | **Total** | **11** | **2 positive; 9 negative** | The machine packet publishes each exact hypothesis key, config hash, configuration, immutable ledger source and source hash, observation count, Sharpe, skew, and kurtosis. History varies from 728 to 5,384 observations. That variation is material: the strongest result has only 728 observations and does not replicate in the longer operating-margin identity. Several long-history measurements have implausibly extreme higher moments, including skew below -24 and kurtosis above 969. Those values are evidence of unresolved return/data construction or tail behavior, not performance achievements. Without the original curves, they cannot be repaired or reinterpreted into credible drawdown and DSR estimates. ## Evidence boundary and decision All 11 rows currently have immutable-ledger-summary evidence only. The audit deliberately reports maximum drawdown and artifact-era DSR as missing. A Sharpe point estimate, even +0.7643, cannot pass selection adjustment, tail-risk, capacity, diversification, or execution gates by itself. There is no family capacity sweep, no admissible forward configuration, no Alpaca paper sleeve, and no live return attributed to fundamental quality. Existing AlphaMax performance is momentum performance and must not be relabeled as quality. **Decision: NOT ESTABLISHED / RESEARCH ONLY.** Zero sleeves. A future quality candidate requires a single preregistered formula, point-in-time fundamental availability, survivorship-inclusive issuer lineage, persisted daily curves, costs and borrow, current-union deflation, capacity, crisis correlation, and broker-reconciled forward evidence. ## Reproduction and credit - `docs/design/PREREG_FUNDAMENTAL_SINGLES.md`: historical family specification. - `scripts/audit_equity_fundamental_families.py`: deterministic taxonomy and ledger audit. - [`/glassbox/equity_quality_family.json`](/glassbox/equity_quality_family.json): machine packet. - [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json): global union and remaining identity-packet debt. The evidence and ALPHAC implementation were authored and directed by **Arhan Canli**, Founder of Canli Capital. Explicit authorship does not imply peer review or independent verification. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/equity-value-investment-lineage ------------------------------------------------------------------------------ # Equity value, issuance, and investment: 13 identities and unstable evidence **Short title:** Equity value and investment: complete trial lineage **Author:** Arhan Canli, Founder, System Architect, and Quantitative Researcher, Canli Capital **Research system:** ALPHAC / AlphaForge **Family key:** `equity_fundamental_value_investment` **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-22 ## Abstract ALPHAC recorded 13 equity value/investment identities: book-to-price, earnings yield, sales-to-price, accruals, asset growth, net issuance, investment-to-revenue, a value composite, and 52-week-high context. Eleven have finite immutable Sharpe measurements ranging from -0.9676 to +0.8276; nine of those 11 are negative. Accruals and one net-issuance run are non-finite. Asset growth flips from -0.6858 over 2018–2021 to +0.8276 over 2000–2026, while both book-to-price runs are negative. This is specification and data-instability evidence, not a validated return family. ## Economic hypotheses and literature Value ratios ask whether prices are low relative to accounting fundamentals. Investment factors ask whether aggressive asset growth or security issuance predicts lower subsequent returns, possibly through overinvestment, mispricing, or financing flows. Accruals ask whether cash and accounting components of earnings have different persistence. The Fama–French five-factor model formalizes value, profitability, and investment factors ([Journal of Financial Economics](https://doi.org/10.1016/j.jfineco.2014.10.010)). Cooper, Gulen, and Schill document the asset-growth effect ([Journal of Finance](https://doi.org/10.1111/j.1540-6261.2008.01370.x)). Pontiff and Woodgate study shares outstanding and cross-sectional returns ([SSRN source record](https://doi.org/10.2139/ssrn.679143)). These are priors, not validation of ALPHAC's formulas, timestamps, universe, or execution. Value, investment, issuance, profitability, and momentum overlap mechanically and empirically. The taxonomy groups these 13 implementations into one family-level evidence burden; it does not present each accounting ratio as an independent sleeve. ## Complete family accounting | Signal group | Identities | Persisted Sharpe evidence | |---|---:|---| | `eq_asset_growth` | 2 | -0.6858 and +0.8276 | | `eq_book_to_price` | 2 | -0.9676 and -0.3219 | | `eq_net_issuance` | 3 | -0.3113, -0.1289, and non-finite | | `eq_ilrev` | 1 | +0.6911 | | `eq_earnings_yield` | 1 | -0.5526 | | `eq_sales_to_price` | 1 | -0.5185 | | `eq_value_composite` | 1 | -0.5994 | | `eq_52whigh_252` | 1 | -0.2895 | | `eq_accruals` | 1 | non-finite | | **Total** | **13** | **11 finite; 2 positive; 2 non-finite** | Each row remains charged to the 228-identity union. The machine packet includes exact hypothesis and configuration hashes, source-ledger hashes, observation counts, and available moments. It does not invent results for non-finite measurements. The strongest finite identity, long-history asset growth at +0.8276, is contradicted by the shorter asset-growth run at -0.6858 and carries skew +7.5222 with kurtosis 188.87. The positive investment-to-revenue identity has skew +16.5759 and kurtosis 591.70. Several negative runs have equally extreme tails. Point estimates from such summary-only evidence cannot establish a stable return process. ## Missing evidence and decision The family audit has no complete curve binding for these 13 specific identities, so maximum drawdown, DSR, PBO, capacity, and crisis correlation remain unmeasured. Historical documents and some related artifacts may discuss individual signals, but they do not form a complete, identity-matched family packet. The public packet says so explicitly. No result is admitted, no Alpaca sleeve carries this family, and no live broker return is assigned to it. A repurchase/issuance feasibility programme is separate forward research; it cannot validate these legacy summaries retroactively. **Decision: NOT ESTABLISHED / RESEARCH ONLY.** Zero sleeves. Admission requires one newly frozen point-in-time specification, exact filing availability and issuer identity, survivorship and delisting controls, borrow and costs, persisted curves, current-union deflation, capacity, crisis diversification, and broker-reconciled forward evidence. ## Reproduction and credit - `docs/design/PREREG_FUNDAMENTAL_SINGLES.md`: historical single-factor specification. - `docs/design/PREREG_SLEEVE4_INVESTMENT.md`: asset-growth preregistration. - `docs/design/LITERATURE_REPURCHASE_ISSUANCE_FLOW.md`: issuance literature and overlap boundary. - `scripts/audit_equity_fundamental_families.py`: deterministic family audit. - [`/glassbox/equity_value_investment_family.json`](/glassbox/equity_value_investment_family.json) : machine-readable packet. - [`/glassbox/trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json): global join. This research and ALPHAC implementation were authored and directed by **Arhan Canli**, Founder of Canli Capital. The public hashes support scrutiny; they do not imply peer review or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/execution-realism ------------------------------------------------------------------------------ # Execution realism and model boundary This page describes what AlphaForge actually models as of 2026-08-18. It is an engineering capability statement, not evidence of investment performance. The compatibility default remains `NextOpenFill`; research that claims bar-liquidity realism must explicitly select `ParticipationCappedFill` and publish that choice in its run config. ## Implemented and tested | Risk | Current contract | Evidence boundary | |---|---|---| | Commissions and spreads | Venue/asset-aware fees and half-spread in one shared cost model | Unit-tested exact arithmetic | | Nonlinear impact | Square-root impact with a 1% ADV build cap and hard 5% validity edge | Out-of-regime use fails loudly | | Latency | Configured adverse price add-on | Placeholder until calibrated from paper fills | | Partial fills | Optional next-bar participation cap, lot-flooring, explicit canceled residual | Missing/zero quote volume fails closed | | Rejected/unfilled orders | Missing bars, missing cost inputs, missing liquidity and final-bar orders are counted and labeled; broker recovery ingests full or partial venue executions | No synthetic fallback fill | | Holidays | Equity D1 execution follows exchange sessions | Weekend/holiday hopping is tested | | Corporate actions | PIT split and cash-dividend replay, lake NaN-to-null normalization for no-cash splits with non-finite dividends still rejected, queued-order split rescaling, and metadata-confirmed delisting force-flat | No complex reorganizations, full historical coverage, dedicated delisting returns, or live broker path | | Delistings | Point-in-time membership and metadata-confirmed conservative administrative force-flat | Dedicated delisting-return data remains a promotion requirement | | Borrow and financing | General-collateral equity borrow and stored perp funding accrue; optional PIT locates, dynamic fees, recall buy-ins, cash credit, margin debit, and segregated short-sale-proceeds rates | No broad historical lending/rate coverage, multicurrency collateral, margin-call liquidation, broker reservation, restart persistence, auction replay or live broker path | | Stale/missing data | Signal staleness holds, price collars, missing-bar drops and feed-quality checks | No bundled historical venue-outage coverage | | Market status/outages | Optional PIT OPEN/HALTED/OUTAGE/AUCTION_ONLY/CLOSE_ONLY replay blocks impossible fills; enabling it now requires full run-interval coverage for every instrument before bars are read, while strict source-byte-bound manifests, exact official/vendor reconciliation, and audit-hash-bound reviewed providers preserve PIT lineage and expose every missing/future-known millisecond | No bundled historical status corpus, production feed adapter, empirical broad-market coverage evidence, auction-price model, smart routing or live status polling | | Crowding and liquidation | Optional PIT ownership, short-interest, borrow-utilization and flow gate; ADV-haircut liquidation stress in shared pre-trade | No broad historical ownership/flow coverage, empirical unwind calibration or correlated-depth model | | Operational controls | Pre-trade limits, reconciliation, risk-event storage, drawdown ladder and absorbing kill switch; three consecutive fill-outcome reconciliation failures persistently engage the kill and block submission | Live effectiveness still requires prospective paper evidence | | Dated futures lifecycle | PIT contract metadata, session-counted first-notice/last-trade exits, immediate-next rolls, locked-limit classification and variation margin | Domain primitives only; no futures data, product calendar, cost schedule, backtest or broker path | | Options lifecycle and surface integrity | PIT terms/quotes/official settlement/assignment notices; premium-currency-local static-arbitrage checks; single-underlying active surfaces; displayed bid/ask-bound strike monotonicity and convexity; ratio-preserving multi-leg IOC/FOK replay with homogeneous premium currency, side-specific displayed-size caps and net debit/credit limits; optional per-leg OPEN/HALTED/OUTAGE/AUCTION_ONLY/CLOSE_ONLY replay with proven reduce-only integrity; exact PIT side/liquidity/event-scoped fee revisions with declared rounding, minima, caps and rebates; complete-matrix internal scenario margin with cross-leg netting, locked model/input hashes, short floors and concentration add-ons; signed cash/physical expiry; source-bound adjusted baskets; immutable SHA-256 OCC memo archive; strict reviewed manifests and exact vendor reconciliation | Domain/data primitives only; no historical option-status corpus, complex-order auction model or live status polling/failover; internal margin is not broker/OCC/regulatory equivalent and excludes opening premium, margin calls and liquidation; no validated stress repricer/calibrated scenario corpus or verified historical fee corpus/production adapter; package replay assumes an atomic cross of independently displayed legs and has no fill probability, queue, price-improvement or beyond-size impact model; live OCC acquisition is Cloudflare-challenge-blocked; no historical fitted surface or reviewed adjustment corpus, parity/rate-dividend inputs, exercise model, backtest or broker path | ## Participation-capped fill semantics For an order presented to a bar with open price `P`, observed quote volume `V`, lot size `L`, and participation ceiling `p`, executable quantity is: `min(order_qty, floor((p × V) / (P × L)) × L)` The executed slice is priced by the same commission, spread, impact and latency model used by the default fill. If the slice is smaller than the order, the engine records `partial_fill_residual_canceled`; it does not silently assume the remainder traded. If quote volume is absent/non-positive or the cap cannot support one valid minimum lot/notional, the engine records `dropped_no_bar_liquidity` and executes nothing. Residual cancellation is intentionally conservative and deterministic. Multi-bar child-order scheduling, queue position and venue-specific rejection probabilities remain future work. ## Local engineering benchmark The reproducible synthetic microbenchmark executes 100,000 fill-model calls per repeat across seven repeats on the recorded CPython 3.12.13/arm64 Darwin runtime. In the 2026-08-17 snapshot, median call time was 887 ns for the compatibility full-fill path and 2,004 ns for the participation-capped path (2.26× the baseline). Deterministic checksums accompany every timing sample. These figures measure isolated Python fill-call overhead on one local machine. They are not end-to-end backtest throughput, capacity, latency-to-market, or return evidence. The complete machine-readable samples, workload, runtime metadata, guardrails and source hashes are published at [`/glassbox/execution_models_benchmark.json`](/glassbox/execution_models_benchmark.json). ## Explicitly not implemented - End-to-end securities lending: historical quote/locate/recall ingestion, broker reservations, restart persistence, buy-in auction replay, and live reconciliation. - End-to-end financing: historical rate schedules, multicurrency cash/collateral, broker-specific haircuts and rehypothecation, margin calls/liquidation, and live reconciliation. - End-to-end futures ingestion and trading: product calendars, dated quotes/settlements, fees and margin schedules, continuous-series attribution, broker routing, and historical limit/outage replay. - End-to-end options ingestion and trading: historical fitted surfaces, put-call-parity inputs, operational unattended OCC acquisition (direct and headless-browser clients received a Cloudflare HTTP 403 managed challenge on 2026-08-18), automated PDF text extraction, reviewed historical adjustment coverage, a production vendor adapter, calibrated early-exercise/ assignment modeling, quote repair, a verified historical fee corpus, broker-equivalent margin, validated scenario repricing, opening-premium collateral, margin calls/liquidation, complex-order-book execution, queue and beyond-displayed-size impact, historical option-status ingestion, complex-order auction execution, live outage polling/failover, backtest ledger, and broker reconciliation. - Calibrated queue position, partial-fill continuation, auction imbalance/price formation, a content-verified historical status corpus with production adapters, and live outage failover. - Historical crowding coverage and calibration: point-in-time ownership/flows, cross-manager overlap, and correlated liquidation-depth feedback. No sleeve may claim these risks are modeled merely because the platform has a generic cost or staleness control. Candidates requiring one of these capabilities remain data- or engine-gated. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/filing-facts-v0 ------------------------------------------------------------------------------ # FilingFacts v0: financial reasoning items verified from SEC XBRL data **Short title:** FilingFacts v0 dataset **Author:** Arhan Canli **Declared:** 2026-09-26, with its build and evaluation records published beside it. **License:** [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) FilingFacts is a set of 1,882 questions about the annual SEC filings of 402 companies. Every answer is computed from the company's XBRL facts, re-derived by an independent checker, and cited to the accession number of each filing it depends on, so a model's answer can be scored against the filing rather than against another model. ## What is in it | template | asks for | hops | items | |---|---|---|---| | change | the percent change of one concept between two fiscal years or balance dates | 2 | 402 | | lookup | one value as reported in a named annual filing | 1 | 402 | | net_assets | total assets minus total liabilities at one balance date | 2 | 338 | | ratio | a ratio of two concepts for the same period (margin, leverage, cash share) | 2 | 402 | | unanswerable | a period before the concept's earliest annual XBRL fact; the right answer is that the XBRL filings do not report it | 1 | 338 | The items cite 3,024 facts from filings made between 2009-11-20 and 2026-09-11, for periods ending between 1988-01-14 and 2026-06-30. Figures on this page are read from [`/glassbox/datasets/filing-facts-v0.json`](/glassbox/datasets/filing-facts-v0.json). Rules: only annual-report facts (fiscal period FY on 10-K, 20-F, 40-F and their amendments), so a question never mixes a quarter with a year; one value per concept, period end and unit; a period whose annual filings disagree on the value is dropped as ambiguous; an unanswerable item claims absence only from the company's XBRL filings. ## Baseline: gpt-5.4-mini, 150 items, closed book and with a tool | | closed book | with canli-validation-mcp's company tool | |---|---|---| | accuracy, all items | 19.3% | 68.0% | | accuracy on answerable items | 0.8% | 65.8% | | numbers given on answerable items that were wrong | 98.7% (76 numbers) | 17.7% (96 numbers) | | answerable items the model called "not reported" | 36.7% | 14.2% | | unanswerable items answered "not reported" | 93.3% | 76.7% | | unanswerable items answered with an invented number | 0.0% | 0.0% | | mean tokens per item | 187 | 3,833 | By template (accuracy, closed book then with the tool): change 0.0% and 40.0%; lookup 0.0% and 80.0%; net_assets 0.0% and 73.3%; ratio 3.3% and 70.0%; unanswerable 93.3% and 76.7%. Accuracy on all items rewards a model that answers "not reported" to everything, because the unanswerable items then score. The behaviour rows separate knowing that data is absent from declining to answer. These historical v0 records used legacy answer parsing and retain parsed answers and scores, but no raw model responses or scoring version. Their original scores cannot be independently rescored, so the effect of the parsing changes is unmeasured. The v1 runner retains raw answers and source bindings, with full-sample coverage and denominator rules documented in [offline scoring and replay](https://github.com/arhancanli/canlicapital/blob/main/scripts/datasets/filing-facts/EVALUATION.md). The historical dataset and evaluation files remain unchanged. ## Download | file | contents | size | |---|---|---| | [filing-facts-v0.jsonl](/datasets/filing-facts/v0/filing-facts-v0.jsonl) | the items, one JSON object per line | 1,624 KB | | [ff-eval-closed.json](/datasets/filing-facts/v0/ff-eval-closed.json) | closed-book baseline, every run | 32 KB | | [ff-eval-mcp.json](/datasets/filing-facts/v0/ff-eval-mcp.json) | baseline with the company tool, every run | 32 KB | | [gold-packet-v0.json](/datasets/filing-facts/v0/gold-packet-v0.json) | the gold packet annotators fill in | 28 KB | Checksums: [SHA256SUMS](/datasets/filing-facts/v0/SHA256SUMS). The generator, the independent checker and the evaluation harness are in [`scripts/datasets/filing-facts/`](https://github.com/arhancanli/canlicapital/tree/main/scripts/datasets/filing-facts), so anyone can rebuild the items from the public company data, including from filings made after a model's training cutoff. ## License and citation The items are released under CC BY 4.0. The underlying SEC filings are US public domain. Cite as: Arhan Canli (2026), FilingFacts v0: financial reasoning items verified from SEC XBRL data, Canli Capital, https://canlicapital.com/research/filing-facts-v0. ## Help verify it No item has been verified by a person yet (0 of 1,882). The gold packet holds 50 items stratified by template, and [the annotation page](/annotate) walks you through them in your browser; [the annotation guidelines](https://github.com/arhancanli/canlicapital/blob/main/scripts/datasets/filing-facts/ANNOTATION_GUIDELINES.md) say how to check each one against the filing itself. Two annotators fill copies independently, and `agreement.mjs` reports raw agreement and Cohen's kappa for each judgement. ## Evidence boundary The answers are checked against XBRL facts, not against the filings' rendered text, so a filer's tagging error becomes the dataset's answer. The baseline covers one model on a fixed sample and says nothing about other models. Restatement items (first-reported versus later-reported values) are planned for a later version. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/financing-replay ------------------------------------------------------------------------------ # Point-in-time cash and collateral financing replay AlphaForge can now accrue explicit cash-credit, margin-debit, and short-collateral rates inside the event-driven backtester. This is engineering evidence, not historical financing coverage or return evidence. No market returns were opened and no hypothesis was spent. ## Enforced behavior - Every schedule carries observed, available, valid-from, and valid-until timestamps. - An enabled run requires one schedule that covers the complete holding interval. Missing or expired coverage halts the run rather than forward-filling a rate. - Positive unrestricted cash earns the credit rate; negative cash pays the margin-debit rate. - Positive cash up to current short market value is treated as segregated short-sale collateral and receives its own explicit rate rather than the ordinary cash-credit rate. - ACT/360 and ACT/365 conventions are explicit and persisted. - Enabled replay requires one ledger currency. Mixed-currency books fail closed until FX cash ledgers exist. - Every interval persists to `financing.parquet`, including its cash bases, rates, convention, source label, and signed payment. The net amount is echoed in run metadata. - With no provider, the previous zero-cash-financing path remains unchanged. ## Deliberate boundary The platform does not bundle historical broker rate schedules, infer a rate from today’s account, or claim account-tier coverage. It does not yet model multi-currency cash, security-specific haircuts, rehypothecation, intraday margin calls, forced liquidation, futures initial or maintenance margin, options portfolio margin, or live broker statement reconciliation. This foundation is intentionally separate from security borrow. Borrow fees price the availability of a borrowed security; financing prices cash and collateral balances. Treating one as the other would double-count or omit material carrying costs. The machine-readable contract is available at [`/glassbox/financing_contract.json`](/glassbox/financing_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/forward-sharpe-evidence-standard ------------------------------------------------------------------------------ # When a Forward Sharpe Ratio Becomes Evidence A forward Sharpe ratio should not become a headline merely because a short paper-trading curve can produce one. This paper defines the precommitted evidence states used by ALPHAC: when a point estimate may be shown, when a target is only observed, and what must be true before the target can be described as statistically established. **Author:** Arhan Canli **Affiliation:** Canli Capital / AlphaC Algorithms **Version:** 1.1, 2026 (target history in section 1.1) **Capital boundary:** Alpaca and AlphaForge paper trading only; no real capital **Machine contract:** `/glassbox/forward_evidence_contract.json` **Current evaluation:** `/glassbox/forward_evidence_maturity.json` ## Abstract The easiest time to report an extraordinary risk-adjusted return is when the record is shortest. Sampling error is widest, the worst regime may not have occurred, and one favorable sequence can dominate the estimate. ALPHAC therefore separates four states: an immature record, an estimate-eligible record, a point target that has been observed but not established, and a target that has cleared a frozen sample-length and Probabilistic Sharpe Ratio threshold. The rule requires 252 observed daily returns before publishing a mature point estimate and 756 before statistical establishment is possible. Establishment additionally requires an annualized point Sharpe of at least 2.0 and at least 0.95 probability, under the non-normal Probabilistic Sharpe Ratio formula, that the true annualized Sharpe exceeds 2.0. Configuration continuity, record continuity, and a fresh passing broker reconciliation are mandatory provenance gates. Realized drawdown, modeled expected maximum drawdown, and modeled tail drawdown are reported as different quantities. The standard is deliberately harder to satisfy than displaying a computed ratio because its purpose is to prevent a target from becoming an achievement through presentation alone. ## 1. The claim being controlled A Sharpe ratio is a ratio of estimated mean excess return to estimated return volatility. Both terms are uncertain, and their ratio is especially unstable over a short record. Annualization does not create information: multiplying a daily ratio by the square root of 365 changes its unit, not the number of observations supporting it. The controlled claim is therefore not “a Sharpe ratio can be calculated.” It is whether the public record supports one of these progressively stronger statements: 1. the record exists but is too short for a mature estimate; 2. a mature point estimate may be published; 3. the point estimate is at or above the governing target; or 4. the evidence supports the stronger claim that the true Sharpe exceeds the target with the precommitted probability and sample length. These statements are not interchangeable. In particular, a point estimate at or above 2.0 is an observation about the sample. It is not statistical establishment of a forward Sharpe of 2.0. ### 1.1 The governing target and its history The governing target is read from the machine contract's `forward_sharpe_target`, which is itself projected from the owner's goals (`config/owner_goals.json`). It has moved once. From 2026-08-21 to 2026-09-14 the target was 1.5, the honest forward figure admission contract v6 adopted when it withdrew an in-sample 2.0 to 2.5 objective. From 2026-09-14 it is 2.0, the owner's combined-book goal net of costs, recorded on 2026-09-12 and confirmed on 2026-09-14. When the target moved the record held 36 daily returns, 216 short of the 252 an estimate needs, so no point estimate was ever published against 1.5 and nothing was regraded. A target change is an evaluation change, not a trading change: it restarts no forward-evidence epoch and pools nothing. Every change is appended to `forward_sharpe_target_history` in the contract with the record's status on the day it was superseded, and the record is always evaluated against the target in force at evaluation time. ## 2. Return series and annualization The input is the flagship paper curve: strictly increasing UTC dates and finite, strictly positive equity marks. For consecutive published marks (E_{t-1}) and (E_t), the simple return is \[ r_t = \frac{E_t}{E_{t-1}} - 1. \] Missing calendar dates are not filled with synthetic zero returns. A fabricated zero would alter both the mean and variance while pretending that a mark existed. Instead, the observed mark-to-mark series is evaluated and a separate continuity audit must pass. This keeps the performance calculation and the missing-record question visible as two distinct checks. For (T) observed returns, the per-period Sharpe is \[ SR_d = \frac{\bar r}{s_r}, \] where (s_r) is the sample standard deviation with one degree-of-freedom correction. The reported annualized point estimate is \[ SR_{ann} = SR_d\sqrt{365}. \] The 365-day convention matches the flagship's cross-asset paper calendar and the engine's frozen daily analytics convention. It is a reporting convention only. The probabilistic calculation uses the per-period ratio and the actual return count. ## 3. Probability that Sharpe exceeds the target The Probabilistic Sharpe Ratio accounts for finite sample length and non-normal return moments. Let (\gamma_3) be sample skewness and (\gamma_4) non-excess kurtosis, where a Gaussian distribution has kurtosis 3. Against per-period benchmark (SR^*), the probability is \[ PSR(SR^*) = \Phi\left( \frac{(SR_d-SR^*)\sqrt{T-1}} {\sqrt{1-\gamma_3 SR_d + \frac{\gamma_4-1}{4}SR_d^2}} \right). \] ALPHAC sets (SR^*=2.0/\sqrt{365}). This is stricter and more relevant than testing only whether Sharpe is positive. A probability that the true Sharpe exceeds zero may establish a positive edge; it does not establish that the governing 2.0 target has been reached. The implementation calls the same tested Probabilistic Sharpe Ratio routine used by the research engine. It does not feed an annualized ratio into a per-period formula. The annualized target is converted to the daily benchmark first, and (T) remains the count of daily return observations. ## 4. Frozen evidence states | State | Minimum evidence | Permitted public claim | |---|---:|---| | `IMMATURE_RECORD_TOO_SHORT` | Fewer than 252 returns | Publish cumulative return and realized drawdown, but no mature Sharpe point estimate. | | `ESTIMATE_ELIGIBLE_TARGET_NOT_OBSERVED` | At least 252 returns | Publish the point estimate and probability; state that the 2.0 target is not observed. | | `TARGET_OBSERVED_NOT_ESTABLISHED` | Point Sharpe at least 2.0, but the establishment conditions are incomplete | State that the sample point estimate crossed the target and explicitly state that it is not established. | | `TARGET_STATISTICALLY_ESTABLISHED` | At least 756 returns, point Sharpe at least 2.0, and (PSR(2.0)\ge0.95) | State that the forward paper record statistically establishes the target under this contract, while retaining the paper-capital boundary. | | `FAIL_CLOSED_PROVENANCE` | Any mandatory provenance check fails | Suppress establishment regardless of the calculated ratio and publish the failed checks. | The 252-return estimate threshold prevents a few weeks or months of noise from becoming a polished annual figure. The 756-return establishment threshold aligns the live claim with the research program's three-year minimum out-of-sample evidence horizon. Neither number is selected from the observed result. Both were frozen while the current record remained immature. ## 5. Provenance is part of the statistic A return series cannot establish the performance of a specification unless the specification and record are identifiable. Every one of the following checks is mandatory: - every constituent is labelled `PAPER_ONLY`; - the measured live-configuration fingerprint matches its declaration and the fingerprint frozen for the evidence epoch; - the record-continuity artifact has the required schema, a valid content hash, covers the latest flagship mark, and passes its declared gap policy; - the Alpaca reconciliation has the required schema and a valid content hash; - all dedicated Alpaca paper accounts reconcile, remain distinct, and report a passing status; - broker evidence is no more than 36 hours old and is not materially earlier than the paper state; - the current signed transparency-chain head has the required v2 schema, every link and Ed25519 signature validates, every prospectively disclosed payload rehashes exactly, and the head payload equals the canonical daily paper state evaluated for Sharpe; and - the locally simulated crypto account's latest cycle carries a complete order-book mark for every position, uses no entry-price fallback, reconciles cash plus marked market value to account equity, and covers the flagship's latest published date; and - the expected-drawdown study has the required model schema. If any check fails, the evaluator retains the underlying numerical state for diagnosis but changes the public maturity state to `FAIL_CLOSED_PROVENANCE`. A strong return cannot compensate for an unidentified configuration, stale broker evidence, or a discontinuous curve. The transparency requirement is prospective and does not manufacture historical completeness. Entries before the declared payload-disclosure boundary contain opaque signed hashes; their underlying snapshots cannot be reconstructed from the public chain. OpenTimestamps checkpoints add timing evidence for selected heads, but do not prove broker truth or replace payload disclosure. The position-attribution requirement is also prospective. Rows written before the mark-aware schema retain null mark and P&L fields; they are not backfilled from aggregate equity. Until the first genuine complete cycle is persisted, the public maturity state is `FAIL_CLOSED_PROVENANCE` with the shorter-record numerical state retained underneath it. Any trading configuration change starts a new evidence epoch. Returns from materially different specifications cannot be pooled silently. The live-change declaration records the boundary, and a new contract must state whether any prior observations remain admissible for a new claim. ## 6. Three drawdown quantities, not one The public record distinguishes: 1. **Realized live maximum drawdown:** the deepest peak-to-trough decline observed in the paper curve to date. It is descriptive and generally understates long-horizon risk when the record is short. 2. **Study-cell expected maximum drawdown:** the mean maximum drawdown across the declared simulation paths for one explicitly parameterized study cell. It can be compared with the 11% portfolio objective only after a production-equivalence audit establishes that the study cell represents the current live book. 3. **Study-cell p95 maximum drawdown:** the 95th percentile across those paths. It must appear beside the expected value because an acceptable mean can coexist with an unacceptable tail. The expected maximum-drawdown objective is not a stop-loss and does not imply that losses are bounded at 11%. A realized drawdown below 11% does not establish the modeled objective, and a model estimate below 11% does not guarantee future realized losses. Separately, the owner's bound on realized maximum drawdown is 10% (`realized_max_drawdown_bound`, in force 2026-09-14): the evaluation publishes realized drawdown against it at every mark, never mixes it with the modeled 11% objective, and a realized drawdown inside the bound to date establishes nothing about future drawdown. The sealed current study uses 96 two-year paths, fourteen daily sleeves and a 10% annualized book-level volatility target. The declared live paper composite has four sleeves, mixed hourly and daily timebases, fixed weights and no second book-level volatility target or drawdown ladder after constituent sizing. Constituents using `BlendStrategy` have their own 15% target; that setting is not an ALPHAC-level target. Production shrinkage is also absent from the study. The study's 10.25% expectation and 18.76% p95 are therefore published as study-cell results, not estimates of the current live book. A second, predeclared current-composition study maps the exact four fixed weights and strategic overlay with no ALPHAC-level volatility target. It removes the selected-window mean and reports both a 10,000-path circular block bootstrap and a 10,000-path 0.50-correlation stress-regime model. Its conservative expected maximum drawdown is 9.32%, inside the 11% objective; its p95 is 16.45%, outside it. This is stronger configuration mapping, not live establishment: the common history begins after COVID and 2022 and the models do not replay constituent instruments, execution gaps or dynamic ladder state. `/glassbox/forward_drawdown_evidence.json` records the failed equivalence checks and binds the study, contracts and implementation sources by SHA-256. The maturity report labels the objective `LIVE_EXPECTED_MAX_DRAWDOWN_NOT_ESTABLISHED`. ## 7. Diversification evidence is a separate gate The exact current-composition diversification study uses the same four fixed-weight sleeve curves, missing-mark policy and strategic overlay as the current drawdown study. Sleeve correlation is computed from the four sleeve returns; the overlay remains separate. The 1,061-row research window produces an average pairwise correlation of +0.0248 and a synchronized 10,000-sample, 63-row block- bootstrap upper 95% bound of +0.0487. The largest ordinary pair is +0.2098 and its upper bound is +0.3025. The prospective contract requires an average point no greater than 0.00 and an average upper bound no greater than +0.10. The current point therefore **fails** even though its confidence bound, ordinary-pair and stressed-design comparisons pass. Existing sleeves are not retroactively adjudicated, and “near zero” is not used as a substitute for the signed gate. The study reports a 1.8153 sleeve-only diversification ratio, 3.8988 effective independent sleeves and fixed-to-cash marginal historical book-Sharpe diagnostics, all labelled research simulation rather than forward evidence. The research curves end before the broker-reconciled record begins, so live-forward diversification remains unestablished. ## 8. Reproduction and mutation checks The evaluator is `scripts/evaluate_forward_evidence_maturity.py`. It reads twelve authorities: - `config/forward_evidence_contract.json`; - `data/paper/state.json`; - `artifacts/engineering/record_continuity.json`; - `artifacts/engineering/alpaca_broker_reconciliation.json`; - `artifacts/analysis/drawdown_live_estimator/result.json`; - `artifacts/analysis/current_book_drawdown/result.json`; - `artifacts/analysis/current_book_diversification/result.json`; - `artifacts/engineering/forward_drawdown_evidence.json`; - `meridian/public/glassbox/transparency_log.json`; - `artifacts/engineering/crypto_position_attribution.json`; - `artifacts/engineering/crypto_position_attribution_rollout_verification.json`; and - this methodology paper. It emits `artifacts/engineering/forward_evidence_maturity.json`, including SHA-256 bindings to the contract, state, continuity report, broker reconciliation, drawdown and diversification studies, sealed drawdown evidence, transparency chain, crypto position attribution, rollout verification, and this paper. The result carries a content hash over its canonical body and is copied byte-for- byte to both public hosts. For crypto attribution, completeness is not inferred from populated columns alone. The evaluator independently recomputes every position's market value as quantity times mark and unrealized P&L as quantity times the difference between mark and average entry. Non-finite values, non-positive prices, fallback marks, per-position arithmetic residuals, or failure of cash plus reconstructed market value to equal recorded account equity all fail the Sharpe provenance gate closed. A flat cycle is retained as a valid account observation but cannot certify a position-mark path it did not exercise; certification waits for a non-empty natural cycle. Runtime rollout is a separate mandatory authority. Before deployment it deterministically states `NO_DEPLOYMENT_RECEIPT`, performs no Frankfurt query, and fails provenance closed. After a hash-bound deployment receipt exists, it can pass only on a strictly later, non-empty natural cycle with the complete attribution verdict above. The first successful receipt is then frozen for that exact deployment receipt, preventing later cycles from rewriting the historical claim about what first proved the runtime. Run the focused verification with: ```text uv run python scripts/evaluate_forward_evidence_maturity.py uv run pytest -q tests/unit/test_forward_drawdown_evidence.py tests/unit/test_forward_evidence_maturity.py ``` The tests construct synthetic curves for every evidence state. They also mutate the configuration fingerprint, continuity verdict, broker verdict, chain signature, disclosed head payload, and crypto-attribution completeness. Drawdown-specific mutations alter the simulation design, selected study cell, quantile ordering and declared live configuration. Every mutation must fail closed. The test for statistical establishment uses a sufficiently long synthetic series; it does not weaken the 756-return gate to make a short fixture pass. ## 9. Limits This standard governs the language used for one continuous paper-trading specification. It does not turn paper execution into funded performance, prove that fills scale to institutional capital, eliminate non-stationarity, or guarantee that a statistically established historical ratio will persist. PSR uses observed skewness and kurtosis but cannot summarize every form of path dependence or regime change. The broker reconciliation is self-published and broker-derived, not a third-party attestation. The standard also does not substitute for trial deflation in research. A selected backtest must still carry the full search context through Deflated Sharpe Ratio and the union trial ledger. The forward paper specification is evaluated as a predeclared continuous record; it is not permission to select the best live variant after observing several. ## Claim boundary This is a methodology and disclosure standard authored by Arhan Canli. It defines when ALPHAC may describe a paper-trading Sharpe target as observed or statistically established. It makes no claim that the current record has established the target, no claim of real-money performance, and no guarantee of future returns or maximum loss. ## References - Bailey, David H., and Marcos López de Prado. “The Sharpe Ratio Efficient Frontier.” *Journal of Risk* 15, no. 2 (2012). - Bailey, David H., and Marcos López de Prado. “The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality.” *Journal of Portfolio Management* 40, no. 5 (2014): 94–107. - Sharpe, William F. “Mutual Fund Performance.” *Journal of Business* 39, no. 1 (1966): 119–138. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/futures-execution-foundation ------------------------------------------------------------------------------ # Dated-futures execution foundation **Capability status:** domain primitives only **Research effect:** zero market data opened, zero returns evaluated, zero hypotheses spent **Claim boundary:** architecture evidence, not sleeve-admission or performance evidence AlphaForge can now represent a dated futures contract as a first-class `FUTURE` instrument and make deterministic lifecycle decisions without using information unavailable at the decision time. The current AlphaTrend implementation remains a managed-futures **ETF proxy**. Nothing in this foundation relabels its evidence as direct futures evidence. ## Implemented contract Each dated contract carries its canonical instrument identity, root, contract month, listing time, metadata availability time, first-notice time, last-trade time, multiplier and tick size. Contract metadata or liquidity stamped after a decision raises `LookaheadError`. The roll policy is locked in exchange sessions rather than guessed calendar days: 1. Compute the first-notice exit session and last-trade exit session from the supplied session index. 2. Use the earlier deadline. 3. At or after that deadline, roll only to the immediate next listed expiry when its metadata is known and it remains safely before its own deadline. 4. If that immediate successor is missing or unsafe, flatten. Never skip the lineage gap by jumping farther down the curve. 5. Before the mandatory deadline, a liquidity-led roll requires the next contract to exceed the locked volume ratio for every required confirmation observation. Missing data means hold. The execution guard separately identifies locked limit-up, locked limit-down and generic missing liquidity from a point-in-time effective price band. Daily variation margin is an explicit signed cashflow: `contracts × multiplier × (current settlement − prior settlement)`. ## Fail-closed integration boundary The shared instrument taxonomy accepts dated futures, but the generic calendar and transaction cost paths reject them. There is deliberately no fallback to NYSE sessions, 24/7 crypto time, or Binance spot commissions. Product-specific sources must land before an end-to-end futures run can be valid. Still required: - exchange/product calendars and settlement schedules; - dated-contract settlements, executable quotes, volume and open interest with PIT lineage; - exchange, clearing, initial-margin and maintenance-margin schedules; - continuous-series construction with explicit roll-return attribution; - backtest ledger and broker integration; - historical limit-event and exchange-outage replay. The machine-readable capability contract, source hashes, invariants and missing components are at [`/glassbox/futures_execution_contract.json`](/glassbox/futures_execution_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/identity-redesign-notes ------------------------------------------------------------------------------ # Identity redesign notes: three families that mis-specified their population **Short title:** Identity redesign: three mis-specified families **Status: DRAFT. Nothing here is registered.** No hypothesis identity, no threshold, no universe is fixed by this document. Registering any of it spends a trial from a budget that belongs to the owner. What follows is the analysis that must come *before* a pre-registration, written down so that the pre-registration, when it happens, is written against evidence rather than against memory. *Drafted 2026-08-22. 0 trials: everything measured here is filing metadata and document language on frozen artifacts, and no return data was opened.* --- ## Why these three, and what they have in common Three families sat one gate short of clearing feasibility. The natural reading of "one gate away" is that the parser needs work. It was checked, and for all three the reading was wrong: | family | gate | measured | what a perfect detector reaches | |---|---|---|---| | `spin_off_dislocation` | pro-rata distribution language ≥ 0.30 | 0.1633 | **0.1122** | | `customer_supplier_propagation` | named-customer rate ≥ 0.50 | 0.3533 | **0.3714** | | `merger_arbitrage` | prior Item 1.01 8-K ≥ 0.80 | 0.6702 | not a detector problem at all | Two ask for language the filings do not contain at the assumed rate. The third applies one threshold across two populations with different filing obligations. None is closed by extraction work, and the temptation in all three cases is identical and must be named: widen the pattern, or lower the threshold, until the number clears. That is tuning a measurement to agree with a target, and it is the one move that would destroy the only thing this programme has. **The common error is sharper than "the threshold was too high", and it is the same error three times.** Each protocol specified a *language* test where the identity needed a *structural* fact — a form type, a timestamp, or a counterparty named on a contract. Narrative prose is the least reliable carrier of any of those. An issuer writes the narrative; the structure is imposed on them. Each note below therefore names the document that carries the evidence **before** it says anything about a threshold, and none of them proposes a threshold at all. That ordering is the point. --- ## Note 1 — `spin_off_dislocation` ### What failed The protocol looked for pro-rata distribution language in the **initial Form 10**. Across 98 frozen, hash-verified filings, only 11 contain a pro-rata token in any written form (11.2%) and only 5 have one near a distribution reference (5.1%), against a gate of 30%. The single false negative reviewed by eye was a preemptive-rights boilerplate use — a correct negative for the intended meaning, not a miss. The shipped detector *overstated* the rate it published: its second alternative matched `distribut…` followed by `holders of` with no pro-rata text required, so a field named `pro_rata_distribution_language` fired on six documents that never say pro rata. The gate fails either way and it fails harder than the record showed. ### Why the document cannot carry it An initial Form 10 is a **registration statement**. It registers a class of securities and describes the business being separated. The distribution mechanics — ratio, record date, when-issued trading — are not settled when it is filed, which is why the information statement attached to an initial Form 10 routinely carries `[•]` where the ratio will go. The protocol asked a document to state a fact that did not exist on the day it was written. ### The document that does carry it **The form type itself.** A Form 10-12B is filed to register a class of securities being distributed to shareholders. The *act of filing one* declares the event; no sentence inside it has to. That is metadata in the EDGAR master index, needs no parsing, and cannot be written around. Measured against the sixty-four quarterly master indexes this repo already holds: ``` 2010 19 initial / 64 amendments 2018 25 / 53 2011 27 / 67 2019 36 / 42 2012 22 / 66 2020 16 / 19 2013 31 / 70 2021 20 / 33 2014 38 / 150 2022 20 / 45 2015 45 / 138 2023 19 / 46 2016 33 / 151 2024 17 / 33 2017 10 / 38 2025 8 / 26 ``` **386 initial Form 10-12B filings over 2010–2025, a mean of 24.1 a year.** The universe the original protocol was trying to rediscover by reading prose was declared by the form type all along. Two structural facts follow, and one of them is unwelcome: - The **announcement timestamp** is the EDGAR acceptance time of the first 10-12B for that registrant. Metadata, no look-ahead, no parsing. - **386 events over sixteen years is thin.** Whatever a redesigned identity claims will be bounded by that count, and the bound belongs in the pre-registration rather than in a footnote after a disappointing result. ### The route that was checked and does not work The obvious alternative was to take the event universe from the corporate-action feed this repo already holds. It was checked rather than assumed: sampling 600 instruments, the lake carries exactly two action types, `dividend` and `split`. **There is no spin-off or distribution action type in it.** The structured route is the filing index, not the corporate-action record. ### What a corrected identity would look like An event study keyed on the *filing* rather than on the *language*: universe = registrants with an initial Form 10-12B in the index; announcement = that filing's acceptance timestamp; the parent's completion 8-K or the price record supplies the distribution date if the identity needs it. The whole extraction step leaves the critical path. The redesign's first question is therefore not "can we parse it?" but "**is 24 events a year enough to say anything?**" — and that question must be answered, in the pre-registration, before the identity is registered. --- ## Note 2 — `customer_supplier_propagation` ### What failed The gate asked that at least 50% of documents disclosing a customer concentration **name** the customer. Measured across 300 documents: 35.3% published, and 37.1% among the 280 that genuinely carry concentration language. A perfect detector reaches 37.1% against a gate of 50%. A hypothesis was refuted on the way and is recorded because it was wrong: reading five window excerpts by eye suggested the denominator was padded with documents disclosing no concentration at all. Measured across all 300, 93.3% do carry real concentration language. Correcting the denominator moved the rate about two points against a fifteen-point shortfall. Five excerpts were an unrepresentative sample. ### Why the document cannot carry it The disclosure obligation is to report the **concentration**, not the counterparty. An issuer must tell you that one customer is a material share of revenue; nothing requires them to tell you which one, and most do not. The gate asked the narrative for something the rule that produces the narrative never required. ### The document that does carry it **The contract, not the discussion of it.** A supply or distribution agreement names its counterparty on its face and is filed as a material-contract exhibit. Two structural surfaces follow, both metadata rather than prose: - **Exhibit descriptions in the filing index.** A material contract is listed with a description that ordinarily names the parties. This is a short, formulaic field, not narrative. - **Item 1.01 8-Ks** on entry into a material definitive agreement, which are dated and carry the agreement as an exhibit. The relationship also appears from the other side: a large customer's own filings and its exhibit list name suppliers more often than a supplier's narrative names customers, because the contract is filed by whichever party has the disclosure obligation. ### What is NOT known, and must be measured before anything is registered **The naming rate in exhibit descriptions has not been measured.** It could be higher than 37.1% or lower. Nothing in this note licenses an assumption about it, and a redesign that carried over the 50% threshold on the hope that a different surface clears it would repeat the original error with a new document. The first step of a redesign is therefore a **document-schema audit of exhibit descriptions** — the same shape of measurement that produced the 37.1% figure — reporting what fraction of concentration-disclosing issuers file a contract whose description names the counterparty. Only after that number exists can a threshold be set, and it must be set *before* the identity is registered rather than chosen to accommodate the result. ### What a corrected identity would look like Keyed on the pair `(issuer, named counterparty)` extracted from **contract metadata**, with the narrative concentration disclosure used only for the materiality test it is actually required to make. The narrative says *how much*; the contract says *who*. The original protocol asked one document to do both. --- ## Note 3 — `merger_arbitrage` ### What failed Nothing, in the extraction sense. The gate required a prior Item 1.01 8-K on at least 80% of deal anchors and measured 67.0%. Split by form type: | form | anchors | prior Item 1.01 8-K rate | clears 0.80 | |---|---|---|---| | `SC 14D9` | 442 | **0.8665** | yes | | `DEFM14A` | 1523 | **0.6133** | no | A tender offer's SC 14D9 follows a contemporaneous merger agreement, so the prior 8-K is nearly always there. A definitive merger proxy can be filed long after the agreement, by issuers who announced it another way. **The blended figure describes neither population.** `SC TO-T` appears in the filing counts and not in the anchor timeline. That is correct and was checked rather than assumed: it is the bidder's filing, not the target's. ### ⚠️ What this is not **It is not permission to narrow the universe to tender offers.** Restricting to the population that was observed to pass is selection, and the 0.8665 is now in-sample for that decision and cannot serve as its evidence. A tender-offer-scoped identity is a legitimate redesign and it needs its own pre-registration, with threshold and universe fixed before anything is measured again — on a sample disjoint from the one that produced 0.8665, or the same number will be doing double duty as both the reason for the choice and the proof that it was right. ### The specification error underneath The gate tested for the **presence of a particular document**. What the identity needs is a **clean announcement timestamp**. Those are not the same requirement, and several documents supply the second: the Item 1.01 8-K, the preliminary proxy, the merger agreement exhibit, the tender offer filings. Requiring one specific form is a specification error dressed as a data-quality gate — it fails on deals that are perfectly well documented in a different order. ### What a corrected identity would look like Two changes, and the second matters more than the first. 1. **Announcement timestamp from a declared set of forms**, taken as the earliest EDGAR acceptance among them, rather than from one mandatory form. The set is fixed in the pre-registration; the rule is metadata-only and has no look-ahead. 2. **Deal structure declared as a stratum up front, and reported separately.** We now know the populations have different filing obligations. Any redesign that blends them again is reintroducing the defect on purpose, and any redesign that silently keeps only the convenient stratum is doing something worse. Both strata get published, whatever they say. ### Prospective v2 status That corrected structure is now specified in `docs/design/FEASIBILITY_MERGER_ANNOUNCEMENT_IDENTITY_V2.md`. It preserves the failed aggregate result as exploration, freezes both filing strata, and reserves 2006–2015 as a disjoint confirmation period with 200 anchors per stratum. Its structural audit opens no confirmation documents, labels, prices, or returns. It is a technical draft awaiting Arhan's review, not an approved preregistration or a sleeve. --- ## What the three notes share, restated because it is the transferable part Every one of these protocols asked prose to certify a fact that a structure already carried: - a **form type** declares a spin-off; a sentence inside the filing need not. - a **contract** names a counterparty; the narrative that discusses it is not required to. - an **acceptance timestamp** dates an announcement; no single form is required to exist. The general rule this earns, and it is worth more than any of the three families: **when a gate measures a rate of language, check first whether the fact is available as structure.** Language rates are properties of what issuers chose to write. Structure is a property of what they were required to file, and it does not move when a drafting convention changes. None of that is evidence that any of these three families has an edge. It is only evidence about where their evidence would live, which is the question that has to be settled before the expensive one is asked. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/inflation-breakeven-relative-value-feasibility ------------------------------------------------------------------------------ # Inflation breakeven relative value — no-return source-feasibility audit **Short title:** Inflation breakeven relative value: feasibility **Author:** Arhan Canli **Audited:** 2026-08-22 **Stage:** forensic source audit after atlas enumeration; not a return preregistration. ## Scope and trial accounting - Family account: `inflation_breakeven_relative_value`. - Atlas cells: 2Y/5Y and 5Y/10Y, each at 21d, 63d, and 126d. - This audit opens no security prices, market returns, portfolio returns, forward labels, signs, Sharpe ratios, drawdowns, correlations, or capacity estimates. - Return hypotheses spent: **zero**. The six atlas cells remain untested. - Existing source counts were already visible when this audit was written. Its thresholds are institutional data requirements, not a claim of preregistered statistical cutoffs. ## Evidence inspected 1. `T5YIE.parquet` and `T10YIE.parquet` from the local macro lake: observation date, value, and locally assigned publication date only. 2. `PCPI_first_release.parquet`: vintage CPI values and the flag distinguishing genuine first releases from the initial inherited history. 3. The macro-lake metadata and arrival log, to distinguish a current snapshot from preserved historical vintages. 4. The repository's data files for any security-level TIPS/nominal-bond history, inflation-swap history, cashflows, index ratios, quotes, or total returns. ## Required gates before a return preregistration All must pass: 1. The chosen signal maturities have at least the contract's three years of aligned observations, unique dates, no internal nulls, and conservative availability timestamps. 2. Every maturity named by the chosen universe exists. A 2Y/5Y identity cannot borrow the 10Y series and retain its name. 3. Historical values are bound to genuine as-of vintages or an authoritative no-revision contract. A current full-history file plus synthetic `observation + 1 business day` timestamps does not prove what the historical file contained on that date. 4. Vintage CPI coverage is sufficient and its conservative publication rule is locked. 5. The implementation has security-level cashflows/index ratios and executable price or quote history for matched nominal/TIPS baskets, or licensed inflation-swap history. Constant-maturity estimates are signal inputs, not executable returns. 6. Bid/ask, financing, duration, carry, seasonality, index lag, deflation-floor treatment, and stressed capacity can be modelled from preserved inputs. ## Result The 5Y and 10Y files are aligned, long, unique, and internally complete. Vintage CPI is also held. That establishes signal-source depth only. The 2Y leg is absent. The daily breakeven files are one current historical snapshot, not a historical-vintage archive. No security-level matched nominal/TIPS prices, cashflows, index ratios, quotes, total returns, inflation-swap history, or execution-calibration record is present. **Decision: `DATA_GATED`.** The prior atlas reachability label “obtainable from data already held” was too broad and is superseded by this audit. No return trial is authorized. A future owner decision may acquire a lawful point-in-time fixed-income dataset; an ETF proxy would be a newly named identity and cannot silently rescue this one. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-alphamax-betaneutral ------------------------------------------------------------------------------ # Beta-Neutral Momentum Construction (campaign): a killed candidate **Short title:** Beta-Neutral Momentum Construction: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `alphamax_betaneutral` The premise was that a dollar-neutral momentum book carries hidden NEGATIVE market beta, so a junk rally hurts both legs at once. Measuring the premise first killed it. On the research panel (2005-2026) the book's mean rolling 63-day beta is -0.014 — essentially zero. On the LIVE book it is +0.319, and the LONG leg is the high-beta side (leg beta 1.932 long vs 1.238 short) — the opposite of the premise. The treatment is then regime-dependent with opposite signs: research net Sharpe 0.160 to 0.361 (bootstrap P(dSharpe<=0)=0.0225), LIVE 0.921 to 0.570 (P=0.938). It also barely touches the episode it was designed for — 0.2 points of a 9.5-point loss on research, 0.7 of 10.5 live — and it buys beta-neutrality by selling dollar-neutrality: net exposure runs to +/-34% of gross, which breaks the market-neutral mandate. Not adopted. 0 trial slots burned. Reproduce: scripts/probe_alphamax_betaneutral.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.5700 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-alphamax-short-margin-floor ------------------------------------------------------------------------------ # AlphaMax Short-Leg Margin Floor (disclosure, not a strategy): a killed candidate **Short title:** AlphaMax Short-Leg Margin Floor: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `alphamax_short_margin_floor` A disclosure against our own published number rather than a tested idea. The equity sleeve's backtest has never modelled the broker's $5.00-per-share short maintenance requirement, which is charged per share regardless of account size — so shorting an $8 stock ties up roughly 62% of its market value in margin at ANY capital level. Applying an honest $17 short-leg price floor costs -0.112 net Sharpe (2015-2026, point-in-time prices from our own lake, so no snapshot bias). Part of the published edge lives in cheap shorts that are permanently margin-inefficient. We are publishing the haircut rather than the flattering number. Separately: a borrow-availability filter appeared to cost a further -0.225, but that estimate is CONFOUNDED — it applies a current broker snapshot to eleven years of history, which silently excludes every delisted name, and delisted names are exactly where short alpha concentrates. Measuring it honestly needs point-in-time borrow data we do not have, so we report it as UNKNOWN rather than publish a number we cannot defend. The current live short book is 92 of 94 names borrowable. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.1120 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-alphamax-shorttail ------------------------------------------------------------------------------ # Short-Leg Tail Controls (campaign): a killed candidate **Short title:** Short-Leg Tail Controls (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `alphamax_shorttail` Nine construction-side short-leg controls (per-name stop-outs at 30/50/100%, gross caps at 1.25x/1.5x/2.0x, short-leg vol targeting, with and without dollar-neutral restore). Killed by attribution rather than by Sharpe. In the July 2026 episode the baseline lost 4.98%, of which the LONG leg contributed 3.61 and the SHORT leg 1.34 — the short leg is 27% of the damage. The squeeze narrative is real (ALIT +88% split-adjusted, RPD +61%) but it is the minority of the loss; the larger driver was the momentum long complex selling off. A control that drove short-leg P&L to exactly zero still could not have fixed the episode. The actual controls recovered 0.02 to 0.77 points of the 4.98 (two of the nine made it worse) with within-episode drawdown unchanged: 5.49% baseline vs 5.33% to 5.57% across the nine. Four controls cleared the pre-registered gate on full-sample numbers and all four fail the beta filter — the best (short-leg vol target, net Sharpe 0.121 vs the baseline's -0.102 on the 2005-2026 panel) buys its gain with market beta, not alpha: beta t=16.4, alpha t=-0.14. Nothing adopted. 0 trial slots burned. Reproduce: scripts/probe_alphamax_shorttail.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.1210 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-alphamax-volscale ------------------------------------------------------------------------------ # Vol-Scaled / Crash-Protected Momentum overlay (campaign): a killed candidate **Short title:** Vol-Scaled: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `alphamax_volscale` Barroso-Santa-Clara constant-vol and Daniel-Moskowitz variance/dynamic scaling applied to the live AlphaMax sleeve. On the canonical window it HURTS (net Sharpe 0.87 vs the sleeve's own 0.91, maxDD worse by 1.3-3.1pts); incremental alpha over the book-level vol target the engine already runs is statistically zero in all 5 configs (t -1.64 to +0.81, overlay-scale correlation 0.54-0.66 to the engine's own rule). The insurance is already owned; buying it twice costs money. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.8700 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-alphamax-weightgrid ------------------------------------------------------------------------------ # Weighting x Breadth Construction Grid (campaign): a killed candidate **Short title:** Weighting x Breadth Construction Grid: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `alphamax_weightgrid` Four weightings (inverse-vol, equal, signal-proportional, vol-capped) crossed with four breadths (K=30/50/100/200), 2005-2026, live cell inverse-vol K=100. Net Sharpes span -0.293 to +0.066 against the live cell's -0.062 on the same harness (this is the deep-history panel, where the deployed 2023+ sleeve's 0.91 does not apply). Four of the 15 challenger cells individually cleared the 90% paired bootstrap — but the bootstrap's own dSharpe intervals imply those cells are 0.97 to 1.00 correlated with the live cell, so four passes is about the chance expectation for a family of near-copies, not evidence. The family-wise White Reality Check over the whole grid returns p=0.315: the best cell (signal-proportional K=50, dSharpe +0.128) is indistinguishable from luck. That family-wise gate was pre-registered precisely so the best cell could not be harvested. Zero cells adoptable; keep inverse-vol K=100. 0 trial slots burned. Reproduce: scripts/probe_alphamax_weighting.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.0660 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-cef-discount ------------------------------------------------------------------------------ # Closed-End-Fund Deep-Discount + Activist Catalyst (probe): a killed candidate **Short title:** Closed-End-Fund Deep-Discount + Activist Catalyst: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `cef_discount` The five-decade anomaly is REAL in free data and we could see it: entry-cohort funds genuinely narrow their discount versus the universe (+1.17pts at 4w t=5.4, +1.26 at 13w t=7.2, +1.39 at 26w). It still fails on economics — the convergence is too slow for its toll. Hedged net Sharpe -0.088 (-0.82 price-only) against a 0.5 gate: ~12.8%/wk turnover at 41bp one-way (6bp + half the 0.7% median CEF spread) hands back the ~1.3pt/quarter the discount closes. Two further honest notes: today's entry watchlist is EMPTY (0 of 328 funds qualify — the 2024-26 activist wave already closed sector discounts to multi-year tights), and the discount screen and the activist catalyst are nearly disjoint books (4.9% overlap), so the documented live-capital story is the CATALYST trade, not the one we screened. A pre-registered, hash-locked FORWARD experiment is now accruing point-in-time data toward a single-look evaluation in 2027. Reproduce: scripts/probe_cef_discount.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.0880 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-commodity-inventory-seasonal ------------------------------------------------------------------------------ # EIA Petroleum Inventory Scarcity: a killed candidate **Short title:** EIA Petroleum Inventory Scarcity: killed **Verdict:** KILLED **Stage:** research gauntlet **Identity:** `commodity_inventory_seasonal` One pre-registered configuration on 782 accepted official EIA WPSR first-release Table 4 vintages, 2016-2026 OOS: commercial crude excluding SPR mapped to USO and total gasoline mapped to UGA, five-year same-week seasonal expectation, trailing 52-release surprise scale, next-session-open entry, DBC beta hedge and explicit one-way costs. One of 783 discovered releases was quarantined for a published arithmetic contradiction. The sleeve was exceptionally orthogonal (average correlation +0.0012, maximum pair +0.0323) and controlled DBC beta (-0.014), but there was no return edge: net Sharpe -0.589, Newey-West t -1.84, DSR 7.37e-11, max drawdown -41.1%, and Sharpe at 2x costs -0.998. USO and UGA standalone Sharpes were both negative. The fixed 10% book check improved by 0.013 over its 728-session common window, but failed after mean-centering and failed 1 of 4 leave-one-year-out checks. UGA constrained fifth-percentile proxy capacity to about $14.9k at 1% ADV. The sign is not inverted and no threshold is retuned. Full curve, scores, weights, input lineage and result are preserved in artifacts/probe/eia_petroleum_inventory/. KILLED. ## Why it was worth testing This ran the full pre-registered research gauntlet: a locked configuration, point-in-time data, costs charged, and pass/fail criteria fixed in writing before the result existed. Nothing about the specification was changed after the number arrived. That discipline is what makes the null trustworthy, and it is also what makes it final -- there is no version of this candidate that was 'nearly' admitted. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.5890 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-cot-positioning ------------------------------------------------------------------------------ # COT Positioning Overlay (campaign): a killed candidate **Short title:** COT Positioning Overlay (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `cot_positioning` Indistinguishable from zero (t~0.42 over 25 years); dies at 2x cost; the entire 'edge' is two equity-index legs. Genuine decorrelation, no edge to attach it to. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.0830 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-crypto-dated-basis ------------------------------------------------------------------------------ # Crypto Dated-Futures Basis (campaign): a killed candidate **Short title:** Crypto Dated-Futures Basis (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `crypto_dated_basis` Screened at an apparent 1.47 but refuted 3x and reproduced from scratch: the 8.2%/yr 'carry' is a roll-accounting fiction — the kept days (+0.55) and the dropped roll days (-0.55) cancel; honest all-days P&L telescopes to ~0%/yr, skew -6.84. A construction-fitting artifact (the 'edge' is earned by deleting the days it loses money). KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | not separately measured | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-crypto-lowvol-720 ------------------------------------------------------------------------------ # Crypto Low-Volatility: a killed candidate **Short title:** Crypto Low-Volatility: killed **Verdict:** KILLED **Test window:** 2023-01-01 to 2026-06-01 **Identity:** `crypto_lowvol_720` The STRONGEST in-sample signal the 200+-factor campaign found anywhere (Rank-IC t = 6.66). Full purged walk-forward: net Sharpe 0.69 — respectable. But the Deflated Sharpe Ratio is 0.04: after honestly penalising for every config we tried, it is indistinguishable from luck. A high raw Sharpe is NOT enough. This is the clearest proof of why we deflate — the prettiest backtest of the campaign, KILLED on deflation. ## Why it was worth testing The equity low-risk effect does not automatically transfer to crypto: the leverage constraint that is usually invoked to explain it barely binds in a market where retail can access high leverage directly. Testing it here was a test of the EXPLANATION, not only of the pattern, which is why a null is informative rather than merely disappointing. ## The result | Measure | Value | |---|---| | Net Sharpe | 0.6946 | | Annualized return | 8.46% | | Total return | 31.97% | | Annualized volatility | 13.00% | | Maximum drawdown | -20.12% | | Annualized turnover | 20.10 | | Trading days | 1248 | | Final equity (USD) | 131,968.39 | | Fees paid (USD) | 4,217.77 | | Funding, net (USD) | -11,303.74 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-crypto-short-tsmom ------------------------------------------------------------------------------ # Crypto Short-Horizon Trend (campaign): a killed candidate **Short title:** Crypto Short-Horizon Trend (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `crypto_short_tsmom` The strong 0.60 screen lives entirely in the untradeable 2016-18 illiquid era; modern crypto is flat-to-dead with a catastrophic -4.88 skew (crash-day reversals). KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.3000 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-crypto-vrp ------------------------------------------------------------------------------ # Crypto Variance-Risk-Premium (campaign): a killed candidate **Short title:** Crypto Variance-Risk-Premium (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `crypto_vrp` Pitched at 2.15 Sharpe — the headline was a 252-vs-365 vol-annualization error inventing a phantom 15-vol-point premium. Honest measurement: net Sharpe -0.07, skew -2.19, fails all four stress-tests, shares carry's crash dependence. A seductive false positive, KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.0700 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-deephist-quality-top800 ------------------------------------------------------------------------------ # Deep-History Quality (Top 800): a killed candidate **Short title:** Deep-History Quality (Top 800): killed **Verdict:** KILLED **Test window:** 2005-06-16 to 2026-06-22 **Identity:** `deephist_quality_top800` Quality premium does not survive net of cost on the 21-year survivorship-free universe. Net Sharpe far below the 0.30 minimum gate. KILLED, never re-tuned. ## Why it was worth testing Quality investing is the claim that profitable, stable, low-accrual businesses earn more than their risk explains. It is among the best-documented anomalies in the literature and among the most heavily traded, which is exactly why it deserved a test on a survivorship-free universe with costs charged rather than assumed away. A premium that survives in a paper and dies in a fill is not a premium. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.5926 | | Annualized return | -5.74% | | Total return | -71.16% | | Annualized volatility | 12.89% | | Maximum drawdown | -72.12% | | Annualized turnover | 3.18 | | Trading days | 5286 | | Final equity (USD) | 28,842.90 | | Fees paid (USD) | 321.25 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-econtrend ------------------------------------------------------------------------------ # Economic-Trend Sleeve, macro-fundamental trend (campaign): a killed candidate **Short title:** Economic-Trend Sleeve: killed **Verdict:** KILLED **Stage:** deployed gauntlet **Identity:** `econtrend` Trend on first-release macro vintages (payrolls, CPI, IP, credit spreads, yields, dollar) driving the 17-ETF basket by a pre-committed economic sign matrix. It has a REAL crisis-alpha personality — +60.7% through the 2008 GFC (SPY -46%), +17.5% in the 2022 bear (SPY -18%), essentially uncorrelated with the live AlphaTrend book (+0.009) and mildly SPY-negative (-0.20). But it fails the adopt bar 2 of 3: net Sharpe 0.211 (bar 0.40), DSR 0.00 at N=103, and it gets caught in fast gap-down crashes (COVID -25.9%, breaching the -22.5% floor). Genuine decorrelation, not enough edge. A hostile 3-auditor leakage panel cleared the vintage plumbing before the one-shot ran. KILLED at the gauntlet. Also tested as a combined-book DIVERSIFIER (not just standalone), since near-zero correlation can lift a book even below the solo bar: it fails there too. At equal total vol its naive Sharpe ticks up ~0.02-0.04 but within noise, it DEEPENS the GFC and 2022 drawdowns, and decisively — strip its DSR-0.00 mean and the optimal weight goes to exactly 0.00 (the whole 'benefit' was return-stacking a mean statistically indistinguishable from zero, not real diversification). Not added, in any construction. Reproduce: scripts/probe_econtrend_book.py. ## Why it was worth testing This one reached deployment before it was killed, which makes it the most expensive kind of kill and the most important to publish in full. A candidate that passed on the evidence available at the time and failed on better evidence later is not a process failure to be hidden; refusing to withdraw it would be. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.2110 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-eq-52whigh ------------------------------------------------------------------------------ # 52-Week-High Momentum (campaign): a killed candidate **Short title:** 52-Week-High Momentum (campaign): killed **Verdict:** KILLED **Stage:** deployed gauntlet **Identity:** `eq_52whigh` The one AlphaMax construction variant whose cheap screen cleared the bar (t 2.01 vs plain momentum's 1.73), so we honored the pre-registration and ran the FULL deployed-path walk-forward. It KILLED: net Sharpe -0.289 (WORSE than plain 12-1's own -0.049 on the same harness), DSR 0.00, and OOS correlation +0.42 to plain momentum — neither better nor genuinely different. The frozen 12-1 build stays. KILLED at the gauntlet. ## Why it was worth testing This one reached deployment before it was killed, which makes it the most expensive kind of kill and the most important to publish in full. A candidate that passed on the evidence available at the time and failed on better evidence later is not a process failure to be hidden; refusing to withdraw it would be. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.2890 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-eq-mom-margin ------------------------------------------------------------------------------ # Equity Momentum (with Margin Costs): a killed candidate **Short title:** Equity Momentum (with Margin Costs): killed **Verdict:** KILLED **Test window:** 2023-07-06 to 2026-06-01 **Identity:** `eq_mom_margin` Margin financing costs erode the momentum edge below the frozen k30_dn_63 baseline. Variant killed per pre-registration; the clean h=63 sleeve is the deployed one. ## Why it was worth testing This tested one specific construction choice inside the momentum family. Construction variants are the cheapest possible trials and therefore the most dangerous: they are easy to generate in bulk, they are highly correlated with each other and with the sleeve already deployed, and every one of them raises the deflation hurdle for the whole book. The prior was that it would fail, and it was pre-registered anyway so the failure would be recorded rather than quietly abandoned. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.5920 | | Annualized return | -4.46% | | Total return | -12.42% | | Annualized volatility | 10.33% | | Maximum drawdown | -15.07% | | Annualized turnover | 7.60 | | Trading days | 729 | | Final equity (USD) | 87,575.57 | | Fees paid (USD) | 144.29 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-eq-net-issuance ------------------------------------------------------------------------------ # Corporate Equity Supply (Net Issuance): a killed candidate **Short title:** Corporate Equity Supply (Net Issuance): killed **Verdict:** KILLED **Stage:** deployed gauntlet **Identity:** `eq_net_issuance` The broad corporate-equity-supply identity was run through the deployed-path walk-forward on a point-in-time Sharadar research lake: long firms shrinking split-adjusted basic shares and short firms expanding them, rebalanced every 63 sessions. The latest sealed sweep was decisively negative: net Sharpe -0.311, DSR 0.000102 after six trials, and max drawdown -37.1%. A separate source-correct full-window rerun scored +0.148 with -17.5% max drawdown, still below the 0.40 gate; the sign and magnitude instability across data paths is itself a failure, not a result to select around. Three distinct historical configurations remain charged to the same corporate-equity-supply family. A proposed completed-flow measurement may continue data-feasibility work only as a same-family refinement and cannot count as independent sleeve breadth. No sign flip, window selection, or trial reset is authorized. Evidence: artifacts/sweep/gauntlet_eq_net_issuance/walkforward.json, artifacts/analysis/null_fundamentals_rerun/result.json, and artifacts/feasibility/repurchase_issuance_flow/identity_overlap_audit.json. KILLED. ## Why it was worth testing This one reached deployment before it was killed, which makes it the most expensive kind of kill and the most important to publish in full. A candidate that passed on the evidence available at the time and failed on better evidence later is not a process failure to be hidden; refusing to withdraw it would be. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.3110 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-eq-quality-gp ------------------------------------------------------------------------------ # Equity Quality (Gross Profitability): a killed candidate **Short title:** Equity Quality (Gross Profitability): killed **Verdict:** KILLED **Test window:** 2022-07-05 to 2026-06-01 **Identity:** `eq_quality_gp` Quality via GP/A + ROE fails on the narrow top-200 / 5-year slice. Net Sharpe below the 0.30 gate; needs the wide Sharadar fundamentals universe (20yr / 3000 names). KILLED. ## Why it was worth testing Quality investing is the claim that profitable, stable, low-accrual businesses earn more than their risk explains. It is among the best-documented anomalies in the literature and among the most heavily traded, which is exactly why it deserved a test on a survivorship-free universe with costs charged rather than assumed away. A premium that survives in a paper and dies in a fill is not a premium. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.8214 | | Annualized return | -3.21% | | Total return | -11.97% | | Annualized volatility | 5.59% | | Maximum drawdown | -14.05% | | Annualized turnover | 3.77 | | Trading days | 981 | | Final equity (USD) | 88,030.04 | | Fees paid (USD) | 98.32 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-eq-value-btp ------------------------------------------------------------------------------ # Equity Value (Book-to-Price): a killed candidate **Short title:** Equity Value (Book-to-Price): killed **Verdict:** KILLED **Test window:** 2022-07-05 to 2026-06-01 **Identity:** `eq_value_btp` Value premium inverted across the 2022-2026 window. Net Sharpe below the 0.30 gate; the narrow top-200 universe is too small for the small/mid-cap value signal. KILLED. ## Why it was worth testing Value is the oldest documented cross-sectional effect in equities and the one most likely to be already in the price. The question was never whether cheap stocks have outperformed at some point in history; it is whether a mechanical, point-in-time implementation still clears its own trading costs on a universe that includes the companies that went to zero. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.3219 | | Annualized return | -1.60% | | Total return | -6.11% | | Annualized volatility | 6.61% | | Maximum drawdown | -12.23% | | Annualized turnover | 3.48 | | Trading days | 981 | | Final equity (USD) | 93,892.50 | | Fees paid (USD) | 89.46 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-equity-pead ------------------------------------------------------------------------------ # Post-Earnings-Announcement Drift (campaign): a killed candidate **Short title:** Post-Earnings-Announcement Drift: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `equity_pead` Clean null on a tradable top-1000 universe: the drift is the WRONG sign net of cost; the published PEAD edge lives only in untradeable micro-caps. Corr 0.47 to momentum. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.6500 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-equity-short-interest-dtc ------------------------------------------------------------------------------ # Short Interest / Days-to-Cover Deciles (probe): a killed candidate **Short title:** Short Interest / Days-to-Cover Deciles: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `equity_short_interest_dtc` The first genuinely NEW INPUT in months rather than another transformation of price and volume: bi-monthly FINRA short interest for the whole US tape, 2017-12-29..2026-07-15 (3,804,024 rows, 23,314 tickers), unlocked by the Polygon Starter upgrade and ingested in full. ONE pre-registered config, no sweep: long the bottom days-to-cover decile, short the top, dollar-neutral, PIT top-2000 by ADV, price >= $5, positions formed on settlement + 10 BUSINESS DAYS (FINRA disseminates ~8; the extra margin makes lookahead un-arguable) and held to the next availability date. *** CORRECTION 2026-08-05 — THE FIRST PUBLISHED NUMBERS FOR THIS ENTRY WERE WRONG. *** The probe computed returns as log(close).diff() on data/lake, which stores RAW AS-TRADED closes: not split- or dividend-adjusted. Every forward split therefore booked a catastrophic fake loss — AAPL 2020-08-31 as -135%, NVDA 2024-06-10 as -229%, TSLA 2022-08-25 as -110%. The bias was DIRECTIONAL, not noise: splits happen in high-priced mega-caps, mega-caps have enormous ADV, and days_to_cover = SI/ADV is therefore tiny for them, so every fake collapse sorted into the LONG (bottom-DTC) leg. The production feature engine refuses raw prices outright; this standalone probe bypassed that guard. Fixed in scripts/lib/px_adjust.py, which adjusts the RETURN series only and deliberately leaves price floors and ADV ranks on raw as-traded values (back-adjusting levels would introduce a look-ahead the raw panel does not have). Both affected probes were repaired in the same pass. WHAT CHANGED: gross Sharpe before any cost was published as -0.220 (full) and +0.002 (easy-to-borrow); corrected it is -0.062 (NW t -0.19) and +0.204 (NW t +0.66). The published claim that there was 'no edge for frictions to eat' was therefore FALSE — there is a small gross edge, it is simply not statistically established and it is entirely consumed by costs. The KILL STANDS but on different reasoning. Corrected net of 6bp one-way at 20x annual turnover, on the easy-to-borrow universe that is actually shortable: -0.026 / -0.228 / -0.792 at 50 / 300 / 1000 bp per year of borrow. The top days-to-cover decile IS the hard-to-borrow bucket, so the 50bp row describes a trade nobody can put on; at a realistic 300bp it is -0.228. Against the pre-registered rule it fails gate (b) Newey-West t >= 2 and gate (d) survives 300bp on easy-to-borrow, and passes (a) and (c). Correlation to the live book is -0.017, so the diversification arithmetic was favourable and it still did not matter — the same lesson as mechflow_tom: a near-zero bar lowers what a candidate must BEAT, never what it must PROVE. The sign is NOT flipped and re-tested, and the gates were NOT relaxed to admit it once the corrected numbers looked better; that is precisely the search a pre-registration exists to forbid. KILLED. Reproduce: scripts/ingest_short_interest.py then scripts/probe_short_interest.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.2040 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-equity-vrp ------------------------------------------------------------------------------ # Equity-Index VRP / short-vol (campaign): a killed candidate **Short title:** Equity-Index VRP / short-vol (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `equity_vrp` The premium is REAL (VIX minus realized = +4 vol pts, t=57) but UNHARVESTABLE: negative in every crisis, skew -1.8 to -2.2, corr +0.45 to +0.66 to SPY — short-vol is leveraged long-beta in disguise, not an orthogonal sleeve. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.4200 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-funding-termstructure ------------------------------------------------------------------------------ # Funding Term-Structure / Slope (campaign): a killed candidate **Short title:** Funding Term-Structure / Slope (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `funding_termstructure` The decorrelated residual is noise (worked pre-2023, inverted after: +1.11 then -1.43); the only version that makes money is leaked carry-LEVEL — a duplication of what we own. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.1590 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-futcarry-xs ------------------------------------------------------------------------------ # Commodity / Cross-Asset Futures Carry (probe): a killed candidate **Short title:** Commodity / Cross-Asset Futures Carry: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `futcarry_xs` Cross-sectional carry on 38 real futures (long backwardation / short contango, front-vs-next slope), 2010-2016 — the only window the term-structure marks support. GROSS Sharpe is already -0.17, so there is no edge for costs to erode; net -0.24, DSR 0.00, all six construction variants negative. The feed itself dies mid-2016 (one root keeps a next-contract mark), so it could not run live even if it worked. KILLED twice over. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.2400 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-fx-carry-ratediff ------------------------------------------------------------------------------ # FX Carry (rate differential): a killed candidate **Short title:** FX Carry (rate differential): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `fx_carry_ratediff` Long high-rate / short low-rate currencies. Net Sharpe 0.18 but skew -2.74: the carry premium does not pay for its crash risk (carry 'picks up pennies in front of a steamroller'). Below the screen bar on both Sharpe and skew. KILLED at screen. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.1800 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-fx-carry-trend-overlay ------------------------------------------------------------------------------ # FX Carry + Trend Overlay (the real construction): a killed candidate **Short title:** FX Carry + Trend Overlay: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `fx_carry_trend_overlay` The professional FX book: trend hedges carry's crashes. It screened at 0.32 — but the robustness stress-test killed it. The Sharpe SPIKED only at the exact threshold we picked by hand (a knob artifact, ~0.15 on either side); it died at realistic cost (25x turnover, 0.05 at 5bp); ALL the performance came from one post-2021 regime; and dropping JPY collapsed it to -0.07 — the entire 'edge' was the single short-JPY trade. Not a diversified premium. KILLED on robustness, before we built a thing. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.3200 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-fx-trend-cs ------------------------------------------------------------------------------ # FX Trend (cross-sectional 12-1): a killed candidate **Short title:** FX Trend (cross-sectional 12-1): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `fx_trend_cs` Cross-sectional currency trend, net of cost, 2016-2026. Flat (net Sharpe -0.035) — a weak-trend decade for FX. Below the 0.30 screen bar. KILLED at screen. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.0350 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-insider-purchase-clusters ------------------------------------------------------------------------------ # Clustered Insider Open-Market Purchases: a killed candidate **Short title:** Clustered Insider Open-Market Purchases: killed **Verdict:** KILLED **Stage:** research gauntlet **Identity:** `insider_purchase_clusters` One pre-registered configuration on official SEC Form 4 purchases, 2016-2026: at least two officers/directors and $100k purchased inside 30 calendar days, filing date plus two sessions, next-open entry, full 63-session hold, trailing-ADV eligibility, SPY beta hedge and explicit one-way costs. The current replay scheduled 3,541 non-overlapping events and was genuinely orthogonal (average correlation -0.066, maximum pair +0.057), controlled beta (+0.046), and cleared the $5M capacity gate ($5.31M fifth-percentile AUM at 1% ADV). But there was no return edge: net Sharpe -0.232, Newey-West t -0.75, DSR 1.83e-07, max drawdown -24.8%, and Sharpe at 2x costs -0.285. A fixed 10% sleeve changed combined-book Sharpe by -0.093 and failed 4 of 4 leave-one-year-out checks. A pre-publication audit corrected weighted log-return aggregation to the canonical simple-return contract; preliminary Sharpe was -0.993 and the corrected verdict remained KILL. The immutable first corrected measurement has 2,669 observations and population-std Sharpe -0.243; the current lake adds 5 sessions, so it is explicitly an OOS extension, not an exact reproduction, and the identity packet remains incomplete. The sign is not inverted and no threshold is retuned. Full curve, event ledger, weights, input lineage and result are preserved in artifacts/probe/insider_purchase_clusters/. KILLED. ## Why it was worth testing This ran the full pre-registered research gauntlet: a locked configuration, point-in-time data, costs charged, and pass/fail criteria fixed in writing before the result existed. Nothing about the specification was changed after the number arrived. That discipline is what makes the null trustworthy, and it is also what makes it final -- there is no version of this candidate that was 'nearly' admitted. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.2320 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-intraday-mom ------------------------------------------------------------------------------ # Intraday Flow-Momentum, first-30m predicts last-30m (probe): a killed candidate **Short title:** Intraday Flow-Momentum: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `intraday_mom` The twice-JFE-documented effect (Gao-Han-Li-Zhou) is fully DECAYED post-publication on SPY/QQQ/IWM: dead-zero in 2023-2026, and significantly INVERTED in 2020-2022 (a textbook publish-then-arbitrage overshoot). The only statistically-alive cell (TLT overnight, t=2.9) makes +1.2 bps/day gross against a >=2bp round-trip — a mirage economically. KILLED at screen. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | not separately measured | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-letf-eod-flow ------------------------------------------------------------------------------ # Leveraged-ETF End-of-Day Forced-Rebalance Flow (probe): a killed candidate **Short title:** Leveraged-ETF End-of-Day Forced-Rebalance Flow: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `letf_eod_flow` Leveraged ETFs MUST trade into the close (~$277B QQQ-family rebalance multiplier, ~$4B/day estimated flow) — a real, large, mechanical flow. But it is NOT tradeable on 2021-2026 data: no continuation into the close (+0.58 bps per 1-sigma flow, t=0.93), no overnight reversal, and all six strategy cells lose net of costs (best cell Sharpe -1.41). The ~0.6bp effect is ~6x below the 12bp round-trip cost floor — no cost assumption rescues it. The pre-2019 literature edge appears arbitraged away at the granularity free data sees. KILLED at screen. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -1.4100 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-mechflow-tom ------------------------------------------------------------------------------ # Turn-of-Month / Rebalancing Flow (probe): a killed candidate **Short title:** Turn-of-Month / Rebalancing Flow (probe): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `mechflow_tom` The calendar flow is real — SPY earns 5.65bp/day in the last-1-plus-first-3 window vs 3.96bp outside, and the footprint replicates on QQQ — but monetized standalone it sits in cash 76% of days: net Sharpe 0.27, below buy-and-hold SPY (0.58) and the screen bar, DSR 0.035 across 43 configs. The 60/40 month-end rebalance-fade variant decayed negative after 2018. A real effect that is an execution tilt, not a sleeve. KILLED as standalone. RE-EXAMINED 2026-08-03 because that first reason was BAD ARITHMETIC: a candidate need not beat the book to improve it, only clear own_SR > rho x S_b. Re-tested as a diversifier on ONE pre-registered config (no sweep, so no search penalty). The reframe was right about correlation — rho to the live book is +0.010, dropping the bar to +0.006 — and it still fails: own Sharpe -0.56 over the book's own window, and over 25 years / 6,309 sessions the full-history Sharpe of +0.278 carries a Newey-West t of only +1.42, with no decade reaching t=2 (best +1.32). A near-zero bar lowers what you must BEAT, never what you must PROVE. Adding it hurt the book at every weight (-0.03 to -0.15), and 87-96% of that harm came from the mean, not from variance. KILLED on the correct bar — this one is final. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.2700 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-mf-realfutures-breadth ------------------------------------------------------------------------------ # Real-Futures Breadth for the Trend Sleeve (probe): a killed candidate **Short title:** Real-Futures Breadth for the Trend Sleeve: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `mf_realfutures_breadth` We had been treating 'buy real futures data for genuine breadth' as the roadmap for the trend sleeve, on the theory that Sharpe scales with the square root of effective breadth and 17 ETFs cannot supply it. Half of that is right: measured effective breadth is 9.1 for 38 real futures versus 5.3 for the live 17-ETF basket (and only 3.5 for a 33-ETF expansion we already killed — more names, LESS breadth, which is why it failed). The other half is wrong. On an identical construction, identical costs and the identical 2010-2026 common window, the 38-market futures book returns net Sharpe -0.148 against the ETF sleeve's +0.498, independently reproducing an earlier -0.24 result we had discounted as a possible one-off. It is not a data fault: across all 38 back-adjusted series there is exactly one single-day move above 25%. Breadth MULTIPLIES the average per-market edge; where that edge is absent, more breadth buys more of nothing and 7.3x turnover instead of 4.3x. The capital-gated futures path is therefore NOT validated and we have stopped citing it. Reproduce: the probe is in the session record; data is data/lake_fut_real (38 markets). ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.1480 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-mf-realfutures-fasttrend ------------------------------------------------------------------------------ # Managed-Futures fast-trend / real-futures breadth (campaign): a killed candidate **Short title:** Managed-Futures fast-trend: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `mf_realfutures_fasttrend` Splits into robust-but-not-new (the slow book IS our existing AlphaTrend) and new-but-dead (the fast-trend leg is net-negative at every verifiable cost). Not a new sleeve. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.2000 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-multivenue-funding ------------------------------------------------------------------------------ # Crypto Multi-Venue Funding Aggregation (probe): a killed candidate **Short title:** Crypto Multi-Venue Funding Aggregation: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `multivenue_funding` Would aggregating funding across exchanges beat our Binance-only carry signal? No — null by its own pre-registered rule (promote required +0.10 Sharpe at 90% bootstrap confidence). The reason is structural: Binance and Bybit annualized funding are 0.94 correlated across 12,425 instrument-weeks, so there is almost no independent information to aggregate. The adjacent 'harvest on the best-paying venue' idea dies on arithmetic too — a median cross-venue gap of ~2.4%/yr against a four-legged ~30bp round trip implies a 22-day breakeven hold, marginal before you even price second-tier venue custody risk. The live sleeve stays Binance-only on its blessed config. Byproduct kept: a multi-exchange funding lake (Bybit deep history via mirror; OKX public history is depth-capped at ~90 days, a data finding worth recording). Reproduce: scripts/probe_multivenue_funding.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | not separately measured | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-onchain-carry-filter ------------------------------------------------------------------------------ # On-Chain Carry-Quality Filter (campaign): a killed candidate **Short title:** On-Chain Carry-Quality Filter (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `onchain_carry_filter` Placebo-indistinguishable: a random risk-off coin-flip of equal intensity matches it, and it does NOT repair carry's 2022 tail (skew got worse). No paid-data upgrade justified. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.0800 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-pm-odds-signal ------------------------------------------------------------------------------ # Prediction-Market Odds as Macro Signal (probe): a killed candidate **Short title:** Prediction-Market Odds as Macro Signal: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `pm_odds_signal` Do Polymarket-implied probabilities lead tradable markets? No — they lag them. The forward lead is null across 5 macro markets x 5 ETFs; the reverse is strong: bonds reprice a Fed move first and the odds catch up the NEXT day (corr +0.40 to TLT). Only ~2 years of usable history, all one easing cycle. The free odds are a slower, noisier copy of prices we already see. KILLED at feasibility. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | not separately measured | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-prereg-bab ------------------------------------------------------------------------------ # Pre-Registered Betting-Against-Beta: a killed candidate **Short title:** Pre-Registered Betting-Against-Beta: killed **Verdict:** KILLED **Test window:** 2005-01-04 to 2026-06-01 **Identity:** `prereg_bab` Pre-registered BAB on 21 years. Net Sharpe ~ -0.07, failed the DSR >= 0.95 gate. Low-risk anomaly does not survive net of cost here. KILLED. ## Why it was worth testing The low-volatility effect is the observation that low-beta stocks have historically delivered better risk-adjusted returns than their beta predicts, usually explained by leverage constraints among institutional investors. It is a crowded trade and a structurally levered one, which makes the cost and financing assumptions load-bearing rather than incidental. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.0679 | | Annualized return | -0.88% | | Total return | -17.22% | | Annualized volatility | 10.68% | | Maximum drawdown | -34.15% | | Annualized turnover | 2.86 | | Trading days | 5385 | | Final equity (USD) | 82,780.29 | | Fees paid (USD) | 379.72 | | Funding, net (USD) | 63.63 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-prereg-momentum ------------------------------------------------------------------------------ # Pre-Registered Momentum (deep history): a killed candidate **Short title:** Pre-Registered Momentum (deep history): killed **Verdict:** KILLED **Test window:** 2005-01-04 to 2026-06-01 **Identity:** `prereg_momentum` Pre-registered momentum on 21 years of deep history. Net Sharpe ~ -0.05, failed the DSR >= 0.95 gate. The deployed momentum sleeve is the frozen 2023+ k30_dn_63 instead. ## Why it was worth testing Cross-sectional momentum is the anomaly this book already trades, so a second momentum construction had to clear a harder bar than a novel idea: it must add something the existing sleeve does not already capture. A variant that merely re-expresses the same signal buys correlation, not breadth. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.0493 | | Annualized return | -0.76% | | Total return | -15.07% | | Annualized volatility | 10.66% | | Maximum drawdown | -34.98% | | Annualized turnover | 3.26 | | Trading days | 5385 | | Final equity (USD) | 84,925.53 | | Fees paid (USD) | 525.00 | | Funding, net (USD) | -2,943.06 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-prereg-quality ------------------------------------------------------------------------------ # Pre-Registered Quality (GP/A + ROE): a killed candidate **Short title:** Pre-Registered Quality (GP/A + ROE): killed **Verdict:** KILLED **Test window:** 2005-01-04 to 2026-06-01 **Identity:** `prereg_quality` Pre-registered quality on 21 years. Net Sharpe -0.83, the worst sleeve. KILLED; the wide-universe quality thesis fails to replicate on the available data. ## Why it was worth testing Quality investing is the claim that profitable, stable, low-accrual businesses earn more than their risk explains. It is among the best-documented anomalies in the literature and among the most heavily traded, which is exactly why it deserved a test on a survivorship-free universe with costs charged rather than assumed away. A premium that survives in a paper and dies in a fill is not a premium. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.8316 | | Annualized return | -4.27% | | Total return | -60.75% | | Annualized volatility | 7.29% | | Maximum drawdown | -64.06% | | Annualized turnover | 2.63 | | Trading days | 5385 | | Final equity (USD) | 39,248.43 | | Fees paid (USD) | 321.76 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-prereg-value ------------------------------------------------------------------------------ # Pre-Registered Value (composite): a killed candidate **Short title:** Pre-Registered Value (composite): killed **Verdict:** KILLED **Test window:** 2005-01-04 to 2026-06-01 **Identity:** `prereg_value` Pre-registered composite value on 21 years. Net Sharpe -0.60, failed every gate. Confirms the value thesis does not replicate without small/mid-cap breadth. KILLED. ## Why it was worth testing Value is the oldest documented cross-sectional effect in equities and the one most likely to be already in the price. The question was never whether cheap stocks have outperformed at some point in history; it is whether a mechanical, point-in-time implementation still clears its own trading costs on a universe that includes the companies that went to zero. ## The result | Measure | Value | |---|---| | Net Sharpe | -0.5994 | | Annualized return | -4.05% | | Total return | -58.75% | | Annualized volatility | 9.23% | | Maximum drawdown | -64.27% | | Annualized turnover | 2.87 | | Trading days | 5385 | | Final equity (USD) | 41,251.08 | | Fees paid (USD) | 292.36 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-rates-curve-carry ------------------------------------------------------------------------------ # Rates-Curve Carry (campaign): a killed candidate **Short title:** Rates-Curve Carry (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `rates_curve_carry` Robustly NEGATIVE, not fragile-positive: the signal points the wrong way — steepest curves preceded the worst duration drawdowns (2022). Real decorrelation, negative edge. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.3300 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-residual-momentum ------------------------------------------------------------------------------ # Residual (beta-neutral) Momentum (campaign): a killed candidate **Short title:** Residual (beta-neutral) Momentum: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `residual_momentum` Corr 0.87 to raw 12-1 momentum on the broad survivorship-free universe — it is the SAME bet as AlphaMax, net-negative. The claimed 'separation' is false here. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.0980 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-tail-overlay ------------------------------------------------------------------------------ # Long-Vol Tail Overlay (campaign): a killed candidate **Short title:** Long-Vol Tail Overlay (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `tail_overlay` An honest positive-skew (+2.06) anti-equity hedge — but its ONLY thesis, improving the combined book, fails at every hedge weight. AlphaTrend already provides crisis convexity WITH a positive standalone Sharpe. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.5600 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-xasset-carry ------------------------------------------------------------------------------ # Cross-Asset Carry (campaign): a killed candidate **Short title:** Cross-Asset Carry (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `xasset_carry` 5 constructions. The COMBINED cross-asset book is net-NEGATIVE (3 of 4 legs lose); the one positive leg (oil backwardation, +0.37) is a single-instrument bet that leave-one-out zeroes; rates-carry fails the Covid crisis gate. Real futures data cannot flip it. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | 0.3700 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-xasset-value ------------------------------------------------------------------------------ # Cross-Asset Value (campaign): a killed candidate **Short title:** Cross-Asset Value (campaign): killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `xasset_value` 6 constructions, ALL net-negative. The decisive tell: flipping the value sign is positive in every asset class — the only premium present is anti-value = momentum/trend, which we already own. Cross-asset value on liquid proxies is just short-momentum, and it loses. KILLED. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.2400 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/kill-xs-seasonality ------------------------------------------------------------------------------ # Cross-Sectional Same-Calendar-Month Seasonality (probe): a killed candidate **Short title:** Cross-Sectional Same-Calendar-Month Seasonality: killed **Verdict:** KILLED **Stage:** screen prototype **Identity:** `xs_seasonality` The one equity-side signal genuinely DECORRELATED from our momentum sleeve — and that is exactly why it is worth publishing. Same-calendar-month ranking across a 33-ETF macro basket, 10y trailing PIT history, monthly, net of 6bp + borrow: net Sharpe -0.334, and NEGATIVE GROSS too (-0.176), so there is no edge for costs to erode. Correlation to plain 12-1 momentum is just +0.07 (it passes the costume test that killed residual momentum and 52-week-high) — but a 12-1 control on the SAME universe prints +0.175, so the harness can find a real signal; this one simply is not there. Decorrelation without edge is worthless. Screen gate failed, no walk-forward trial spent. Reproduce: scripts/probe_seasonality.py. ## Why it was worth testing This died at the screen stage, before a full walk-forward was ever run. Screening exists so that ideas which cannot clear a coarse, cost-aware bar do not consume the far more expensive machinery behind it. A screen kill is a cheap kill, and it is published for the same reason as an expensive one: the trial was still spent, and it still raises the evidence bar for everything already in the book. ## The result | Measure | Value | |---|---| | Screen net Sharpe | -0.3340 | ## What this does and does not say It says this configuration, on this data, net of the costs we charge, did not clear the bar it pre-registered. It does not say the underlying economic effect does not exist, that no implementation of it works, or that someone with different data or different execution would reach the same conclusion. A null is evidence about a test, not a proof about a market. It also does not say the trial was free. Every hypothesis tested raises the deflated-Sharpe hurdle for every sleeve already in the book, including the ones that survived. That is why the kill count is published beside the survivor count rather than behind it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/legacy-dsr-restatement ------------------------------------------------------------------------------ # Legacy DSR restatement This is a correction ledger, not a performance upgrade. Original artifacts remain intact. Current selection context: **N=228**, identity-aligned **V[SR]=0.0008957471**. - Restated: 33 variants across 5 families. - Retired for missing return series: 7 families. - Current DSR ≥ 0.95: 0 variants. ## Recomputed variants | Family | Variant | Historical DSR | Current DSR | Status | |---|---|---:|---:|---| | alphamax_betaneutral | `LIVE-REPLICA k30_dn_63/BASE` | 0.183185 | 0.162490 | FAIL | | alphamax_betaneutral | `LIVE-REPLICA k30_dn_63/BASE_asis` | 0.134993 | 0.118102 | FAIL | | alphamax_betaneutral | `LIVE-REPLICA k30_dn_63/CTRL_NETLONG` | 0.069001 | 0.058845 | FAIL | | alphamax_betaneutral | `LIVE-REPLICA k30_dn_63/V1_betaneutral` | 0.078945 | 0.067668 | FAIL | | alphamax_betaneutral | `LIVE-REPLICA k30_dn_63/V2_betahedged` | 0.107465 | 0.093211 | FAIL | | alphamax_betaneutral | `LIVE-REPLICA k30_dn_63/V2m_hedge_21d` | 0.110626 | 0.096055 | FAIL | | alphamax_betaneutral | `RESEARCH top-2000 K=100/BASE` | 0.000000 | 0.000000 | FAIL | | alphamax_betaneutral | `RESEARCH top-2000 K=100/BASE_asis` | 0.000000 | 0.000000 | FAIL | | alphamax_betaneutral | `RESEARCH top-2000 K=100/CTRL_NETLONG` | 0.000000 | 0.000000 | FAIL | | alphamax_betaneutral | `RESEARCH top-2000 K=100/V1_betaneutral` | 0.000003 | 0.000001 | FAIL | | alphamax_betaneutral | `RESEARCH top-2000 K=100/V2_betahedged` | 0.000000 | 0.000000 | FAIL | | alphamax_betaneutral | `RESEARCH top-2000 K=100/V2m_hedge_21d` | 0.000000 | 0.000000 | FAIL | | alphamax_construction | `A1` | 0.150387 | 0.136112 | FAIL | | alphamax_construction | `A2` | 0.209723 | 0.191973 | FAIL | | alphamax_construction | `G1` | 0.294726 | 0.275058 | FAIL | | alphamax_construction | `I1` | 0.529216 | 0.504142 | FAIL | | alphamax_construction | `I2` | 0.141761 | 0.128013 | FAIL | | alphamax_construction | `I3` | 0.024886 | 0.021383 | FAIL | | alphamax_construction | `I4` | 0.156486 | 0.141846 | FAIL | | alphamax_construction | `R0` | 0.150387 | 0.136112 | FAIL | | alphamax_constructions | `gauntlet_eq_52whigh_252` | 0.000020 | 0.000000 | FAIL | | alphamax_shorttail | `baseline` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `cap_1.25x` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `cap_1.5x` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `cap_2.0x` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `daily_reset` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `stop_100` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `stop_30` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `stop_50` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `stop_50_dn` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `svol` | 0.000000 | 0.000000 | FAIL | | alphamax_shorttail | `svol_dn` | 0.000000 | 0.000000 | FAIL | | econtrend | `locked_primary_oos` | 0.000000 | 0.000000 | FAIL | ## Retired historical DSR claims - **exp2_crypto_vrp** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. - **alphamax_hyst_live** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. - **alphamax_turnover** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. - **alphamax_volscale** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. - **alphamax_weighting** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. - **alphatrend_arp** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. - **alphatrend_breadth** — The persisted artifact contains summary statistics but no variant-level return series. DSR depends on observations, skew and kurtosis; it cannot be honestly reconstructed from annualized Sharpe. ## Executable-code status All 12 historical probe paths now use identity-aligned union accounting or fail closed at preflight. There are 0 executable raw-row DSR paths. Separately, 7 summary-only artifact families remain retired and cannot be treated as approved evidence. Resolved paths: - `scripts/exp2_crypto_vrp.py` - `scripts/probe_alphamax_betaneutral.py` - `scripts/probe_alphamax_construction.py` - `scripts/probe_alphamax_constructions.py` - `scripts/probe_alphamax_hyst_live.py` - `scripts/probe_alphamax_shorttail.py` - `scripts/probe_alphamax_turnover.py` - `scripts/probe_alphamax_volscale.py` - `scripts/probe_alphamax_weighting.py` - `scripts/probe_alphatrend_arp.py` - `scripts/probe_alphatrend_breadth.py` - `scripts/probe_econtrend.py` ## Interpretation boundary This restates DSR only. It does not upgrade data quality, validation grade, sleeve admissibility or investment performance, and it does not alter original artifacts. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-bond-etf-nav-dislocation ------------------------------------------------------------------------------ # Bond-ETF NAV dislocation — literature and mechanism review **Reviewed:** 2026-08-16. **Stage:** source review only. No market observations, returns, signs, thresholds, horizons, or portfolio statistics were inspected. ## Mechanism under review Corporate-bond ETFs can trade away from their reported net asset value because ETF shares trade continuously while many underlying bonds trade infrequently and are valued using evaluated marks. The creation/redemption mechanism is also not a frictionless full-holdings arbitrage: bond ETF baskets can be fractional, change through time, and differ systematically between creations and redemptions. Liquidity and dealer balance-sheet constraints can therefore permit persistent price/NAV gaps. That observation does not establish a secondary-market alpha. A discount may mean the ETF is discovering the value of stale underlying marks rather than that the ETF is mispriced. Authorized participants have creation/redemption access and basket information that an ordinary brokerage account does not. ALPHAC must not label a long/short ETF trade as AP arbitrage or assume convergence to an accounting NAV is executable. ## Adversarial evidence - Federal Reserve research finds ETF arbitrage efficacy depends on liquidity, with stronger and more persistent effects for less-liquid bond ETFs. - BIS work documents fractional and high-turnover bond baskets and links persistent premiums and discounts partly to slow NAV adjustment to ETF prices. - The March 2020 episode is not clean proof of ETF underpricing: bond ETF prices could incorporate information faster than stale constituent marks. - Public iNAV/indicative values are not necessarily real-time executable portfolio values and may reuse stale evaluated prices. ## Source implications A credible historical test needs synchronized point-in-time records for ETF NBBO/trades, official NAV and publication time, holdings and creation/redemption baskets, bond identifiers and corporate actions, underlying TRACE trades, executable spread/impact estimates, and valuation timestamps. Daily premium/discount data alone cannot identify which side of the gap contains the information. FINRA offers transaction-level historical TRACE data with execution time, price, size, and yield, but historical products require agreements and fees. Rule 6c-11 requires recent daily ETF website disclosures and a chart for the most recently completed calendar year/current quarters; it does not create a free permanent ten-year archive. ## Primary sources - Federal Reserve, *Arbitrage and Liquidity: Evidence from a Panel of Exchange Traded Funds*: https://www.federalreserve.gov/econres/feds/arbitrage-and-liquidity-evidence-from-panel-of-exchange-traded-funds.htm - BIS, *The anatomy of bond ETF arbitrage*: https://www.bis.org/publ/qtrpdf/r_qt2103d.htm - BIS, *ETFs, illiquid assets, and fire sales*: https://www.bis.org/publ/work975.htm - SEC Rule 6c-11 adopting release: https://www.sec.gov/files/rules/final/2019/33-10695.pdf - FINRA TRACE historical-data information: https://www.finra.org/industry/trace-historic-academic-data ## Claim boundary The literature supports a real price-discovery and market-structure question, not a return claim. No evidence here establishes sign, timing, net profitability, diversification, capacity, or sleeve admissibility. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-customer-supplier-propagation ------------------------------------------------------------------------------ # Customer–supplier propagation — source and identity review **Reviewed:** 2026-08-16. **Research stage:** literature and source engineering only. No prices, returns, signs, thresholds, or portfolio statistics were inspected. ## Economic claim under review Cohen and Frazzini document delayed incorporation of economically linked firms' news: customer returns predict subsequent supplier returns when links are defined from suppliers' disclosed major customers. The investable interpretation is limited attention to indirect cash-flow news, not a generic momentum strategy. Later evidence is an important adversarial check: shared analyst coverage can subsume several momentum-spillover effects, so a future implementation must neutralize direct stock/industry momentum and test whether the relationship survives in a modern, strictly out-of-sample period. The candidate here is therefore not “buy suppliers of stocks that went up.” A relationship may exist only after a supplier filing publicly identifies a material customer. Any future signal must be tied to a later, timestamped customer event and must be evaluated after neutralizing supplier momentum, customer momentum, industry momentum, size, beta, and shared-news exposure. ## Disclosure reality US segment-reporting rules require disclosure when revenue from one customer reaches 10% of total revenue, including the amount and relevant segment. They do not create a dependable requirement to publish the customer's legal identity. Filers commonly use labels such as “Customer A,” “one customer,” or a customer category. Consequently, the existence of a concentration disclosure is not proof that an executable customer–supplier graph can be reconstructed from public filings. SEC submissions and filing archives provide immutable accession identity and acceptance timing. SEC XBRL APIs expose filed financial-statement facts in real time, but issuer-specific extensions and dimensions do not guarantee a stable, historical customer identifier. Current SEC ticker/name maps are not a point-in-time alias history and cannot safely resolve old customer names by themselves. ## Falsification priorities 1. Measure the prevalence of concentration language in the already hash-addressed 10-K corpus. 2. On a deterministic, year-balanced sample, measure whether the disclosure names a customer rather than using an anonymous label. 3. Separate textual name extraction from historical issuer resolution; neither implies the other. 4. Fail closed if unresolved aliases, private customers, governments, subsidiaries, or current-map survivorship prevent a point-in-time public-company edge. 5. If source feasibility eventually passes, register this as one economic family and count every customer-event/sign/horizon variant in the same family-wise trial account. ## Primary sources - Lauren Cohen and Andrea Frazzini, *Economic Links and Predictable Returns* (original paper): https://users.nber.org/~confer/2006/bfs06/frazzini.pdf - Usman Ali and David Hirshleifer, *Shared Analyst Coverage: Unifying Momentum Spillover Effects* (adversarial evidence): https://www.nber.org/papers/w25201 - SEC EDGAR APIs and bulk-data documentation: https://www.sec.gov/search-filings/edgar-application-programming-interfaces - FASB Statement No. 14, major-customer disclosure rule (historical source for the 10% rule): https://storage.fasb.org/fas14.pdf ## Claim boundary This review establishes an economically motivated candidate and a serious source-risk hypothesis. It makes no claim that the effect persists, that public filings provide a sufficient graph, or that the candidate has positive net returns, diversification value, capacity, or admission eligibility. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-electricity-load-weather ------------------------------------------------------------------------------ # Electricity load/weather dislocation: literature and implementation boundary **Short title:** Electricity load and weather: literature **Reviewed:** 2026-08-16 **Family:** `electricity_load_weather_spread` **Claim state:** mechanism supported; investable return untested **Return identities spent:** zero ## Abstract Power must balance continuously, while demand and renewable output depend on weather. Forecast updates therefore change expected scarcity, commitment, balancing demand, and the marginal fuel stack. This supports a plausible short-horizon relative-value mechanism, but not a generic “weather predicts power” return claim. A defensible study must preserve the operational forecast vintage available before the trade, the local market clock, physical constraints, and executable power/fuel instruments. ## Key evidence Maciejowska, Uniejewski, and Weron's review explains why electricity prices have unusual short-run dynamics and why probabilistic forecasts and economic—not only statistical—evaluation are necessary. It supports the forecasting problem, not a specific profitable rule. - [Maciejowska, Uniejewski, and Weron, *Forecasting Electricity Prices*](https://arxiv.org/abs/2204.11735) Kiesel and coauthors study speculative intraday trading driven by renewable-production forecast updates. Their controlled out-of-sample evidence supports the mechanism that public forecast revisions can move intraday prices, but it is a European continuous-market design and cannot be ported directly to US listed monthly power futures. - [*Intraday power trading: toward an arms race in weather forecasting?*](https://link.springer.com/article/10.1007/s00291-022-00698-5) Ruhnau shows that the economic value of a generation forecast depends on how forecast errors co-move with prices; lower RMSE alone need not produce better trading economics. This motivates ALPHAC's prohibition on selecting a weather model by forecast accuracy and then assuming the same ranking survives costs and market impact. - [Ruhnau, *Economic implications of forecasting electricity generation from variable renewable energy sources*](https://doi.org/10.1016/j.renene.2020.06.110) The EIA-930 route publishes hourly actual demand and day-ahead demand forecasts by balancing authority. Its public API schema is useful for source feasibility, but delivery period is not a forecast issue timestamp or immutable revision identifier. - [EIA Open Data API](https://www.eia.gov/opendata/index.php/api) - [EIA electricity data guide](https://www.eia.gov/electricity/data/guide/pdf/guide.pdf) NOAA/NCEI archives operational and retrospective forecast products. Reanalysis and reforecast products are useful controls, but retrospective model output is not evidence of what a trader observed in real time. Operational initialization, dissemination latency, model changes, and archive completeness must remain explicit. - [NOAA/NCEI Climate Forecast System archive](https://www.ncei.noaa.gov/products/weather-climate-models/climate-forecast-system) - [NOAA archive dataset selection](https://www.ncei.noaa.gov/has/HAS.DsSelect) ## ALPHAC boundary The first admissible identity remains PJM Western Hub peak/off-peak power relative to Henry Hub fuel, with natural-gas trend and calendar seasonality neutralized. ERCOT, nodal prices, utility equities, and ETF proxies are not pooled into the same trial. No direction, model, threshold, holding period, Sharpe ratio, or admission claim is supported yet. The family is economically distinct from the killed generic futures carry and commodity positioning tests, but independence is not presumed. Any later return test must report conditional correlation and co-expected-shortfall against AlphaTrend, natural-gas shocks, short-volatility exposure, and extreme-weather periods. ## Rerun inputs - workflow requested: `firecrawl-research-papers` - collection result: Firecrawl unavailable because `FIRECRAWL_API_KEY` was not configured - fallback: primary papers plus official EIA and NOAA documentation - output: markdown literature boundary - return data opened: no - return hypotheses spent: zero ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-frontier-2026-08-16 ------------------------------------------------------------------------------ # ALPHAC literature frontier — 2026-08-16 Status: literature and data-feasibility screen only. No return series was opened and no return identity was spent. The purpose is to find mechanisms that are economically distinct from the current four sleeves: equity momentum, managed-futures trend, funding carry, and point-in-time CPI surprise. ## Decision summary Three candidates enter key-free feasibility: 1. **Treasury auction concession.** Repeated, scheduled balance-sheet demand around US Treasury coupon auctions; public auction lineage is available from Treasury. The primary falsification sample begins after the 2013 publication of the main study. 2. **CFTC hedging pressure.** Cross-sectional commodity risk transfer measured from reports that describe Tuesday positions but are released Friday. Any test must trade only after release and residualize both trend and futures-curve carry. 3. **Pre-FOMC announcement drift.** One replication identity only, with the post-2015 publication period as the primary sample and the published disappearing-effect evidence treated as a reason to expect a kill, not as a footnote. Four attractive themes remain deferred rather than promoted: - **Closed-end-fund discount mean reversion:** mechanism is plausible, but historical, point-in-time NAV and distribution treatment need a feasibility audit before returns. - **Corporate-bond ETF dislocation:** potentially episodic and diversifying, but executable NAV timing, stale bond marks, creation/redemption access, and crisis costs are load-bearing. - **Catastrophe bonds:** strong diversification case, but indices and investable instruments are not adequate substitutes for executable security-level history. - **Carbon allowances and freight derivatives:** economically distinct, but historical bid/ask, rolls, venue access, and contract-level data are commercial and currently unqualified. Customer-supplier propagation and downside variance-premium research stay inside the existing earnings-narrative and options workstreams, respectively; listing them as fresh sleeves would double-count families already in the queue. ## Admission logic Literature strength alone cannot admit a sleeve. Every promoted idea still needs immutable point-in-time lineage, one locked return identity, realistic execution, capacity, deflated Sharpe, PBO, ordinary and stressed correlations, and leave-one-year-out book contribution. At publication, the portfolio Sharpe objective was 2.0–2.5; it was not evidence and could not lower those gates. That target was withdrawn on 2026-08-21. The governing objective is now an honest forward Sharpe of 1.5, with a 2.25–3.0 in-sample support band after the disclosed haircut; it likewise is not admission evidence. ### Treasury auction concession - Mechanism is scheduled inventory absorption, not trend or a static duration premium. - Free source: the [US Treasury Fiscal Data Auctions Query API](https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v1/accounting/od/auctions_query). - Optional conditioning data: the [New York Fed primary-dealer time-series catalogue](https://markets.newyorkfed.org/api/pd/list/timeseries.json). - Main prior: Lou, Yan, and Zhang, [“Anticipated and Repeated Shocks in Liquid Markets”](https://doi.org/10.1093/rfs/hht034). - Supporting market-structure prior: [“Trading Ahead of Treasury Auctions”](https://doi.org/10.2139/ssrn.2789988). - Broader seasonality warning: [“Seasonal Variation in Treasury Returns”](https://doi.org/10.1561/104.00000021). - Required falsification: post-publication performance, duration-beta hedge, reopenings versus new issues, auction-size conditioning, one-tick cost stress, and exclusion of unscheduled calendar changes. ### CFTC hedging pressure - Mechanism is compensation for absorbing commercial net supply, not price continuation. - Free source: [CFTC historical compressed Commitment of Traders files](https://www.cftc.gov/MarketReports/CommitmentsofTraders/HistoricalCompressed/index.htm). - Main prior: Basu and Miffre, [“Capturing the risk premium of commodity futures: The role of hedging pressure”](https://doi.org/10.1016/j.jbankfin.2013.02.031). - Fundamental context: Gorton, Hayashi, and Rouwenhorst, [“The Fundamentals of Commodity Futures Returns”](https://doi.org/10.3386/w13249). - Replication-risk context: [“The predictive performance of commodity futures risk factors”](https://doi.org/10.1016/j.jbankfin.2016.06.011). - Required falsification: Tuesday-observation/Friday-release lag, fixed contract map, revised report handling, trend and curve-carry residualization, limits, roll costs, and crisis spreads. ### Pre-FOMC announcement drift - Free source: the Federal Reserve’s [FOMC calendars and historical materials](https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm). - Original prior: Lucca and Moench, [“The Pre-FOMC Announcement Drift”](https://doi.org/10.1111/jofi.12196). - Contrarian prior: [“The Disappearing Pre-FOMC Announcement Drift”](https://doi.org/10.2139/ssrn.3134546). - Required falsification: post-2015 sample first, exact event-time bars, schedule revisions, overnight decomposition, ordinary beta control, spread/slippage stress, and announcement-gap tail loss. A weak post-publication result is a kill; there is no alternate window rescue. ## Deferred themes and why ### Closed-end-fund discounts The literature directly studies mean reversion, but a tradable result requires the NAV that was actually published at each decision time, not a restated series. - [“Evidence on the Mean-Reverting Tendencies of Closed-End Fund Discounts”](https://doi.org/10.1111/1540-6288.00046) - [“Mean-reversion in closed-end fund discount: evidence from half-life”](https://doi.org/10.1080/00036846.2013.791019) - [“Noise Trading, Costly Arbitrage, and Asset Prices: Evidence from Closed-end Funds”](https://doi.org/10.1111/1540-6261.00506) - Official holdings/NAV lineage starting point: [SEC Form N-PORT data sets](https://www.sec.gov/data-research/sec-markets-data/form-n-port-data-sets) ### Corporate-bond ETF dislocation This may be a liquidity-provision sleeve rather than a credit-beta sleeve, but reported NAV can inherit stale underlying marks and ordinary investors cannot assume authorized-participant creation/redemption economics. - [“Impacts of the Fed Corporate Credit Facilities through the Lenses of ETFs and CDX”](https://doi.org/10.21033/wp-2020-14) - [“When Selling Becomes Viral: Disruptions in Debt Markets in the COVID-19 Crisis and the Fed’s Response”](https://doi.org/10.1093/rfs/hhaa145) - [“Exchange Traded Funds (ETFs)”](https://doi.org/10.3386/w22829) ### Catastrophe bonds The diversification evidence is relevant, but an index return is not an executable portfolio and trigger/event modeling cannot be reconstructed from a retail ETF proxy. - [“Diversification through Catastrophe Bonds: Lessons from the Subprime Financial Crisis”](https://doi.org/10.1057/gpp.2014.14) - Chicago Fed primer, [“Catastrophe bonds: A primer and retrospective”](https://doi.org/10.21033/cfl-2018-405) - [“The risk implications of insurance securitization: The case of catastrophe bonds”](https://doi.org/10.1016/j.jcorpfin.2014.01.004) ### Carbon allowances and freight derivatives Both are structurally attractive because their physical and regulatory state variables differ from the current book. Neither enters the active queue until contract-level history and venue access are shown executable. - [“Convenience Yields for CO2 Emission Allowance Futures Contracts”](https://doi.org/10.2139/ssrn.2894390) - [“The Relationship between Spot and Futures CO2 Emission Allowance Prices in the EU ETS”](https://doi.org/10.7551/mitpress/9780262029285.003.0008) - [“Liquidity effects and FFA returns in the international shipping derivatives market”](https://doi.org/10.1016/j.tre.2015.02.001) - [“Economic information transmissions and liquidity between shipping markets: New evidence from freight derivatives”](https://doi.org/10.1016/j.tre.2016.12.007) ## Adjacent evidence, not new queue entries - Customer/supplier propagation: Cohen and Frazzini, “Customer Momentum,” and [“Input Specificity and the Propagation of Idiosyncratic Shocks in Production Networks”](https://doi.org/10.1093/qje/qjw018). This belongs in the equity narrative/network family and requires point-in-time relationship data. - Option downside compensation: [“Downside Variance Risk Premium”](https://doi.org/10.17016/feds.2015.020), [“The VIX Premium”](https://doi.org/10.1093/rfs/hhy062), and [“Option Return Predictability”](https://doi.org/10.1093/rfs/hhab067). These refine the existing options-dispersion/tail-budget program rather than create a cosmetically separate sleeve. ## Open questions 1. Does Treasury auction concession survive after publication and after hedging the exact duration exposure of each auction bucket? 2. Can CFTC legacy and disaggregated taxonomies be mapped without a hindsight bridge, and does hedging pressure survive trend/carry residualization? 3. Is any pre-FOMC premium left after publication, spread costs, and exact timing, or is the disappearing-effect paper the final answer? 4. Can closed-end-fund NAV publication timestamps be reconstructed deeply enough to justify a single return identity? 5. Which deferred market offers executable data before it offers an attractive backtest? ## Rerun inputs - workflow requested: exhaustive deep research - collection fallback: Crossref, OpenAlex, Semantic Scholar metadata, DOI landing pages, and official regulator APIs because Firecrawl credentials were not configured - query families: Treasury auctions, dealer capacity, FOMC drift and decay, CFTC hedging pressure, commodity risk factors, closed-end-fund discounts, bond ETF dislocations, catastrophe bonds, carbon convenience yield, freight derivatives, production networks, and variance risk premia - output: this Markdown review plus governed candidate entries in `config/sleeve_discovery.json` ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-inflation-breakeven-relative-value ------------------------------------------------------------------------------ # Inflation breakeven relative value — literature and claim boundary **Short title:** Inflation breakeven relative value: literature **Author:** Arhan Canli **Reviewed:** 2026-08-22 **Research state:** source feasibility only; no market returns opened. ## Economic mechanism Breakeven inflation is the spread between comparable nominal Treasury and inflation-indexed Treasury yields. It is inflation compensation, not a clean expectation: expected inflation, inflation-risk premia, and relative TIPS liquidity all enter the observed spread. A relative-value identity can therefore be economically coherent only if it names which component it expects to mean-revert or persist and neutralizes duration, carry, index lag, seasonality, funding, and liquidity. A level spread with an attractive chart is not yet a trade. The local atlas originally named two universes—2Y/5Y and 5Y/10Y—and three horizons. Those six cells are a search space, not six free trials. Before returns, this review narrows what the held source can actually support: daily 5Y and 10Y inflation-compensation signals plus vintage CPI. It does not support a 2Y leg, inflation swaps, or executable nominal/TIPS baskets. ## Primary literature - Gürkaynak, Sack, and Wright, *The TIPS Yield Curve and Inflation Compensation*, documents the fitted real-yield curve and shows that inflation compensation is affected by time-varying inflation-risk and early-sample liquidity premia. It supplies measurement foundations, not a trading rule: https://www.federalreserve.gov/pubs/feds/2008/200805/200805pap.pdf - D'Amico, Kim, and Wei, *Tips from TIPS*, estimates an explicit TIPS-liquidity factor. Their central warning is load-bearing here: treating breakevens as expected inflation without liquidity and risk-premium controls distorts the signal materially: https://www.federalreserve.gov/pubs/feds/2010/201019/201019pap.pdf - Kim, Walsh, and Wei's 2019 update writes the decomposition directly as expected inflation plus inflation-risk premium minus TIPS-liquidity premium and shows the components move through time: https://www.federalreserve.gov/econres/notes/feds-notes/tips-from-tips-update-and-discussions-20190521.html - The Federal Reserve's public TIPS-curve page defines the matched-maturity breakeven and warns that the estimates can be delayed, revised, or changed methodologically. It records a specific 2022 historical revision, so a current download is not itself a historical-vintage archive: https://www.federalreserve.gov/data/tips-yield-curve-and-inflation-compensation.htm - FRED defines `T5YIE` and `T10YIE` as spreads built from constant-maturity nominal and inflation-indexed Treasury series. These are daily market-derived estimates, not security-level transaction prices, cashflows, bid/ask quotes, or total returns: https://fred.stlouisfed.org/series/T5YIE and https://fred.stlouisfed.org/series/T10YIE ## What follows for ALPHAC The literature forbids three flattering shortcuts. First, a breakeven-minus-realized-inflation residual cannot be labelled a pure expectation error. Second, current historical estimates cannot be labelled point-in-time merely because each row has an observation date. Third, changes in a constant-maturity estimate cannot stand in for a tradable, duration/carry-neutral basket without security-level pricing and cashflow evidence. A later return preregistration must choose one identity before opening prices, define whether it trades cash bonds, inflation swaps, futures, or an explicitly acknowledged ETF proxy, and charge every alternate universe, horizon, sign, and implementation to one family-wise trial account. It must also specify liquidity controls, 2008 stress, indexation lag, seasonality, financing, transaction costs, capacity, DSR/PBO, and the fixed-book diversification tests. No source cited here establishes edge, sign, Sharpe, drawdown, capacity, or admission. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-natural-gas-storage-weather ------------------------------------------------------------------------------ # Natural-gas storage/weather residual — literature and claim boundary **Short title:** Natural-gas storage and weather: literature **Reviewed:** 2026-08-16 **Research state:** source feasibility only; no futures prices or returns opened. ## Economic mechanism Weekly working-gas inventory changes combine weather-driven demand, production, imports/exports, and operational flows. A storage change is economically informative only relative to what was knowable before the storage week. The candidate therefore asks whether a first-release EIA storage residual—after conditioning on a frozen NOAA ensemble forecast—contains short-lived information not captured by natural-gas trend or curve carry. The forecast vintage is load-bearing. Using observed weather, a later model rerun, revised EIA history, or an analyst consensus collected after the storage week would turn the test into a different and potentially look-ahead-biased identity. ## Prior evidence and limitations - EIA's Weekly Natural Gas Storage Report is an official weekly estimate with published sampling uncertainty, revision policy, and a standard Thursday release convention with holiday exceptions. Current history is not automatically first-release history. - NOAA's public GEFS archive contains timestamped ensemble forecast runs. Model/version and file layout changed materially in September 2020, so one contemporary path cannot be projected backward. - Mu (2007), *Weather, storage, and natural gas price dynamics*, documents the joint importance of weather and inventories for natural-gas prices. It motivates conditioning but does not establish a modern executable event sleeve. DOI: https://doi.org/10.1016/j.eneco.2006.04.003 Original studies and government data do not supply ALPHAC's required first-release hashes, forecast-vintage manifest, futures rolls, bid/ask execution, limit events, capacity, untouched holdout, family-wise DSR, or portfolio-diversification evidence. ## Official sources - EIA WNGSR current report and machine-readable files: https://ir.eia.gov/ngs/ngs.html - EIA methodology: https://ir.eia.gov/ngs/methodology.html - EIA revision policy: https://ir.eia.gov/ngs/revisions.html - EIA release schedule: https://ir.eia.gov/ngs/schedule.html - NOAA GEFS archive: https://registry.opendata.aws/noaa-gefs/ - CME Henry Hub Natural Gas futures: https://www.cmegroup.com/markets/energy/natural-gas/natural-gas.html ## Family-wise trial accounting This candidate overlaps the already killed `commodity_inventory_seasonal` petroleum identity. The new weather-conditioned storage residual is a distinct configuration, not a fresh family. If returns are ever opened, the family trial count starts at **at least two**, the prior negative result remains published, and no sign flip or product substitution erases it. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-options-dispersion ------------------------------------------------------------------------------ # Options dispersion: literature and implementation boundary **Reviewed:** 2026-08-16 **Family:** `options_dispersion` **Claim state:** mechanism supported; investable return untested **Return identities spent:** zero ## What the evidence supports The defensible mechanism is a priced difference between index correlation/variance insurance and the corresponding single-stock option basket. It is not a generic claim that any difference between index and constituent implied volatilities is arbitrage. Driessen, Maenhout, and Vilkov document a materially higher average option-implied correlation than realized correlation in S&P 500 and DJ30 data and interpret the gap as a negative correlation risk premium. Their implementation combines index and constituent option-implied variances with point-in-time index weights. The study uses OptionMetrics options data, CRSP returns, historical index composition, and 30-, 60-, and 91-day standardized maturities. Missing constituent variance estimates are handled by rescaling available weights, a choice ALPHAC will report explicitly rather than inherit silently. - [Driessen, Maenhout, and Vilkov, *Option-Implied Correlations and the Price of Correlation Risk*](https://www.netspar.nl/assets/uploads/061_Driessen.pdf) - [Published Journal of Finance record](https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1540-6261.2009.01467.x) Carr and Wu establish the model-free option-strip construction used to synthesize variance-swap rates. This supports the measurement layer, not a net trading return: discrete strikes, stale or zero bids, dividends, rates, jumps, and execution all remain implementation problems. - [Carr and Wu, *Variance Risk Premiums*](https://academic.oup.com/rfs/article-abstract/22/3/1311/1581057) Buss and Vilkov show that option-implied correlations can improve forward-looking beta estimates. That is useful evidence that option cross-sections carry information, but it is adjacent evidence; it does not prove a dispersion portfolio earns an implementable premium. - [Buss and Vilkov, *Measuring Equity Risk with Option-Implied Correlations*](https://gsefm.eu/fileadmin/user_upload/dateien_schuelermarketing/mimeo_2012_Buss.pdf) Marshall directly studies dispersion trading and finds that candidate opportunities decline as transaction costs rise. The sample is only 2005–2007, so it is a warning about friction sensitivity, not adequate evidence for a modern strategy. - [Marshall, *Dispersion trading: Empirical evidence from U.S. options markets*](https://doi.org/10.1016/j.gfj.2009.06.003) ## The exchange benchmark is a measurement reference, not a backtest The Cboe S&P 500 Dispersion Index (`DSPX`) measures 30-day expected dispersion as the square root of the nonnegative difference between a float-market-cap-weighted basket of constituent expected variances and VIX squared. Its universe requires S&P 500 index options and eligible constituent options; valid constituent variances require near- and next-term strips and at least three valid out-of-the-money calls and puts in each strip. The methodology filters invalid and zero-bid quotes. This is an excellent independent accounting reference, but three boundaries matter: 1. DSPX is an indicator, not a self-financing, executable options portfolio. 2. Its published back-tested history starts in June 2014, while the live index launched in September 2023. 3. Live levels may pull a constituent variance forward from a recent valid observation, whereas the back-tested end-of-day series does not. ALPHAC may never treat a pulled-forward value as a contemporaneously tradable quote. The methodology also changes option classes for splits, special dividends, mergers, spin-offs, and delistings. Those are mandatory lineage events in our implementation. - [Official Cboe/S&P DJI Dispersion Index methodology](https://cdn.cboe.com/resources/indices/documents/methodology-the-dispersion-index.pdf) - [Official Cboe DSPX overview](https://www.cboe.com/us/indices/dispersion/) ## Data conclusion Alpaca is suitable for prospective OPRA capture and paper execution, but its official historical options coverage begins only in February 2024. That is too short to estimate a correlation-risk premium across calm, crisis, rate, volatility, and liquidity regimes. - [Alpaca historical option-data coverage](https://docs.alpaca.markets/us/docs/historical-option-data) OptionMetrics IvyDB US is the preferred research spine because it provides end-of-day bid/ask, volume, open interest, option sensitivities, rates, dividends, corporate actions, permanent IDs, and volatility surfaces from January 1996. Cboe DataShop quote intervals are the preferred execution-calibration source because they include historical NBBO and sizes from January 2012; the full one-minute market is very large and must be scoped to the frozen basket. - [OptionMetrics IvyDB US product specification](https://optionmetrics.com/data-products/) - [Cboe DataShop Option Quote Intervals](https://datashop.cboe.com/option-quote-intervals) ## ALPHAC interpretation The conventional position—long constituent variance and short index variance—is short implied correlation and can lose sharply when correlations and index downside insurance reprice together. It is therefore not presumed near-uncorrelated to AlphaMax, equity beta, or existing volatility exposure. Admission requires crisis conditional correlations and expected shortfall, not merely a low full-sample correlation. The first eligible return identity, if the no-return data audit passes, is one 30-calendar-day, monthly-rebalanced, point-in-time S&P 500 top-50 basket. Legs are ex-ante vega balanced. Every short option exposure must have frozen disaster wings; daily delta hedging, early assignment, dividends, gaps, margin, partial fills, quote size, and corporate actions are charged explicitly. Seven-day, 60-day, sector-basket, reverse-direction, and threshold variants remain in the same family trial account and cannot be presented as independent discoveries. ## Contrarian conclusion This family is economically credible but operationally hostile. Its many legs create a large gap between a clean implied-correlation chart and an executable portfolio. If institutional history, point-in-time membership, quote-size calibration, or defined-loss replication cannot be sealed, the correct result is `DATA_GATED` or `KILL_FEASIBILITY`, not a midpoint backtest. ## Rerun inputs - workflow requested: `firecrawl-research-papers` - collection result: Firecrawl unavailable because `FIRECRAWL_API_KEY` was not configured - fallback: original papers, publisher records, official Cboe methodology, and official vendor docs - return data opened: no - return hypotheses spent: zero ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-repurchase-issuance-flow ------------------------------------------------------------------------------ # Repurchase and issuance flow: literature dossier **Reviewed:** 2026-08-16 **Research state:** source reviewed; returns unopened **Decision:** advance only to a key-free SEC data-feasibility audit inside the already-tested `corporate_equity_supply` family; this cannot count as a new independent sleeve ## Abstract The literature supports a real economic family around corporate equity supply. Net share issuance has predicted lower subsequent cross-sectional returns, while repurchase research finds that announcements are optional rather than commitments and that actual repurchases contain different information from authorizations. That distinction is central to this candidate: ALPHAC will not trade press-release authorizations. The proposed identity uses only completed repurchases and completed issuance known from accepted filings, then neutralizes size, value, profitability, investment, momentum, sector, and broad issuance exposure. The evidence does not establish a deployable edge. Several studies show that issuance-related returns share exposures with broader investment and mispricing factors, many published anomalies fail modern replication hurdles, and trading costs reduce anomaly profitability. The correct next step is therefore a no-return audit of SEC filing-time coverage, taxonomy stability, amendment handling, and Item 703 extraction. Return testing remains prohibited until that audit passes and a single family-wise identity is preregistered. ## Key papers and official sources 1. [Pontiff and Woodgate, “Shares Outstanding and Cross-Sectional Returns”](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=679143) reports that post-1970 changes in shares outstanding predict the cross-section of US returns. This motivates equity-supply measurement, but the paper's broad share-count measure can mix repurchases, issuance, stock compensation, splits, and acquisitions. 2. [McLean, Pontiff, and Watanabe, “Share Issuance and Cross-Sectional Returns: International Evidence”](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1008312) finds issuance predictability across 41 countries and reports that non-US evidence is driven more by weak returns after issuance than strong returns after repurchases. This argues against assuming symmetric long and short legs. 3. [Grullon and Michaely, “The Information Content of Share Repurchase Programs”](https://onlinelibrary.wiley.com/doi/10.1111/j.1540-6261.2004.00645.x) finds no post-announcement operating-performance increase, but documents lower systematic risk and cost of capital. A repurchase signal may therefore proxy for changing risk rather than mispricing. 4. [Oded, “Why Do Firms Announce Open-Market Repurchase Programs?”](https://academic.oup.com/rfs/article-pdf/18/1/271/24421535/hhh004.pdf) emphasizes that an authorization is not a commitment and some announced programs execute no purchases. This is why the candidate is based on completed activity. 5. [Busch and Obernberger, “Actual Share Repurchases, Price Efficiency, and the Information Content of Stock Prices”](https://academic.oup.com/rfs/article-abstract/30/1/324/2669974) studies manually collected actual repurchases and reports improved price efficiency and lower idiosyncratic risk, especially in down markets. It supports separating actual execution from authorization while warning that market-state interactions matter. 6. [Stambaugh and Yuan, “Mispricing Factors”](https://academic.oup.com/rfs/article/30/4/1270/2965095) shows that net stock issues and composite equity issues can be absorbed by broader correlated anomaly clusters. ALPHAC must residualize and test incremental book contribution. 7. [Novy-Marx and Velikov, “A Taxonomy of Anomalies and Their Trading Costs”](https://academic.oup.com/rfs/article-abstract/29/1/104/1844518) shows that costs reduce anomaly profitability and that buy/hold spreads can reduce turnover. The eventual protocol must include asymmetric entry/hold bands and realistic short-side costs. 8. [Hou, Xue, and Zhang, “Replicating Anomalies”](https://academic.oup.com/rfs/article/33/5/2019/5236964) reports broad replication failure under value weighting, microcap controls, and multiple-test hurdles. This supports NYSE-style breakpoints, liquidity floors, family-wise trial accounting, and publication of a null. 9. [SEC EDGAR APIs](https://www.sec.gov/search-filings/edgar-application-programming-interfaces) documents key-free submissions and Company Facts APIs, accession and filing metadata, and the nightly bulk archives. Company Facts is usable only with filing-time and accession lineage; ex-post frames are not a point-in-time backtest by themselves. 10. [SEC Item 703 pre-amendment text](https://www.sec.gov/files/corpfin/pre-amendment-item-703.pdf) requires monthly issuer-purchase tables in periodic reports, including actual shares purchased, average price, plan purchases, and remaining authorization. The SEC's later daily-data rule was [vacated in December 2023](https://www.sec.gov/newsroom/whats-new/further-announcement-regarding-share-repurchase-disclosure-modernization-rule), so the feasibility audit cannot assume the vacated disclosure format exists. ## Consensus and contradictions - Corporate equity supply is economically motivated, but the long repurchase and short issuance legs need not be mirror images. - Completed repurchases are a cleaner identity than authorizations, but reporting is delayed and heterogeneous. - Much of the apparent return spread may be shared with investment, profitability, value, momentum, and broad mispricing factors. - Small and illiquid stocks can dominate published anomalies; executable value-weighted evidence is the relevant standard. - Filing amendments, cumulative year-to-date XBRL contexts, custom tags, stock compensation, splits, mergers, and tender offers can all create false flow unless explicitly reconciled. ## Open questions 1. What fraction of issuer quarters exposes completed repurchases through stable standard tags? 2. Can Item 703 tables be extracted with high precision without future filings repairing earlier history? 3. Can completed issuance be distinguished from stock compensation, acquisitions, splits, and other non-cash share changes? 4. Does any eventual residual survive post-publication years, costs, borrow, delistings, and correlation to AlphaMax? 5. Is the economically defensible identity long net repurchasers and short issuers, or only the issuance leg? The feasibility audit cannot answer this and must not select a sign. ## Rerun inputs ```text workflow: firecrawl-research-papers (primary-source fallback; API key unavailable) topic: completed corporate repurchases versus issuance as a cross-sectional return source target_count: 10 output: markdown literature dossier and no-return feasibility decision ``` ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-spin-off-dislocation ------------------------------------------------------------------------------ # Spin-off dislocation — literature and claim boundary **Reviewed:** 2026-08-16 **Research state:** source review only; no market returns opened. ## Economic hypothesis A completed corporate separation can create temporary price pressure and information frictions. The distributed child may be too small, outside an investor mandate, absent from an index, or hard to value as a standalone company; the parent may simultaneously become a different exposure. The candidate is therefore a residualized, implementation-aware parent/child event family—not a claim that every announced separation earns an abnormal return. The mechanism must be separated from size, value, momentum, post-earnings drift, index deletion, completed repurchase/issuance, and generic event risk. Any future return identity must use terms known at SEC acceptance time and must retain cancellations, delayed distributions, when-issued trading failures, missing opens, halts, fractional-share cash, basis allocation, and delistings. ## Prior evidence and limitations - Cusatis, Miles, and Woolridge (1993), *Restructuring through spinoffs*, reports long-horizon abnormal performance for parents and children in an older US sample. The age of the sample, benchmark sensitivity, and long-horizon inference make it a prior—not a usable expected return. DOI: https://doi.org/10.1016/0304-405X(93)90009-Z - Desai and Jain (1999), *Firm performance and focus*, links post-spin performance to changes in corporate focus. That is an economic conditioning story, but focus labels are ex-post unless reconstructed from contemporaneous segment disclosures. DOI: https://doi.org/10.1016/S0304-405X(99)00032-X - Veld and Veld-Merkoulova (2004), *Do spin-offs really create value? The European case*, provides an out-of-US comparison and underscores that institutional setting and sample construction matter. DOI: https://doi.org/10.1016/S0378-4266(03)00157-9 These studies do not establish a modern executable sleeve. They generally do not model current opening-auction impact, when-issued liquidity, borrow, fractional distributions, tax basis, corporate-action revisions, or an untouched post-publication holdout at ALPHAC standards. ## Official-source boundary The SEC Form 10 registration statement is the initial discovery spine for exchange-registered children. Official quarterly EDGAR full indexes provide an append-only, issuer-independent list of `10-12B` and `10-12B/A` filings; individual filing indexes later provide acceptance timestamps and document lineage. Form 10 is not synonymous with a spin-off, so registration rows are candidates only. IPO-like registrations, reorganizations without a pro-rata distribution, and filings without a parent/child separation must be rejected by a separately frozen document audit. - SEC Form 10: https://www.sec.gov/files/form10.pdf - SEC EDGAR filing APIs and archives: https://www.sec.gov/search-filings/edgar-application-programming-interfaces ## Research implication Historical positive-return claims are not copied into ALPHAC. The first admissible work is source lineage, followed by blind document-schema accuracy, then a separately preregistered return test. Failure at any stage is published; parameter changes cannot rescue the same trial. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/literature-stablecoin-dislocation ------------------------------------------------------------------------------ # Stablecoin par dislocations: literature and implementation boundary **Short title:** Stablecoin par dislocations: literature **Reviewed:** 2026-08-16 **Family:** `stablecoin_dislocation` **Claim state:** economic mechanism supported; investable return untested **Return identities spent:** zero ## Abstract Fiat-backed stablecoins have a two-tier market. A limited set of eligible institutions can transact with the issuer near par, while everyone else trades in secondary markets. That segmentation can create temporary discounts, but the discount is not a free mean-reversion signal: it prices direct redemption access, reserve uncertainty, banking hours, transfer latency, compliance controls, chain risk, and exchange credit and liquidity. The only identity worth a later ALPHAC preregistration is secondary-to-primary USDC redemption by an entity that has already proven its legal and operational ability to redeem. A candle-based rule that buys any token below one dollar is rejected. Algorithmic, crypto-collateralized, bridged, and wrapped tokens are separate mechanisms and cannot be pooled into this family. ## Key evidence Ma, Zeng, and Zhang model stablecoins as a two-layer market and document that primary-market access is concentrated. More efficient arbitrage tightens secondary prices but can accelerate redemptions and reserve liquidation during a run. Their six-stablecoin evidence supports a limits-to-arbitrage mechanism; it does not establish a tradeable premium for an investor without issuer access. - [Ma, Zeng, and Zhang, *Stablecoin Runs and the Centralization of Arbitrage* (working paper)](https://bfi.uchicago.edu/wp-content/uploads/2025/06/BFI_WP_2025-76.pdf) - [NBER working-paper record](https://www.nber.org/papers/w33882) The Federal Reserve's granular study of the March 2023 USDC event identifies the failure of Silicon Valley Bank and interruption of primary-market conversion over the weekend as contributors to the secondary-market depeg. This is decisive implementation evidence: the option to redeem is state-dependent exactly when a historical midpoint backtest would value it most. - [Federal Reserve, *In the Shadow of Bank Runs: Lessons from the Silicon Valley Bank Failure and Its Impact on Stablecoins*](https://www.federalreserve.gov/econres/notes/feds-notes/in-the-shadow-of-bank-run-lessons-from-the-silicon-valley-bank-failure-and-its-impact-on-stablecoins-20251217.html) Circle's current terms separate institutional Circle Mint customers from ordinary holders. Direct redemption requires an eligible account in good standing and remains subject to law, compliance, blocklisting, fees where applicable, and operational interruption or delay. Circle Mint is not a bank account and balances are not government-insured. Terms observed today cannot be applied backward; every historical test needs the version effective at each decision time. - [Circle USDC terms](https://www.circle.com/legal/usdc-terms) - [Circle Mint product and eligibility boundary](https://www.circle.com/circle-mint) Tether's terms independently confirm that a nominal one-dollar redemption promise is conditional: direct issue or redemption requires verified-customer status, pays par less applicable fees, and is subject to issuer requirements. This supports the general segmentation mechanism, but USDT is not silently substituted into the frozen USDC identity. - [Tether legal terms](https://tether.to/en/legal/) - [Tether relevant-information document](https://tether.to/public/Relevant_Information_Document_-_Tether_International%2C_S.A._de_C.V..pdf) ## Data evidence and its limits Binance publishes checksum-addressed spot trades, aggregate trades, and candles. Coinbase exposes historical candles but warns that intervals without ticks are absent and historical data can be incomplete. These sources can audit timestamps, pair availability, coarse deviations, and missing periods. They cannot reconstruct historical queue position, withdrawals, fiat conversion state, account eligibility, or executable depth during a run. - [Binance public-data specification](https://github.com/binance/binance-public-data/blob/master/README.md) - [Coinbase Exchange historical-candle documentation](https://docs.cdp.coinbase.com/api-reference/exchange-api/rest-api/products/get-product-candles) Institutional tick trades and order-book snapshots are available from vendors such as Kaiko and Coin Metrics. A vendor feed still needs independent venue-status, symbol, fee-tier, and revision lineage; breadth alone does not prove execution. - [Kaiko data dictionary](https://docs.kaiko.com/explore-our-data/data-dictionary) - [Coin Metrics API documentation](https://docs.coinmetrics.io/api/v4/) ## Consensus and disagreement The sources agree on three points: secondary prices can deviate from par; direct issuer access is restricted; and arbitrage capacity weakens or changes during stress. Research disagrees less about the existence of deviations than about whether transparency, reserve design, and arbitrage access improve price stability at the cost of run fragility. That debate reinforces the need to model the issuer and redemption state, not just lagged price. ## ALPHAC interpretation The candidate is not presumed independent of the existing crypto funding sleeve. During ordinary periods it may resemble low-volatility cash management; during crises it can become concentrated exposure to crypto venues, banking partners, issuer reserves, and 24/7 liquidity. Full-sample linear correlation is therefore uninformative. Any later test must report correlations and expected shortfall conditional on crypto drawdowns, banking stress, exchange outages, weekends, and named depeg windows. The evidence presently supports `DATA_GATED`. It does not support a sign, entry threshold, holding period, Sharpe ratio, or admission claim. The family remains outside the active return queue and spends zero return hypotheses. ## Open questions 1. Can Canli Capital obtain and continuously maintain direct Circle Mint redemption eligibility in its legal jurisdiction and operating entity? 2. Can historical effective-dated terms, fee schedules, bank cutoffs, chain support, and conversion interruptions be reconstructed without hindsight? 3. Can synchronized multi-venue books and venue-status events cover every mandatory stress window? 4. Does a defined-loss or prefunded construction survive issuer, venue, banking, and chain failure, or is the apparent edge inseparable from unbounded principal risk? ## Rerun inputs - workflow requested: `firecrawl-research-papers` - collection result: Firecrawl unavailable because `FIRECRAWL_API_KEY` was not configured - fallback: working papers, official regulator research, issuer terms, and official data docs - inaccessible or excluded: no paywalled paper is used as sole support for a major claim - return data opened: no - return hypotheses spent: zero ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/luck-equivalent-trials ------------------------------------------------------------------------------ # Luck-equivalent trials: how many skill-less strategies it takes to reach a Sharpe by luck **Short title:** Luck-equivalent trials **Author:** Arhan Canli **Declared:** 2026-09-26, with its calibration study published beside it. A backtest's Sharpe ratio means little until you know how many strategies were tried to find it. Luck-equivalent trials answers the reviewer's question in the unit a research log records: how many independent, skill-less strategies would a search have had to try for its best to reach this Sharpe by luck alone? ## The statistic Under the null of no skill and normal returns, a Sharpe ratio's t-statistic (the per-period Sharpe times the square root of the number of observations) follows a Student t distribution with one fewer degree of freedom than there are observations. One skill-less trial therefore reaches the observed Sharpe with a known probability p. The best of N independent skill-less trials reaches it with probability 1 - (1 - p)^N, so the N at which that probability equals a chosen level q is ln(1 - q) / ln(1 - p). The statistic reports that N at even odds and at the five percent level, the N whose expected best (the deflated Sharpe ratio's benchmark) matches the observation, and, given a trial count, the chance that the best of that many reached the Sharpe by luck. Each piece is a known result. What is new is the statistic, stated in trials, with its calibration measured and its failure cases published. ## Calibration Rejection rate at the 5.0% level when every strategy is skill-less, from [`/glassbox/research/luck-trials-size-study.json`](/glassbox/research/luck-trials-size-study.json) (searches of 20 strategies over 252 periods, 1000 searches per cell, fixed seeds). A calibrated statistic rejects at the level. | Returns | Student t null (shipped) | Non-normal standard error (deflated Sharpe convention) | Bootstrap of the best trial's returns | |---|---|---|---| | normal | 0.035 | 0.036 | 0.038 | | Fat tails (Student t) | 0.043 | 0.060 | 0.060 | | skew plus 1 3 | 0.018 | 0.057 | 0.041 | | skew minus 1 3 | 0.108 | 0.049 | 0.064 | | skew plus 3 7 | 0.004 | 0.088 | 0.046 | | skew minus 3 7 | 0.208 | 0.068 | 0.091 | No method is calibrated for every return shape. The Student t null holds for normal and fat-tailed returns but is too generous to negatively skewed strategies; the non-normal standard error fixes negative skew and fails under fat tails; a bootstrap of the best trial's returns is closest overall but inherits the selection that made that trial the best. ## Autocorrelation On the Null Zoo ([`/research/null-zoo-v0`](/research/null-zoo-v0)), autocorrelated returns make a skill-less search look skilled: at the same level the statistic rejected 0.200 of searches. Correcting the Sharpe for the returns' own autocorrelation as Lo (2002) does brings it to 0.059, and costs nothing where there is no autocorrelation (0.059 before, 0.061 after). The API and the MCP tool accept the autocorrelation. ## Use it `POST /api/v1/validate/luck-trials` with a free key, or the `validate_luck_trials` tool in the `canli-validation-mcp` server on npm. Every result is stored as a signed receipt. ## Evidence boundary The statistic counts independent trials; correlated trials count as fewer, and the caller must estimate how many. It assumes no skill under the null and says nothing about whether a strategy will make money. Its calibration is measured on the return shapes above and no others. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/macro-economic-trend-lineage ------------------------------------------------------------------------------ # Point-in-time macroeconomic trend: seven identities without a validated sleeve **Short title:** Point-in-time macro trend: complete trial lineage **Author:** Arhan Canli, Founder and Quantitative Researcher, Canli Capital **Family key:** `macro_economic_trend` · **System:** ALPHAC / AlphaForge **Status:** public research record; not peer reviewed; not an investment solicitation **Evidence date:** 2026-08-24 ## Abstract ALPHAC evaluates seven immutable identities spanning an economic-trend engine, CPI-surprise sizing, and point-in-time macro-vintage variants. Persisted historical summaries range from -0.2981 to +0.3403, but the +0.3403 value is withdrawn because its active-day calendar omitted zero-exposure sessions. The calendar-corrected result is +0.2298 with Newey-West t 1.267 and a `KILLED` verdict. The withdrawn row remains in the lineage as a superseded measurement. The economic premise is that slowly updating growth and inflation information may forecast liquid cross-asset returns. Revised releases create a direct look-ahead hazard, so only vintages available at each decision are admissible. The seven identities share macro information and constitute one research family, not seven independent sleeves; they may also overlap managed-futures trend. Current evidence is summary-level rather than a complete curve, DSR, capacity, drawdown, and crisis correlation packet. The decision is therefore **zero validated sleeves**. A related AlphaVintage Alpaca paper experiment does not reverse that research decision and is neither funded nor independently attested. Future admission requires one frozen vintage-safe configuration, current-union deflation, full risk and capacity evidence, and forward execution. ## Finding and trial accounting Seven immutable identities cover the economic-trend engine, CPI-surprise sizing, and five point-in-time macro-vintage variants. Their persisted historical summaries range from -0.2981 to +0.3403, but +0.3403 is withdrawn: it came from an active-day calendar that omitted zero-exposure sessions. The calendar-corrected re-run measures +0.2298 with Newey-West t 1.267 and verdict `KILLED`; four historical rows are positive and three negative. Observation counts range from 5,165 to 6,157. The immutable row remains in the trial lineage as a superseded measurement, not as evidence for a sleeve. The hypothesis is that slowly updating growth and inflation information forecasts liquid cross-asset returns. Macro momentum and trend evidence provides a prior, but revised economic data creates a special look-ahead hazard; only vintages available at each decision are admissible. Economic trend, CPI surprise, and vintage variants share macro information and form one family, not seven independent sleeves. They may overlap managed-futures trend through the same growth and inflation regimes. ## Boundary and decision A related point-in-time family artifact is hash-bound, but the seven identity rows currently have summary-level evidence rather than complete curve/DSR/capacity packets. **Decision: NOT RESEARCH-ADMITTED / zero validated sleeves.** AlphaVintage nevertheless entered a dedicated Alpaca **paper** account on 2026-08-10 before its 2026-08-16 corrected `KILLED` verdict. That paper-only forward experiment does not reverse the research decision and is not funded or independently attested. The chronology, corrected curve, portfolio diagnostics, and governance failure are reported in the standalone [`AlphaVintage paper`](/research/alphavintage-macro-surprise-lineage.md). A future research admission requires one frozen vintage-safe configuration, current-union deflation, drawdown, capacity, crisis correlation, and forward execution. Exact identities and source hashes are public in [`macro_economic_trend_family.json`](/glassbox/macro_economic_trend_family.json), with the union in [`trial_packet_manifest.json`](/glassbox/trial_packet_manifest.json). Research and implementation were authored and directed by **Arhan Canli**; no future return is promised. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/market-status-replay ------------------------------------------------------------------------------ # Point-in-time market-status and outage replay AlphaForge can now replay explicit venue and instrument market-status intervals inside the event-driven backtester. This is engineering evidence, not historical outage coverage or return evidence. No market returns were opened and no hypothesis was spent. ## Enforced behavior - Enabling status replay triggers a pre-run proof of explicit point-in-time coverage for every instrument and every millisecond in the complete backtest interval, before bars are read. - Instrument-specific status overrides venue-wide status. - Future-known records and overlapping intervals within one scope fail closed. - `HALTED`, `OUTAGE`, and `AUCTION_ONLY` block execution even if an OHLCV bar exists. - `CLOSE_ONLY` blocks risk increases while permitting reduce-only orders, including recall covers. - Blocks are labeled and counted; no synthetic fill is substituted. - With no status provider, the existing compatibility path and golden master are unchanged. ## Reviewed ingestion and source lineage The ingestion boundary accepts strict normalized manifests only when the supplied raw source bytes match the declared SHA-256 digest. It records source publication, event observation, historical availability, local capture, and review as separate timestamps rather than collapsing them into a single misleading date. Unknown fields, impossible timestamp order, digest mismatch, duplicate or relabeled source identities, non-HTTPS URLs, and future-known use fail closed. A source row remains visible with one reviewer but cannot qualify for replay. Exact reconciliation requires dual-reviewed official-exchange and vendor observations with distinct source identities and bytes. Status, venue/instrument scope, and the complete effective interval must agree. The reconciled event uses the later observation and availability timestamps, preserving the more conservative point-in-time boundary. ## Coverage preflight Before a run relies on status replay, the coverage auditor requires explicit half-open intervals for each canonical instrument. It accepts reconciled events only and sweeps every effective and availability boundary. Instrument-specific status retains precedence over venue-wide status. If a specific event was effective but not yet available, that interval is labeled `status_not_yet_available`; the auditor does not fall back to a venue-wide OPEN event. If no event is effective, the interval is labeled `no_effective_status`. Source silence never means OPEN. Covered segments retain the reconciliation content hash and both source keys. Missing and covered durations must sum exactly to required milliseconds, and the complete audit is deterministically content-hashed. This proves completeness only for the explicit requirements and reconciliations in that artifact; it is not evidence that a broad historical corpus exists. The source-reconciled provider refuses construction when its declared corpus has gaps and reruns the audit against the exact instruments and `[start, end)` requested by the engine. A run outside the reviewed evidence fails before data loading or strategy execution. Passing reviewed runs retain the deterministic coverage-audit hash in their configuration; synthetic providers must still prove complete intervals but cannot claim source-reviewed lineage. ## Deliberate boundary The platform does not bundle a content-verified historical status corpus, production exchange or vendor adapter, automated source capture, or empirical broad-market coverage evidence. It also does not model auction price formation or queue position, preserve resting orders across outages, route across venues, or poll and reconcile live exchange status. Reviewed ingestion, coverage preflight, and explicit replay prevent impossible fills only when qualified coverage is supplied; they do not prove that broad coverage exists. The machine-readable contract is available at [`/glassbox/market_status_contract.json`](/glassbox/market_status_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/merger-announcement-identity-v2 ------------------------------------------------------------------------------ # Merger arbitrage v2: point-in-time announcement identity **Prepared:** 2026-08-26 **Stage:** prospective no-price, no-return identity redesign **Family trial account:** `merger_arbitrage` **Technical authorship approval:** not yet recorded **Return execution authorized:** no ## Why this is a new identity The original metadata protocol required one preceding Item 1.01 8-K inside 60 days for at least 80% of all target-side deal anchors. It failed at 67.02%. The failure was not homogeneous: `SC 14D9` tender-offer anchors reached 86.65%, while `DEFM14A` merger-proxy anchors reached 61.33%. The aggregate gate blended populations with different filing paths and therefore described neither one cleanly. That result remains failed. This protocol does not widen its window, reinterpret its gate, or reuse the tender stratum as if it were prospective evidence. It defines a materially new identity, keeps both strata, and reserves 2006–2015 as a disjoint confirmation period. The 2016–2025 result may explain the redesign but may not validate it. ## Mechanism and claim boundary The candidate is the contractual spread on an announced all-cash acquisition of a US-listed public target. Entry cannot precede a source-bound SEC acceptance timestamp that identifies the same target, counterparty, cash consideration, and binding merger agreement or commenced tender offer. Rumours, press timestamps reconstructed from later documents, stock consideration, collars, CVRs, appraisal trades, hostile proposals, and transactions without a deterministic announcement record are outside this identity. This protocol contains no prices, returns, break losses, Sharpe ratios, drawdowns, correlations, capacity estimates, or sleeve-admission evidence. It spends zero return hypotheses. ## Frozen strata Discovery begins from unamended target-side filings and never treats the discovery filing as the historical entry time: 1. `DEFM14A` merger-proxy anchors; 2. `SC 14D9` target recommendation anchors. Every acquisition, extraction, coverage, and accuracy statistic is reported separately by stratum. Both strata must pass. An aggregate result cannot rescue a failed stratum, and no row may be moved between strata after its documents are read. ## Announcement resolver For each anchor, search at most 365 calendar days backward using only filings accepted no later than the anchor. The broad search interval locates source documents; it is not a trading window and does not authorize backdating. Eligible source classes are: - target 8-K Item 1.01, 7.01, or 8.01 filings and their merger-agreement or press-release exhibits; - target `PREM14A` or `DEFA14A` filings carrying the agreement parties and cash terms; and - bidder `SC TO-T` filings linked to the target through the filing header's subject-company CIK. A document qualifies only when the point-in-time text resolves the target CIK, one named counterparty, one cash consideration, and binding-agreement or commenced-offer language. The resolver selects the earliest SEC acceptance timestamp among qualifying documents. A later filing may confirm an earlier filing's meaning but may not move the timestamp backward. Conflicting counterparties, consideration values, transaction types, or subject-company links produce `UNRESOLVED_CONFLICT`, not a discretionary choice. The required resolver states are: - `RESOLVED_CASH_MERGER`; - `RESOLVED_CASH_TENDER`; - `UNRESOLVED_NO_QUALIFYING_SOURCE`; - `UNRESOLVED_CONFLICT`; - `OUT_OF_SCOPE_NON_CASH_OR_COMPLEX_CONSIDERATION`. ## Disjoint confirmation corpus The confirmation interval is 2006-01-01 through 2015-12-31, disjoint from the 2016–2025 exploratory result. No confirmation filing, document, machine prediction, or human label has been opened for this design. After Arhan's technical approval, acquire official SEC metadata in deterministic order. Within each `(year, stratum)` cell, rank anchors by `sha256("alphac-merger-announcement-confirmation-v2|" + year + "|" + stratum + "|" + accession)` and retain the first 20 eligible anchors. The target is 200 anchors per stratum and 400 total. Fewer than 20 eligible anchors in any cell produces `DATA_GATED_NO_CROSS_CELL_SUBSTITUTION`. Selection uses no document text, machine prediction, human label, price, return, or realized deal outcome. All accessions from the 2016–2025 exploratory corpus are excluded even though the periods are already disjoint. ## Independent review gates An independent reviewer, blind to machine outputs and all prices and returns, labels every selected anchor from the frozen source packet. AI or automated labeling assistance is prohibited. Raw confusion counts and unresolved cases are published. Each stratum independently requires: 1. point announcement coverage of at least 0.80 and a one-sided 95% exact lower bound of at least 0.75; 2. same-transaction linkage accuracy with a one-sided 95% exact lower bound of at least 0.95; 3. exact SEC acceptance-timestamp agreement with a one-sided 95% exact lower bound of at least 0.90; 4. later Item 2.01 or 1.02 outcome-marker coverage of at least 0.70 and a one-sided 95% exact lower bound of at least 0.65; and 5. complete CIK, accession, form, acceptance timestamp, primary-document, archive-URL, and SHA-256 lineage for every selected row. Coverage denominators include unresolved rows. Accuracy denominators include every machine-resolved row; a small denominator cannot pass by omission. Underpowered denominators remain data-gated. These thresholds do not prove alpha. They establish only that the event clock and transaction identity can be reconstructed without hindsight at the declared error rate. ## Fail-closed sequence 1. This technical draft must pass its structural audit. 2. Arhan independently reviews and either approves the exact design or records required changes. 3. Only an approved hash may activate metadata and document acquisition for the disjoint corpus. 4. The frozen corpus must pass both strata and the independent-review gates. 5. Only then may a separate return preregistration bind instruments, sizing, financing, borrow, dividends, delisting treatment, costs, halts, breaks, amendments, capacity, stress tests, and the complete admission contract. No automation may supply Arhan's approval, acquire the corpus before approval, open market data, or interpret a technical pass as a sleeve admission. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/natural-gas-storage-weather-feasibility ------------------------------------------------------------------------------ # Natural-gas storage/weather residual — no-return source-feasibility protocol **Short title:** Natural-gas storage and weather: feasibility **Declared:** 2026-08-16 before downloading historical WNGSR snapshots, enumerating the full NOAA weekly key set, or requesting CME market records. **Prices and returns are forbidden.** ## Identity and overlap boundary - Candidate family account: `commodity_inventory_weather`. - Prior family trial: killed petroleum inventory scarcity; one return hypothesis already spent. - Prospective identity: EIA Lower-48 first-release weekly net change residualized to a NOAA GEFS 00Z forecast initialized on the Saturday beginning the storage week. - The source-feasibility stage spends zero additional return hypotheses. - A later return trial, if authorized, is family configuration two and must use the full union experiment count. It does not qualify as a fresh independent family by relabeling the commodity. ## Frozen period and sources - Period: storage weeks ending 2017-01-06 through 2025-12-31. NOAA's public GEFS archive does not cover the analogous 2016 initializations. - EIA denominator: official `ngshistory.xls` weekly dates, used only to enumerate expected reports. - First-release evidence: Internet Archive captures of EIA's `wngsr.csv`. A capture must contain its own `Released:` date/time and week-ending date and must precede the next report's release. Current/revised history cannot fill an absent first-release snapshot. - Weather evidence: exact NOAA GEFS object metadata for the control run at forecast hour 24 and the final perturbation member at hour 168. Pre-v12 uses the 20-member legacy path; post-upgrade uses the 30-member 0.5-degree path. These endpoint probes test both horizon and ensemble availability without downloading meteorological payloads. - Futures evidence: Databento `GLBX.MDP3` metadata only for CME coverage and schemas. No records, prices, settlements, spreads, or returns may be requested. ## Locked gates All are required for `PASS_TO_RETURN_PREREGISTRATION`: 1. At least 450 expected weekly EIA periods in 2017–2025 with no duplicate week endings. 2. At least 90% of expected periods have a hash-bound first-release `wngsr.csv` capture before the next report. Values must parse as Lower-48 stocks/net change, but no price join is allowed. 3. At least 95% of expected period-start initializations have both frozen GEFS endpoint objects, with byte size and ETag retained. 4. CME metadata covers the full period and exposes daily bars plus order-book or top-of-book schema for later execution calibration. 5. No market records or returns are opened and no new return hypothesis is spent. Failure is `DATA_GATED`; thresholds, archive windows, weather initialization, and file endpoints are not revised after aggregate coverage is observed. A source pass would still require a separate machine-readable return preregistration locking forecast-field extraction, model training, preholdout/holdout dates, NG contract rolls, calendar spreads, release latency, bid/ask, slippage, limit moves, partial fills, capacity, DSR/PBO treatment, perturbations, and book-level gates. ## Locked result The audit enumerated 469 official weekly periods and hash-bound all source workbooks. The frozen Wayback route recovered 93 valid WNGSR snapshots representing only 84 unique first-release weeks, or 17.91% coverage versus the locked 90% gate. That gate fails. The other infrastructure passed: - 938 NOAA endpoint probes bound both hour-24 control and hour-168 final-member objects for 468 of 469 weeks (99.79%); only the 2016-12-31 initialization preceding the formal period was absent. - Databento `GLBX.MDP3` metadata begins in 2010 and exposes daily, MBP-1, TBBO, BBO, trades, status, and definition schemas. Zero market records were requested. - EIA's official `revisions.xls` `original_data` sheet independently covers all 469 weeks. It differs from current history in 53 rows, proving why revised history is not an acceptable silent substitute. This file was not the preregistered first-release source, so it cannot rescue the failed Wayback identity. **Decision:** `DATA_GATED`. A new source protocol may use EIA's official `original_data` sheet and must separately bind conservative historical availability/release timing before returns. The prior petroleum trial remains in the family count; no new return hypothesis was spent here. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/null-zoo-v0 ------------------------------------------------------------------------------ # Null Zoo v0: backtest-overfitting corrections scored on ground truth **Short title:** Null Zoo v0 **Author:** Arhan Canli **Declared:** 2026-09-26, with every cell's seed in the published results. Every correction for backtest overfitting makes a promise: that a skill-less strategy will pass it no more often than its stated level. The Null Zoo tests the promise. It draws research searches in which the truth is known, from return families with different shapes, and counts how often each correction calls a skill-less search's best strategy skilled (its size) and how often it finds a strategy that does have skill (its power). ## Design Each search tries 20 strategies over 504 daily observations; every strategy has a true Sharpe of zero, except in the power arm, where one has a true annualized Sharpe of 2. Each cell runs 2000 searches with its own fixed seed. The level is 5.0%. Results: [`/glassbox/research/null-zoo-v0.json`](/glassbox/research/null-zoo-v0.json); generators and checks: `scripts/research/null-zoo/` in the open repository. ## Size: how often a skill-less search is called skilled | Returns | Luck-equivalent trials | Luck-equivalent trials, Lo-corrected | Luck trials, non-normal SE | Haircut Sharpe (Bonferroni) | Haircut Sharpe (Bonferroni, Lo-corrected) | Deflated Sharpe ratio at 0.95 | Bootstrap of the best trial | |---|---|---|---|---|---|---|---| | Independent normal returns | 0.059 | 0.061 | 0.059 | 0.028 | 0.036 | 0.000 | 0.048 | | Fat tails (Student t) | 0.053 | 0.054 | 0.072 | 0.028 | 0.028 | 0.001 | 0.060 | | Negative skew | 0.088 | 0.088 | 0.051 | 0.054 | 0.056 | 0.001 | 0.053 | | Positive skew | 0.036 | 0.037 | 0.070 | 0.014 | 0.017 | 0.001 | 0.058 | | Volatility clustering (GARCH) | 0.046 | 0.050 | 0.048 | 0.024 | 0.026 | 0.000 | 0.048 | | Autocorrelated returns (AR(1)) | 0.200 | 0.059 | 0.201 | 0.132 | 0.027 | 0.002 | 0.171 | | Two volatility regimes | 0.051 | 0.051 | 0.056 | 0.025 | 0.024 | 0.000 | 0.051 | | Correlated trials (one common factor) | 0.035 | 0.035 | 0.034 | 0.017 | 0.019 | 0.013 | 0.032 | ## Power: how often a strategy with skill is found | Returns | Luck-equivalent trials | Luck-equivalent trials, Lo-corrected | Luck trials, non-normal SE | Haircut Sharpe (Bonferroni) | Haircut Sharpe (Bonferroni, Lo-corrected) | Deflated Sharpe ratio at 0.95 | Bootstrap of the best trial | |---|---|---|---|---|---|---|---| | Independent normal returns | 0.533 | 0.529 | 0.528 | 0.430 | 0.428 | 0.090 | 0.471 | | Fat tails (Student t) | 0.515 | 0.514 | 0.515 | 0.420 | 0.424 | 0.107 | 0.469 | | Negative skew | 0.556 | 0.564 | 0.451 | 0.461 | 0.466 | 0.079 | 0.423 | | Positive skew | 0.549 | 0.545 | 0.649 | 0.450 | 0.453 | 0.121 | 0.544 | | Volatility clustering (GARCH) | 0.544 | 0.546 | 0.544 | 0.444 | 0.445 | 0.104 | 0.476 | | Autocorrelated returns (AR(1)) | 0.603 | 0.358 | 0.604 | 0.508 | 0.268 | 0.071 | 0.544 | | Two volatility regimes | 0.539 | 0.537 | 0.540 | 0.451 | 0.450 | 0.121 | 0.488 | | Correlated trials (one common factor) | 0.501 | 0.502 | 0.498 | 0.403 | 0.405 | 0.225 | 0.442 | ## What it shows - Autocorrelated returns break every best-of-N test that ignores them: luck-equivalent trials rejected 0.200 and the Bonferroni haircut 0.132 of skill-less searches. Lo's correction brings luck-equivalent trials to 0.059. - The deflated Sharpe ratio read as a test at 0.95 almost never calls noise skilled (0.000) but finds the skilled strategy in only 0.090 of searches, against 0.533 for luck-equivalent trials. It subtracts the expected best of N and then asks for high confidence on top: an estimate, not a test at its level. - Haircut Sharpe p-values are two-sided, as the authors define them, so their size sits near half the level by construction. ## Evidence boundary These are synthetic searches. They measure how corrections behave on known return shapes; they do not say which shape a real strategy has, and a correction that passes here can still fail on a shape the zoo does not contain. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/options-dispersion-feasibility ------------------------------------------------------------------------------ # Options dispersion: locked no-return data and execution-feasibility protocol **Short title:** Options dispersion: feasibility protocol **Declared:** 2026-08-16 **Return data:** prohibited **Hypotheses spent:** zero **Family trial account:** `options_dispersion` ## Question Can one point-in-time S&P 500 index-versus-constituent option book be reconstructed with enough quote, membership, corporate-action, settlement, and executable-cost fidelity to justify one later return preregistration? This stage may inspect schemas, timestamps, identifiers, bid/ask quotes, quote sizes, option terms, index membership, dividends, rates, corporate actions, exercise/settlement rules, and missingness. It may not calculate strategy P&L, forward realized variance, Sharpe ratio, drawdown, portfolio correlation, or any return-conditioned threshold. ## Frozen research identity - Underlying index: S&P 500 / SPX. - Constituent basket: the 50 largest eligible optionable constituents using membership and float market capitalization known before that trading session. - Measurement time: 3:45 p.m. New York for intraday quotes, or the vendor's documented 3:59 p.m. end-of-day snapshot. Sources cannot be mixed within a date. - Target maturity: 30 calendar days, interpolated only between eligible near and next standard expirations bracketing 30 days. - Quote construction: model-free OTM option strips, with the official Cboe valid-quote, two-zero-bid, and minimum-strike-count rules as the independent reference implementation. - Missing constituent variances: never forward-filled. Available basket weight and excluded weight are both published; no date is eligible below the locked coverage gate. - No sign, entry threshold, holding return, or performance criterion is selected in this audit. ## Frozen source hierarchy 1. OptionMetrics IvyDB US end-of-day option prices, permanent security IDs, rates, dividends, corporate actions, and surfaces from 1996 onward. 2. A point-in-time S&P constituent and float-weight history linked by permanent identifier. 3. Cboe DataShop one-minute NBBO and size for SPX and only the frozen constituent sample, used on a deterministic calibration-date sample rather than as a substitute history. 4. Official OCC/Cboe contract, adjustment, exercise, and settlement metadata. 5. Alpaca OPRA capture only for prospective paper/live evidence from February 2024 onward. Indicative option feeds, today’s constituent list applied backward, midpoint-only bars, adjusted contracts without deliverable lineage, and vendor surfaces without their timestamp/vintage are inadmissible. ## Locked feasibility gates All gates pass before a return protocol can be written: 1. At least 15 complete calendar years spanning 2008–2009, 2020, 2022, and 2024–2025. 2. At least 99% of research dates have point-in-time index membership and prior-known weights; Wilson 95% lower bound at least 98%. 3. At least 98% of dates have a valid SPX near/next strip and at least 90% of frozen basket weight has valid constituent near/next strips; Wilson lower bounds at least 97% and 88% respectively. 4. Every retained contract has bid, ask, quote timestamp, expiration, strike, call/put, multiplier, exercise style, settlement style, and deliverable identity; crossed or one-sided markets fail. 5. At least 99.5% of retained option rows link uniquely through symbol changes, splits, special dividends, mergers, spin-offs, and delistings; adjusted contracts remain separate identities. 6. Rates and discrete dividend forecasts are vintage-correct. American single-stock options use an early-exercise/assignment model; European cash-settled SPX options do not inherit that model. 7. On 250 deterministic overlap dates, the independent option-strip implementation agrees with the vendor surface within median 1.0 variance-volatility point and 95th percentile 3.0 points; disagreements are published, never averaged away. 8. On 250 deterministic Cboe-overlap dates, executable NBBO reconstruction retains at least 85% of target vega after size and valid-strip filters; Wilson lower bound at least 80%. 9. The accounting identity reconciles index variance, weighted constituent variance, excluded basket weight, and implied correlation without clipping except where the official benchmark definition explicitly clips its displayed index level. 10. A complete execution-state schema exists for commissions, exchange/clearing fees, half-spread, nonlinear size impact, partial and rejected fills, leg risk, cancel/replace latency, stale quotes, delta-hedge spread/impact, overnight gaps, early assignment, pin risk, dividends, borrow, margin, exercise, settlement, halts, exchange outages, and corporate actions. 11. A defined-loss construction is possible on every date without using future strikes or fills. Unavailable disaster wings make the date ineligible; they are never synthesized. 12. Return data opened and return identities spent remain exactly zero. ## Decisions - `PASS_TO_RETURN_PREREGISTRATION`: every gate passes and all manifests are hash-bound. - `DATA_GATED`: a named licensed dataset can resolve a failed lineage or quote-size gate. - `KILL_FEASIBILITY`: the defined-loss basket or point-in-time replication is structurally unavailable at adequate coverage. - `REJECT_GOVERNANCE`: returns were opened, samples changed after inspection, or a present-day constituent/contract state rewrote history. Passing permits exactly one separately sealed 30-day return identity. It does not admit a sleeve. ## Credential boundary No Alpaca key is requested for the historical decision because Alpaca's options history begins in February 2024. The first useful access is OptionMetrics IvyDB US through a direct license or WRDS, plus point-in-time S&P membership. Cboe DataShop is second, scoped to deterministic quote-size calibration dates. Alpaca OPRA credentials become useful only after those gates pass, for prospective capture and paper execution. Secrets must be supplied through environment variables and are never written to source, artifacts, logs, or research pages. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/options-execution-foundation ------------------------------------------------------------------------------ # Point-in-time options execution foundation AlphaForge now has tested domain primitives for option terms, quote snapshots, displayed-size package execution, fee assessment, internal scenario margin, adjusted deliverables, expiration, exercise, and assignment. This is engineering evidence, not an options backtest, investable track record, or sleeve-admission result. No market returns were opened to build it and no research hypothesis was spent. ## What is enforced - Option identities are distinct from cash equities, futures, spot, and perpetuals. - Contract terms, quotes, official settlements, and assignment notices each carry an explicit availability timestamp. Future-known inputs fail closed. - Quotes carry an explicit uppercase premium currency. Cross-strike integrity checks are currency-local; values denominated differently are never compared as one series. - A surface contains one underlying, active contracts, and unique economic terms. Quotes outside the listed-to-last-trade lifecycle are rejected. - Crossed and stale quotes are rejected. Within homogeneous expiry/right/exercise/settlement/ multiplier series, positive-size bid/ask bounds must satisfy call/put strike monotonicity and nonuniform-strike convexity. Missing strikes remain missing; the engine does not interpolate, smooth, or repair a surface. - Multi-leg orders use signed integer ratios and explicit IOC or FOK handling. Positive ratios cross the displayed ask and consume ask size; negative ratios cross a strictly positive bid and consume bid size. The smallest whole-number leg capacity controls the entire package, so IOC partial execution preserves every ratio and cancels the residual while an undersized FOK order executes nothing. - Every package has a maximum net debit per unit; a negative ceiling expresses a minimum required credit. All legs must share one explicit premium currency. Premium cash is multiplier-aware and must reconcile exactly across the package record. Missing quotes, zero bids, sub-ratio size, future-submitted orders, malformed evidence records, and non-marketable debit/credit limits fail closed. - Package execution can require point-in-time market-status coverage for every leg. OPEN may cross; HALTED and OUTAGE block; AUCTION_ONLY cannot use the continuous displayed-leg assumption; and missing or future-known coverage fails closed. Each queried leg's effective status and reason is retained on the execution evidence record. - Status inputs can be normalized through strict reviewed manifests bound to the exact SHA-256 of supplied source bytes. Publication, event observation, historical availability, local capture, and review timestamps remain separate. Qualification requires dual review; exact reconciliation requires distinct official-exchange and vendor bytes to agree on status, scope, and the complete effective interval. The generic contract accepts canonical OPTION instrument identities. - A reconciliation-only preflight can require complete explicit status coverage over each option instrument interval. Source silence never implies OPEN; instrument status retains precedence, future-known specific status cannot fall back to a venue-wide event, and every missing interval is labeled while covered plus gap milliseconds must reconcile to the requirement. - CLOSE_ONLY permits a package only when it is explicitly reduce-only and supplied integer-contract positions prove that every full requested ratio leg moves toward zero without increasing or flipping exposure. The same integrity check applies to reduce-only packages in OPEN markets, so the flag cannot become a leverage exemption. - Option fee schedules are immutable point-in-time revisions keyed by venue, account class, product group, and premium currency. Every revision binds effective and local-availability intervals plus a credential-free HTTPS source URL and SHA-256 digest; revision identities are contiguous and cannot regress in availability or effective time. - Fee components use exact decimal arithmetic and can scope per-contract or premium-rate charges by buy/sell side, maker/taker/auction liquidity, and trade/exercise/assignment event. Explicit order minima, caps, rebates, and component-level no-rounding, half-up, or ceiling-to-increment policies are supported. Rounding occurs before contractual minima and caps. Accepted package legs supply the contract counts and premium notionals; rejected packages cannot be charged, and every fee line must reconcile to the exact assessment total. - Internal scenario margin consumes a complete stressed-price matrix from a locked upstream model. Every scenario must price every held option exactly once in one premium currency. Model and input artifacts carry SHA-256 identities; future-known, stale, duplicate, incomplete, extra-instrument, cross-currency, negative-price, or inexact-number inputs fail closed. - Scenario P&L nets all legs before selecting the worst loss. Separate point-in-time initial and maintenance policies can apply an explicit loss multiplier, per-short-contract floor, gross-short-mark add-on, and underlying-group concentration add-on. The assessment records every parameter and re-derives every component and total; the snapshot model identity must exactly equal the policy risk method. Mismatched methodology and coherent-looking arithmetic tampering fail closed. - Expiry uses an official settlement observation available after expiration, not a convenient last trade or midpoint. - Cash-settled and physically settled call/put positions produce signed, multiplier-aware cash and underlying delivery. Below-threshold contracts lapse explicitly. - Early assignment requires an observed broker/clearing notice and American physical terms. The platform does not invent assignment from an uncalibrated probability. - Each adjusted deliverable has a source reference, contiguous revision number, effective time, source-observation time, and platform-availability time. Replay selects only the latest revision both effective and available at the decision; future-known revisions fail closed. - An adjusted package can contain multiple canonical assets and currencies plus explicit exercise cash. Expiry and observed assignment convert it into one deterministic option-close, asset, and cash basket whose signs are tested for calls, puts, long positions, and short positions. - OCC adjustment documents enter through a strict reviewed-extraction manifest. Every observation binds the raw source URL and SHA-256 digest, exact decimal economics, source publication time, local availability time, effective time, stable contract-class key, and contiguous revision. Unknown fields and malformed official memo identities fail closed. - The source archive accepts only the canonical HTTPS OCC memo endpoint, refuses redirects, bounds response size, validates PDF media type/signature/terminator, and writes immutable SHA-256-addressed blobs plus point-in-time manifests. Repeated observations are idempotent; changed source bytes become visible history, while conflicting claims at the same observation time fail closed. Every reviewed OCC extraction must bind exact archived bytes observed no later than its local availability time. - Anticipated terms, fewer than two independent reviews, unresolved/TBD consideration, delayed settlement, reused source content, and non-final revisions remain auditable but cannot qualify for replay. A numeric suffix identifies a non-standard option class; it never defines its terms. - A separately captured vendor observation must exactly match OCC on effective time, adjusted root, multiplier, strike-cash multiplier, exercise currency, settlement state, canonical assets, source identifiers, quantities, and fixed cash. Every disagreement is named and blocks qualification rather than being resolved by preference or tolerance. - Generic crypto routing and transaction-fee schedules reject options. These rules follow OCC/OIC's published boundary: adjusted roots can be revised again without a new suffix, adjustments are case-specific, and deliverables may include multiple securities, fixed cash, cash in lieu, or components whose settlement is delayed. Representative primary sources are [OCC Information Memo 26853](https://infomemo.theocc.com/infomemos?number=26853), the [OIC corporate-actions FAQ](https://www.optionseducation.org/referencelibrary/faq/splits-mergers-spinoffs-bankruptcies), and [OCC Information Memo 59573](https://infomemo.theocc.com/infomemos?number=59573). ## Deliberate boundary These checks establish quote-bound integrity, an explicit atomic displayed-leg crossing model, a fail-closed adjusted-deliverable representation, an immutable source-byte archive, and a reviewed normalization/reconciliation contract—not actual simultaneous package fillability or historical adjustment coverage. Displayed bid/ask sizes on independent legs do not prove that a complex order would fill atomically; the replay therefore publishes its assumption as `atomic_cross_of_independently_displayed_bid_ask_without_fill_probability` and does not invent hidden liquidity, queue priority, complex-order-book price improvement, or beyond-displayed-size impact. Fee semantics are implemented, but no historical venue/account/product schedule corpus, content-verified fee-source archive, calibrated rate set, or production adapter is bundled; no default option commission is invented. Internal scenario margin is an AlphaForge risk measure, not a broker, OCC, exchange, regulatory, TIMS, STANS, or portfolio-margin replica; the supplied stress prices are not independently validated by an option repricer, and opening premium cash is outside the requirement. Status replay consumes supplied point-in-time events and the reviewed ingestion and preflight boundaries can normalize and audit supplied source artifacts, but there is no historical options status corpus, production status adapter, empirical broad-market coverage evidence, complex-order auction model, live venue-status polling, or outage failover. The archive transport is injectable, but operational unattended acquisition is not established: on 2026-08-18, direct HTTP and headless Chromium requests to the live OCC memo endpoint both returned HTTP 403 with `cf-mitigated: challenge` and exposed no PDF bytes. This limitation is preserved as a negative result; no challenge bypass or historical corpus is claimed. An OCC-supported distribution path or authorized operator retrieval is required before corpus accrual can be represented as operational. There is not yet automated PDF text extraction, a reviewed historical memo corpus, a production vendor feed adapter, a historical terms/quote ingestion spine, implied-volatility fitter, put-call-parity input set, dividends/rates/borrow exercise model, arbitrage repair, a validated stress repricer or calibrated scenario corpus, broker/OCC/exchange/regulatory margin equivalence, opening-premium collateral integration, margin calls and forced liquidation, end-to-end backtest ledger, or broker exercise/reconciliation path. The existing Deribit forward capture is a research data accrual process; it does not erase these gaps. Until those components and their point-in-time evidence exist, no candidate may claim realistic options execution or assignment modeling. The machine-readable capability statement is published at [`/glassbox/options_execution_contract.json`](/glassbox/options_execution_contract.json). ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/pre-fomc-announcement-drift-feasibility ------------------------------------------------------------------------------ # Pre-FOMC announcement drift — no-return feasibility protocol **Declared:** 2026-08-16 **Return data:** unopened **Hypotheses spent:** zero ## Question Can the scheduled FOMC decision calendar and exact statement-release clock be reconstructed from official Federal Reserve sources without using market prices or learning which events were profitable? ## Locked audit - Official Federal Reserve current calendar for 2021 onward. - Official per-year historical meeting pages for 2016–2020. - Regular meetings only; emergency conference calls and unscheduled actions are excluded. - Exact HTML statement URL, decision date, release-time text, source hash, and retrieval lineage. - No intraday bars, closes, spreads, returns, signals, positions, or performance statistics. ## Gates before any return identity 1. Eight regular scheduled decisions in ordinary complete years. The March 17–18, 2020 regular meeting was superseded during the emergency period; the unscheduled March 2/3 and March 15 actions are excluded because a pre-announcement window was not knowable from the regular calendar. The resulting statement-event corpus should contain 79 decisions: eight in nine years and seven in 2020. 2. Statement release-time metadata coverage must be 100%. 3. The 2:00 p.m. ET release convention must be measured, not assumed. 4. Point-in-time schedule revisions/confirmations must be reconstructable. The current Federal Reserve calendar says each future meeting date is tentative until confirmed at the immediately preceding meeting; an ex-post list of final dates is not sufficient lineage. Failure of gate 4 yields `CALENDAR_LINEAGE_REQUIRED`, not permission to open returns. ## Resolved schedule lineage The follow-up audit binds ten official annual schedule press releases for 2016–2025. Each page contains eight target-year meeting slots, is SHA-256 bound, and was published before the target year. The minimum lead is 117 XNYS sessions. All 79 completed regular decisions match those 80 initially scheduled slots. The sole schedule-only slot is March 17–18, 2020. The official 2020 history marks it cancelled, and the March 15 emergency statement is bound at 5:00 p.m. EDT, two XNYS sessions before the scheduled decision date. Dropping this event would create ex-post selection. Any return identity must preserve it as `CANCELLED_NO_ENTRY_OR_FLATTEN_AT_NEXT_ELIGIBLE_OPEN`. Decision: `PASS_TO_RETURN_PREREGISTRATION`. This is not return evidence. The single identity is locked separately in `PREREG_PRE_FOMC_ANNOUNCEMENT_DRIFT.md`; returns remain unopened until the market-input manifest and runner enforce that contract. ## Market-data readiness result The locked event/control expansion produces 312 valid matched-control windows and 782 unique XNYS session files. Every required object is visible in the Polygon SIP quote archive; no required date is missing, and every completed event retains at least three controls. The cancelled March 2020 slot has no market window. The available provider routes nevertheless fail implementation feasibility: - The required full-day SIP quote files total 3,005.294 GiB compressed, far beyond the locked 50 GiB ceiling for a bounded single-instrument research ingest. - The configured flat-file credentials can list objects but return HTTP 403 to one-byte endpoint retrieval probes. - The server-filtered Polygon historical SPY quote endpoint returns HTTP 403 `NOT_AUTHORIZED`. - Databento consolidated US-equity depth begins in 2023 and cannot cover the frozen 2016–2025 panel; single-venue history beginning in 2018 is not a substitute for consolidated NBBO. Decision: `DATA_GATED`. No quote record was decompressed or parsed, no return was computed, and no hypothesis was spent. Progress requires a server-filtered historical SIP quote entitlement (or a vendor-supplied SPY-only export) covering 2015-12-29 through 2025-12-10 with bid, ask, sizes, timestamps, conditions, sequence/order lineage, and corrections. Alpaca shadow data cannot replace this historical research feed. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/prereg-earnings-narrative-change ------------------------------------------------------------------------------ # PRE-REGISTRATION — annual risk-factor narrative stability **Declared 2026-08-15 after the filing-only feasibility pass and before loading any security return associated with this signal. One hypothesis identity. No direction, section, horizon, or portfolio sweep.** ## Economic mechanism and locked direction Material changes to an issuer's annual risk disclosures can reveal changing operating conditions, legal exposure, or managerial concern before those changes are fully incorporated into prices. The published *Lazy Prices* result is the prior, not Canli Capital evidence. The locked direction is **long stable disclosures and short changed disclosures**. A failed result is never inverted. This first identity uses only 10-K Item 1A. MD&A, 10-Qs, earnings-call transcripts, embeddings, sentiment, topic models, and alternative lexical distances are outside this test. Trying any of them later consumes the candidate's second and final budgeted identity under a new preregistration. ## Point-in-time data and lineage - Filing metadata and acceptance timestamps: SEC submissions JSON and filing index records. - Source text: immutable SEC accession archive; unamended 10-K primary documents only. - Filing classification: the two-digit SIC displayed on that immutable accession's SEC filing index page. A current sector snapshot is forbidden. **Storage clarification before manifest construction or any return was loaded:** SEC ignored a byte-range request and returned a 24.6 MB complete-submission file for a single utility accession; the accession index exposes the same filing-time SIC in roughly 13 KB. The index is therefore the locked source, avoiding a wasteful download of every exhibit while preserving accession-time lineage. **Observed-source clarification before any return was loaded:** a small subset of immutable accession index pages exposes no SIC at all. Those downloads remain valid, are counted and disclosed as `sic_missing_at_source`, and are not endlessly retried or filled from a current company snapshot. A filing lacking current-accession SIC cannot enter a signal cohort; a prior filing may still serve as the immediate text predecessor because its SIC is not used as a contemporaneous control. - Equity history: survivorship-inclusive Sharadar SEP, ACTIONS, SF1, and TICKERS snapshots already on disk. Join CIK to permanent ticker identity; ticker text is never the issuer key. - Price history uses split/dividend-adjusted returns. Entry-price and liquidity filters use the contemporaneous unadjusted price and volume. Delisted securities remain in the universe. **Delisting clarification before any return was loaded:** the Sharadar lake has delisted price histories but no dedicated CRSP-style delisting-return field. The runner carries a halted mark, realizes the move into the final observed bar, then administratively force-flats at that final observed open with normal transaction cost; it never fills missing future returns with zero. Every such event is reported. A result that otherwise passes but contains any force-flat event is `DATA-ESCALATE` pending dedicated delisting payouts/returns, not `ADD`. - Every raw filing and header retains source URL, retrieval time, SHA-256, CIK, accession, form, report date, filing date, acceptance timestamp, primary document, parser version, section hash, and predecessor accession. - **Lineage-seal clarification before any return was loaded:** the completed corpus result binds every immutable Parquet part by ordered filename, byte length, and SHA-256. The pair result binds that corpus digest, the exact source-manifest SHA-256, and the pair Parquet SHA-256. The return runner rejects a stale, replaced, or partially rebuilt artifact even if an old JSON file still says `complete`. - **Market-input lineage clarification before any return was loaded:** the runner writes one canonical input manifest that binds the ticker-history snapshot; each actually loaded symbol's exact timestamp/open/close/volume values and missingness; the SPY-derived session calendar; and the normalized split/dividend rows consumed by the adjustment engine. The result binds that manifest's SHA-256, so unrelated lake partitions are excluded without weakening reproducibility. - **Pair-integrity clarification before any return was loaded:** the pair builder recomputes every section's SHA-256 from its stored text, reconciles the stored word count, requires the locked parser version, and rejects malformed or non-increasing acceptance timestamps. It publishes an exhaustive adjacency attrition ledger: every latest-attempt corpus row is either an accepted immediate-predecessor pair endpoint or assigned a deterministic rejection reason. An unusable immediate predecessor is never skipped in favor of an older convenient filing. The corpus may begin in 2005 to form predecessor pairs. Returns before 2016 are calibration only. The locked OOS interval is 2016-01-01 through 2025-12-31. ## Signal 1. Extract Item 1A with `sec-filing-sections-v2`. Pair each filing only with the immediately prior unamended 10-K for the same CIK. Require both sections to contain at least 500 words. 2. Raw stability is five-token-shingle Jaccard similarity. Higher means less narrative change. No stemming, synonym model, length adjustment, or document-frequency weighting is allowed. 3. Form monthly cohorts by SEC acceptance calendar month. At the entry date, require unadjusted close at least $5 and median trailing 21-session dollar volume at least $5 million. 4. For each filing, compute the filing-reaction control from the adjusted close immediately before acceptance through the first complete XNYS close after acceptance, less SPY over the same interval. **Timing clarification before any return was loaded:** the end is the close of the first session whose opening timestamp is later than SEC acceptance; the start is the latest session close before acceptance. This is the preregistered substitute for unavailable point-in-time consensus surprise. 5. Compute 12-1 momentum at the cohort month-end as adjusted close at session -21 divided by adjusted close at session -252 minus one. Values must be knowable by that close. 6. Within each monthly cohort, percentile-rank stability, filing reaction, and momentum. Regress ranked stability on an intercept, ranked reaction, ranked momentum, and one-hot accession-time two-digit SIC. The signal is the OLS residual. No coefficient is carried across cohorts. 7. Require at least 20 eligible issuers and at least five names in each tail. Long the top residual quintile and short the bottom residual quintile. Ties break by CIK. A deficient cohort is flat. The one-hot regression must retain at least 10 residual degrees of freedom and produce at least 10 distinct finite residuals; otherwise the cohort is also flat rather than ranked on numerical noise from a saturated industry design. No SF1 outcome is included in the signal. The already-observed filing reaction is the locked earnings-information control, and entry is delayed until that reaction is fully known. ## Timing and portfolio - Enter each cohort at the **second XNYS session open after calendar month-end**. This ensures the first full post-acceptance close is known even for a filing accepted on the final day of a month. - Hold each cohort for exactly 63 sessions. Cohorts do not refresh, restart, or exit on later news. - Each cohort is equal notional, 50% long and 50% short. Average concurrent cohort weights and normalize stock gross exposure to 1.0. Positions shared across cohorts net before costs. - Hedge trailing 252-session SPY beta, estimated only from adjusted close returns ending at the cohort month-end. Estimate each selected stock's beta, clamp each to [-1.0, 1.0], and equal-weight those betas using the cohort's signed stock weights. Aggregate active cohort stock weights and use their resulting beta for the SPY hedge. Normalize total gross including hedge to 1.0. - Baseline costs are 15 bps one-way for stocks, 1 bp for SPY, and 3% annualized borrow on every short. Stress uses 30 bps, 2 bps, and 6% respectively. Costs apply to actual netted turnover. - **Missing-open execution clarification before any return was loaded:** a stock target may change only on a session with an observed opening print for that stock. If an internal halt spans an intended rebalance or exit, the prior stock weight and its beta contribution remain held until the next observed open; the reopening interval is therefore realized before turnover cost. The SPY hedge follows the actually executable stock beta, and deferred target changes are reported. - Report capacity at 1, 5, and 10 bps of trailing 21-session median dollar ADV; no stock position above 1% ADV is admissible. CIK is mapped to the ticker row whose Sharadar first/last-price interval contains the entry date. If no row or multiple issuer histories claim the same ticker on that date, the filing is excluded; the runner may not guess from the current ticker. SPY uses the repository's pinned Yahoo total-return research series. A cohort whose exact 63-session exit falls after 2025-12-31 is excluded rather than truncated. ## Evaluation The 2006–2015 calibration interval may expose broken mappings, impossible timestamps, missing delistings, or unstable extraction, but cannot change a parameter or promote the sleeve. The 2016–2025 OOS curve is opened once after lineage checks, unit tests, and deterministic reruns pass. Persist the full curve even if the candidate fails. Report net and stressed Sharpe, Newey-West mean t-stat, DSR against the union experiment count, drawdown, skew, turnover, beta, long/short contribution, annual results, capacity, ordinary and bottom-decile-stress correlation to each current ALPHAC sleeve, and fixed-weight combined-book delta. PBO is not estimated from a one-configuration surface; it is reported as not defined, never as zero. The fixed marginal test assigns the candidate 10%, funded pro rata from the four current equal-quarter sleeves (22.5% each). Also report a mean-zero candidate control and every leave-one-calendar-year-out recomputation. **Diversification-engine clarification before any return was loaded:** all correlation and fixed-weight book evidence is computed by the shared `alphaforge.validation.diversification.diversification_report` implementation. The common window starts at the latest first observation and ends at the earliest last observation across the candidate and four current sleeves; any missing date inside that window fails closed rather than being dropped. The predeclared stress mask remains the bottom decile of the existing equal-weight ALPHAC book. One-sided 95% correlation bounds use a deterministic 2,000-sample, 21-observation circular moving-block bootstrap with seed 20260816. The report is persisted and SHA-256 bound. ## Kill and escalation rules Kill if any condition holds: 1. OOS net Sharpe < 0.40, DSR < 0.95, Newey-West t-stat < 2.0, or stressed-cost Sharpe < 0.40. 2. Realized absolute SPY beta > 0.10. 3. Average ALPHAC correlation > 0.15, any ordinary pair correlation > 0.35, or any stressed correlation > 0.50. Also kill if the one-sided 95% upper bound exceeds 0.35 ordinarily or 0.50 under stress, if fewer than 252 aligned observations or 63 stressed observations remain, or if internal common-window dates are missing. 4. The 10% candidate allocation fails to improve ALPHAC Sharpe, its mean-zero control, or any leave-one-year-out recomputation. 5. Either long or short stock leg has non-positive gross contribution. 6. Capacity at the 1% ADV ceiling is below $5 million. 7. The fixed 10% allocation worsens book expected shortfall, worsens maximum drawdown by more than one percentage point, or fails the shared canonical diversification artifact/hash contract. If all research gates pass but historical locate/borrow evidence cannot be obtained, classify the result `DATA-ESCALATE`, not `ADD`. Alpaca credentials are relevant only after an add-to-shadow decision; they are not research data and cannot repair a failed backtest. ```prereg profile: earnings_narrative_change_v1 lake_dir: data/lake_sharadar alpha_names: sec_10k_item1a_stability_jaccard5 allocator: monthly_residual_quintile_beta_hedged section: 10-K Item 1A parser_version: sec-filing-sections-v2 direction: long_stable_short_changed hold_sessions: 63 oos_start: 2016-01-01 oos_end: 2025-12-31 ``` ## Primary references - SEC EDGAR APIs: https://www.sec.gov/search-filings/edgar-application-programming-interfaces - SEC access and archive paths: https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data - Cohen, Malloy, and Nguyen, *Lazy Prices*: https://www.nber.org/papers/w25084 ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/prereg-pre-fomc-announcement-drift ------------------------------------------------------------------------------ # PRE-REGISTRATION — post-publication pre-FOMC announcement drift **Declared 2026-08-16 after official schedule-lineage PASS and before opening any market return associated with this identity. One direction, one instrument, one timing window, one hypothesis.** ## Mechanism and direction The prior is a temporary equity risk premium immediately before scheduled FOMC decisions. The locked direction is **long US equities before the announcement**. A negative result is not inverted. Earlier published evidence that the effect disappeared is treated as a reason to expect a kill; 1994–2015 is not opened as a rescue sample. ## Event universe and point-in-time state - Primary period: 2016-01-01 through 2025-12-31, entirely after the original result was public. - The event source is the sealed 80-row annual-schedule artifact. Seventy-nine slots end in a regular decision and one—March 17–18, 2020—is an explicit cancellation. - The runner must ingest all 80 rows. Joining only to statement dates is forbidden. - If a cancellation becomes public before entry, remain flat. If it arrives after entry, flatten at the first executable quote and retain the realized P&L. For the sealed 2020 case, the March 15 5:00 p.m. release predates the entry window, so the state is `CANCELLED_NO_ENTRY`. - Unscheduled meetings, notation votes, press conferences, minutes, speeches, and SEP labels do not create additional trades or filters. ## Instrument, clock, and execution - Primary instrument: SPY common shares, long only, unlevered sleeve notional. - Entry: buy at the first executable NBBO ask at or after 2:00:00 p.m. America/New_York on the XNYS session immediately before the scheduled decision day, with a 30-second fill deadline. - Exit: sell at the last executable NBBO bid at or before 1:55:00 p.m. on decision day, using quotes no older than one second. This exits before the 2:00 p.m. statement jump. - If either quote is absent, crossed, locked, stale, or outside regular trading hours, the event is an execution failure and contributes a flat return after any actually filled leg is closed at the next executable quote. It is never filled from a bar close or midpoint. - Baseline adds 0.5 bp adverse latency/slippage per side beyond observed bid/ask and statutory sale fees. Stress scenarios use 1.0, 2.0, and 5.0 bp per side, 1/5/30-second latency, and 100%/75%/50% fill ratios. Partial fills retain proportional profit and loss; rejected orders remain flat. - An exchange halt carries the actual position until the first executable quote. An outage before entry means no trade. SPY splits and distributions are applied from point-in-time corporate actions; an unresolved action fails the run. ## Locked matched control For each completed event, compute the same SPY clock-window return on the four immediately prior same-weekday non-FOMC weeks. Exclude a control if its window overlaps any scheduled FOMC slot; do not replace it with a later or hand-selected day. The primary observation is event net return minus the mean of available controls. Fewer than three valid controls makes the event unusable and fails completeness rather than silently dropping it. ## Evaluation and untouched holdout - 2016–2022 is the frozen pre-holdout panel. 2023–2025 is the untouched holdout and may be opened only if ingestion, lineage, execution replay, and pre-holdout code checks pass without changing any parameter. - There is no model fitting. Report the 79 completed event observations and the daily flat-filled sleeve curve separately; zeros between events do not inflate the effective sample size. - Report net and stressed event Sharpe annualized by `sqrt(8)`, Newey–West mean t-statistic, DSR against the full union experiment count at execution, maximum drawdown, expected shortfall, worst event, annual results, hit rate, turnover, fill failures, and cancellation behavior. - PBO is `NOT_DEFINED_SINGLE_IDENTITY`, never zero. Parameter perturbations are diagnostics only: entry ±5 minutes, exit ±5 minutes, and each declared cost/latency scenario. The primary identity must pass; no neighboring cell can replace it. - Build the canonical daily diversification report against all four ALPHAC sleeves with fixed 10% candidate weight, bottom-decile existing-book stress mask, 2,000 circular block bootstraps, 21-session blocks, and seed 20260816. Report confidence bounds, crisis dependence, co-tail loss, mean-zero control, and every leave-one-calendar-year-out recomputation. - Capacity uses observed executable SPY quote size and a conservative 1% of trailing 21-session median dollar ADV. Report at least $1M, $5M, and $10M notional points with fill ratio and costs. ## Kill rules Kill if any applies: 1. Net event Sharpe < 0.40, stressed Sharpe < 0.40, Newey–West t < 2.0, or DSR < 0.95. 2. The untouched 2023–2025 holdout has non-positive mean excess return or net Sharpe < 0.40. 3. Fewer than 79 completed events are accounted for, the canceled slot is absent, or any usable event has fewer than three locked controls. 4. The result depends on the announcement jump, overnight exposure outside the locked window, a bar midpoint, a later schedule snapshot, or exclusion of an execution failure. 5. Any admission-contract beta, correlation, confidence-bound, stressed-correlation, book-delta, expected-shortfall, drawdown, execution-evidence, or $5M capacity gate fails. 6. The primary result fails even if a perturbation looks better. No alternate window, futures substitute, sign flip, pre-2016 sample, or event subset may rescue it. If research passes but historical NBBO depth or quote provenance is incomplete, return `DATA-ESCALATE`, not `ADD`. Alpaca is relevant only for later shadow execution; it cannot replace the historical research feed. ```prereg profile: pre_fomc_announcement_drift_v1 lake_dir: data/raw/pre_fomc_announcement_drift/market_nbbo alpha_names: spy_pre_fomc_24h_excess allocator: event_only_long_flat instrument: SPY direction: long entry_clock_et: 14:00:00_previous_session exit_clock_et: 13:55:00_decision_session scheduled_slots: 80 completed_events: 79 cancelled_slot: 2020-03-18 preholdout_end: 2022-12-31 holdout_start: 2023-01-01 holdout_end: 2025-12-31 ``` ## Primary references - Federal Reserve annual schedule releases and historical calendar: official source URLs are sealed in `annual_schedule_events.parquet`. - Lucca and Moench, *The Pre-FOMC Announcement Drift*: https://doi.org/10.1111/jofi.12196 - Kurov, Wolfe, and Gilbert, *The Disappearing Pre-FOMC Announcement Drift*: https://doi.org/10.2139/ssrn.3134546 ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/repurchase-issuance-flow-feasibility ------------------------------------------------------------------------------ # Repurchase and issuance flow: no-return SEC feasibility protocol **Declared:** 2026-08-16 **Return data:** prohibited **Hypotheses spent:** zero **Family trial account:** `corporate_equity_supply` **Prior return configurations:** three (`eq_net_issuance`) **Minimum family trial count if one completed-flow return identity is opened:** four **Independent-sleeve count:** prohibited; this is a same-family measurement refinement ## Question Can completed repurchases and completed issuance be reconstructed from information available at each SEC filing acceptance time, with enough coverage and semantic stability to justify exactly one later return preregistration? This audit measures data feasibility only. It may inspect filing metadata, XBRL facts, Item 703 tables, taxonomies, contexts, amendments, and extraction errors. It may not read prices, returns, future delistings, signals, positions, portfolio correlations, or performance statistics. ## Frozen source and sample - Official SEC `company_tickers.json`, Submissions API, Company Facts API, and immutable filing documents. No vendor-derived fundamentals. - Forms 10-Q, 10-Q/A, 10-K, and 10-K/A filed from 2013-01-01 through 2025-12-31. - A deterministic 600-CIK schema sample: canonical current SEC ticker rows, one row per CIK, ordered by `sha256("repurchase_issuance_flow_v1|CIK##########")`, first 600. This current roster is allowed only for schema feasibility and cannot become a historical return universe. - A deterministic 240-filing Item 703 document sample from those CIKs, balanced by filing year where documents exist. Selection is by the same sealed hash rule, never by extraction success. - Every raw response stores URL, retrieval time, byte count, SHA-256, CIK, accession, acceptance time, form, fiscal period, taxonomy tag, unit, start/end dates, `filed`, `frame`, and source file. ## Frozen fact families The parser records, but does not combine or optimize, these standard-tag families: - completed cash repurchases: `PaymentsForRepurchaseOfCommonStock` and direct successor tags with identical taxonomy definitions; - completed common-stock issuance cash proceeds: `ProceedsFromIssuanceOfCommonStock` and direct successor tags with identical definitions; - shares issued or repurchased/retired during the period where standard tags exist; - weighted-average and period-end shares only as reconciliation diagnostics; - stock-option exercise proceeds, share-based compensation, acquisition consideration, stock splits, tender offers, and non-cash issuance as explicit contamination flags, never silently merged into ordinary issuance. Custom extension tags are preserved and counted but cannot be auto-mapped from text similarity. Any successor mapping requires identical definitions and a published mapping table. ## Point-in-time rules 1. A fact becomes knowable at the filing's accepted timestamp, never at fiscal period end. 2. The first accepted filing is the historical value. An amendment is a new state from its own acceptance time and cannot rewrite earlier observations. 3. Cumulative year-to-date duration facts may be quarterized only by differencing facts that were both knowable at that decision time, share the same fiscal year and unit, and pass context lineage. Missing predecessors remain missing. 4. Company Facts frames are not used as historical truth because their “last filed” aggregation can incorporate later submissions. 5. Restatements, duplicate contexts, dimensions, unit changes, and conflicting tags are explicit failure states. No best-looking value is selected. 6. Item 703 tables are parsed from the immutable filing document tied to the accession. The vacated 2023 daily disclosure format is not assumed. ## Locked gates All gates must pass before a return protocol can be written: 1. 100% raw-response hashes and accession/acceptance lineage. 2. At least 95% of sampled periodic filings join uniquely to SEC submissions metadata. 3. At least 70% of sampled issuer-years expose either a standard completed-repurchase cash fact or an accession-bound Item 703 table; Wilson 95% lower bound must be at least 65%. 4. At least 60% of sampled issuer-years expose a standard completed-issuance cash/share fact or an explicit contamination-resolved reconciliation; Wilson 95% lower bound at least 55%. 5. At least 85% Item 703 extraction precision and 80% recall on a frozen 60-document hand-label set selected before parser evaluation. 6. At least 95% of accepted facts have unambiguous unit, period, and form context. 7. Amendment replay is slice-invariant: truncating the corpus before an amendment reproduces the exact pre-amendment state hash. 8. Quarterization fails closed whenever a predecessor, unit, context, or fiscal-year identity is ambiguous; zero is never imputed. 9. Stock splits, stock compensation, acquisition issuance, tender offers, and custom tags each receive explicit coverage/error counts. 10. Return data opened and return identities spent both remain exactly zero. ## Decisions - `PASS_TO_RETURN_PREREGISTRATION`: every gate passes and the complete manifest is hashed. - `DATA_GATED`: coverage or semantic lineage is inadequate but a named vendor could resolve it. - `KILL_FEASIBILITY`: actual repurchases and issuance cannot be separated reproducibly enough to support the economic identity. - `REJECT_GOVERNANCE`: any return data was opened, the deterministic samples changed, or a missing value was inferred from future information. Passing permits one separately sealed family-wise return identity. It does not choose a sign, horizon, universe, threshold, or sleeve weight and does not create an ALPHAC sleeve. ## Identity-overlap decision `artifacts/feasibility/repurchase_issuance_flow/identity_overlap_audit.json` reconciles this proposal against the historical `eq_net_issuance` campaign. The prior signal measured the year-over-year change in split-adjusted shares with the same long-repurchaser/short-issuer economic thesis. Three distinct configurations are already in the union ledgers; results include a null, Sharpe `-0.1289`, and Sharpe `-0.3113` with DSR `0.00010`, while a separate source-correct full-window rerun reported `+0.1481`. That instability is prior family evidence, not a clean slate. Completed cash flows are a distinct and potentially better measurement, but they remain in the same corporate-equity-supply family. A later return protocol, if feasibility passes, must inherit all prior trials, residualize against the frozen broad issuance signal, prove positive mean-zero marginal book contribution, and use an untouched holdout. It may qualify only as a same-family replacement or refinement and cannot count toward the ten new independent sleeves. ## Implemented pipeline and current state The complete no-return collection, semantic-audit, blind-extraction, and combined-decision path is implemented and covered by 48 focused tests. Official SEC collection and semantics are now complete. The family is stopped at the intended blind-label gate: all 240 frozen documents are sealed, no document has been parsed, and none of the 60 labels has been opened by the parser. 1. `scripts/build_repurchase_issuance_manifest.py` creates the deterministic 600-CIK sample and binds it to the raw SEC ticker-map hash. 2. `scripts/collect_repurchase_issuance_companyfacts.py` stores deterministic gzip responses, preserves every original and amended fact, writes immutable Parquet parts, and can resume by parser-version-qualified CIK identity. 3. `scripts/collect_repurchase_issuance_submissions.py` independently collects all eligible periodic filings so coverage is measured against real filing denominators rather than only companies with convenient tags. 4. `scripts/audit_repurchase_issuance_companyfacts.py` verifies both collection seals and part hashes, joins facts to accessions, computes context completeness and Wilson bounds, and can return only `ITEM703_AUDIT_REQUIRED` or `DATA_GATED`. It cannot pass full feasibility. 5. `scripts/audit_repurchase_issuance_semantics.py` independently replays amendment prefixes, proves slice invariance, quarterizes only same-year/same-unit/same-context facts known by that acceptance time, records every fail-closed reason, and reports all contamination categories. 6. `scripts/build_repurchase_item703_manifest.py` creates immutable year-balanced 240-document and 60-label samples from completed periodic filings, excluding amendments from selection. 7. `scripts/collect_repurchase_item703_documents.py` retrieves only the frozen filing documents, verifies the exact accession set, and stores deterministic gzip bodies and immutable statuses. 8. The 60 frozen documents are labeled independently in `labels.csv`. The labeler records table presence, month-row count, total-row presence, and notes without opening parser output. 9. `scripts/seal_repurchase_item703_labels.py` validates exact identities and complete labels, refuses to run after any parser output exists, and binds the labels to the parser-source hash. 10. `scripts/parse_repurchase_item703_documents.py` verifies every raw hash and the pre-evaluation parser hash, parses all 240 documents without reading labels, preserves tender-offer mention counts, and writes one immutable result. 11. `scripts/audit_repurchase_item703_extraction.py` opens the labels only after parsing, reports the full confusion matrix plus row-shape diagnostics, and enforces precision at least 85% and recall at least 80%. Passing still cannot admit the family or authorize a return probe. 12. `scripts/audit_repurchase_issuance_feasibility.py` revalidates every current part against the full cryptographic chain, computes conservative union coverage on the frozen document-sample issuer-years, applies every locked empirical and governance gate, and is the only stage allowed to emit `PASS_TO_RETURN_PREREGISTRATION`. Any missing or failed gate exits nonzero. Company Facts parser v3 also makes semantic exclusions explicit. Stock compensation, option exercise proceeds, acquisition issuance, mixed common/preferred facts, repurchase authorizations, and split diagnostics have separate families and cannot count as direct ordinary issuance. Balance-sheet `CommonStockSharesIssued` is reconciliation data, not a completed-period flow. Custom extensions stay in immutable raw responses and receive explicit namespace, tag, and row counts, but are never mapped by text similarity. The parser records official Company Facts 404s as terminal `not_available_404` outcomes, never as successful payloads and never as retryable silence. Those issuers remain in the frozen denominator. ### Empirical checkpoint: stopped before parser evaluation - The SEC ticker manifest contains exactly 600 unique CIKs. Company Facts returned 520 payloads; 80 manifested issuers had reproducible official 404s, and collection had zero unresolved errors. All 600 identities are explicitly accounted for. - The independent submissions collection contains 15,009 periodic filings. Of 150,570 relevant facts, 99.993% join to an accession and 99.489% have complete unit/period/form context. - Standard tags alone cover 46.45% of 3,903 issuer-years for completed repurchases (Wilson lower bound 44.89%) and 43.35% for completed issuance (Wilson lower bound 41.80%). These figures do not clear the locked combined coverage gates; they prove the Item 703 lane is necessary. - Amendment replay is slice-invariant across 2,407 amendment facts. Quarterization derives 35,792 quarters and fails closed on 19,087 facts, including 18,321 missing predecessors; zero values are imputed. - The frozen Item 703 sample is 240/240 collected with exact accession identity. The year-balanced 60-document `labels.csv` is blank by design. No parser output or return data exists. - A deterministic offline reviewer bundle now preserves those 60 immutable source documents under `artifacts/labeling/repurchase_item703_blind/`, with a blank shuffled review sheet and explicit instructions. Its manifest content hash is `sha256:0e70f38f7d07e2d22d5834ce1336401518f3704f29023097be3d973e14c928c8`. The bundle contains no parser prediction, price, return, or aggregate machine result and spends zero return identities. The only authorized next action is an independent reviewer completing the shuffled offline review sheet from its bundled filing documents, then transferring those source labels to `artifacts/feasibility/repurchase_issuance_flow/item703/labels.csv` without inspecting parser output. The seal command must run before parsing. Until then the honest decision is `BLIND_ITEM703_LABELING_REQUIRED`, not pass, kill, or return authorization. ```bash uv run python scripts/build_repurchase_issuance_manifest.py uv run python scripts/collect_repurchase_issuance_companyfacts.py uv run python scripts/collect_repurchase_issuance_submissions.py uv run python scripts/audit_repurchase_issuance_companyfacts.py uv run python scripts/audit_repurchase_issuance_semantics.py uv run python scripts/build_repurchase_item703_manifest.py uv run python scripts/collect_repurchase_item703_documents.py # Complete the frozen labels.csv independently; do not run or inspect parser output. uv run python scripts/seal_repurchase_item703_labels.py --attestation completed_attestation.json uv run python scripts/parse_repurchase_item703_documents.py uv run python scripts/audit_repurchase_item703_extraction.py uv run python scripts/audit_repurchase_issuance_feasibility.py ``` ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/sharadar-hdb-zero-dividend-quarantine ------------------------------------------------------------------------------ # Sharadar HDB zero-dividend quarantine **Short title:** HDB dividend quarantine **Author:** Arhan Canli **Decision:** `VERSIONED_ZERO_MARKER_QUARANTINE_AUTHORIZED` ## Finding The frozen Sharadar `ACTIONS` archive contains 11 dividends whose values are not positive. One survived the common-stock and liquidity filters and entered the executable lake: HDFC Bank ADR (`HDB`) on 2025-06-26 with value `0.0`. The loader propagated that row unchanged. The event engine correctly rejects it, so fundamental-single exact replays that encounter the row fail closed before producing a replacement curve. This is a vendor-originated source defect, not a backtest result. The raw archive, lake partition, loader, engine, and failed replay are all bound by SHA-256 in the machine-readable audit. ## Primary-source cross-check HDFC Bank's [June 2025 Form 6-K exhibit](https://www.sec.gov/Archives/edgar/data/1144967/000119312525146102/d60580dex99.htm) states that the board recommended a ₹22 dividend per underlying equity share, with a 2025-06-27 record date and payment on or after 2025-08-11. Its [2025 Form 20-F](https://www.sec.gov/Archives/edgar/data/1144967/000119312525158722/d854075d20f.htm) states that one ADS represents three underlying shares. Sharadar's [ACTIONS documentation](https://sharadar.com/docs/actions) defines the action value as numeric, but does not resolve the required ADS net-cash or date semantics for this anomalous row. The issuer filing therefore contradicts `0.0` as the declared underlying dividend amount. It does not by itself prove the net USD cash an ADS holder should receive after FX, withholding, and depositary handling. ## Vendor semantic resolution A read-only Alpaca corporate-actions query returned a separate positive HDB cash-dividend record whose `due_bill_on_date` is 2025-06-26, `due_bill_off_date` and `ex_date` are 2025-08-11, and net rate is USD 0.641432 per ADS. Sharadar's same instrument-year partition separately preserves a positive 2025-08-11 dividend. The exact zero row therefore matches a due-bill administrative date, not the actual cash event. The machine-readable resolution is `artifacts/audit/hdb_dividend_vendor_resolution.json`, content hash `sha256:c30b02bf34aa40b2974c5b1c3623363a601e826b866c335714c8b5b909247775`. Alpaca warns that corporate-action creation times are not guaranteed, so the retrieval timestamp is used as the conservative knowable-at bound. The Alpaca cash amount is not injected into the Sharadar series and no event is moved backward. ## Quarantine contract Future Sharadar loads reject any split or dividend with a non-finite or non-positive value before it reaches the executable lake. The existing raw archive and contaminated partition remain preserved by hash. No process may silently drop, move, or replace this row inside an identity-bound replay. The authorized repair creates a new physical lake version and removes only the exact HDB 2025-06-26 zero-cash marker. It preserves every other row, including Sharadar's positive 2025-08-11 event, and imputes no amount. The materialized lake manifest is `artifacts/audit/sharadar_hdb_corrected_lake.json`, content hash `sha256:8dec4dac90c0f2646ac09f2dfcbb26f5bd500c8fcb8c2bcda795113f7a46f9a8`. An initial corrected-lake layout used top-level symlinked dataset directories. The universe loader could not traverse that layout, so the attempt failed before signal or return computation. That infrastructure failure remains preserved in `artifacts/probe/fundamental_single_replays/e5f48adc25065ce9/replay_infrastructure_failure.json`. The replacement lake uses real directories with hard-linked immutable leaves and passed a non-empty-universe smoke test. A replay on that version must still independently prove exact reproduction; the data repair itself supplies no performance evidence. ## Claim boundary The vendor audit and lake construction opened no return series and spent no hypothesis. They validate neither the historical curve nor any Sharpe, drawdown, capacity, diversification, or sleeve claim. The immutable historical operating-margin verdict remains `KILL`; a separately bound replay can reproduce or fail to reproduce that record, but data correction is never permission to reinterpret a failed strategy. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/spin-off-dislocation-lineage ------------------------------------------------------------------------------ # Spin-off dislocation — SEC Form 10 lineage protocol **Declared:** 2026-08-16 before downloading any SEC full index for this protocol. **Stage:** official-source lineage only. Prices, returns, event outcomes, and performance are forbidden. Zero return hypotheses are spent. ## Locked question Can the complete 2016–2025 exchange-registration candidate universe be reconstructed from official quarterly EDGAR full indexes without starting from a modern ticker list or known successful spin-offs? ## Frozen source and population - Download all 40 SEC `master.idx` files for 2016 Q1 through 2025 Q4. - Hash-bind raw bytes and preserve URL, year, quarter, byte count, row count, and parse status. - Retain form type exactly `10-12B` or `10-12B/A`. - An initial candidate is form `10-12B`; amendments remain lineage but never create new events. - Preserve CIK, company name as filed, filing date, archive filename, accession, form, and source quarter. Do not join to current tickers, prices, corporate-action outcomes, or commercial event lists. Form 10 registrations are not presumed to be spin-offs. This stage discovers candidates only. ## Locked gates All are required for `PASS_TO_DOCUMENT_SCHEMA_AUDIT`: 1. Exactly 40 quarter indexes download and parse with immutable SHA-256 hashes. 2. Every retained archive filename yields a canonical SEC accession. 3. Filing identity `(CIK, accession)` is unique after exact-row deduplication. 4. Every year contains at least one initial `10-12B`, and the ten-year initial population contains at least 50 rows. These are source-usefulness gates, not alpha gates. 5. No prices or returns are opened and no return hypothesis is spent. Failure is `SOURCE_LINEAGE_REQUIRED` or `DATA_GATED`; thresholds are not revised after aggregate counts are observed. ## Required next stage after a pass A new locked document-schema audit must obtain acceptance timestamps and immutable primary documents, distinguish genuine pro-rata separations from other registrations, map parent and child, and extract distribution ratio, record/distribution dates, amendment state, cancellation, when-issued status, fractional-share handling, and tax-basis references. It must use a frozen blind accuracy set before any prices are opened. Only after that stage passes may a return preregistration define instrument identity, parent/child legs, entry clock, auction and when-issued execution, corporate actions, costs, borrow, capacity, holdouts, trial accounting, DSR/PBO, perturbations, and diversification gates. ## Primary source - SEC quarterly full indexes: `https://www.sec.gov/Archives/edgar/full-index/{year}/QTR{q}/master.idx` - SEC Form 10: https://www.sec.gov/files/form10.pdf ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/spin-off-document-schema ------------------------------------------------------------------------------ # Spin-off dislocation — initial Form 10 document-schema protocol **Declared:** 2026-08-16 after the Form 10 lineage pass and before opening any filing document in this stage. **Market prices and returns remain forbidden.** ## Frozen sample From the sealed 204 initial `10-12B` registrations in 2016–2025, sort each year by SHA-256 of `CIK|accession` and retain the first ten, or all rows when a year has fewer than ten. The resulting sample is 98 filings: ten in 2016–2024 and eight in 2025. Difficult or non-spin registrations are not replaced. ## Locked extraction 1. Download and hash the official filing index page derived from the full-index archive filename. 2. Extract the SEC acceptance timestamp and the document-table link whose type is exactly `10-12B`. 3. Download and hash that immutable primary document, normalize visible text with the existing `sec-filing-sections-v2` parser, and record byte/word counts. 4. Record fixed, non-exclusive evidence flags for `spin-off`/`spinoff`, `separation and distribution`, and pro-rata distribution-to-parent-stockholders language. 5. Record diagnostic mentions of distribution ratio, record date, and distribution date. These diagnostics do not define an event and cannot be used to select a better parser after results. No company names, filings, or years may be removed because they are not genuine spin-offs. Form 10 is deliberately being tested as a noisy discovery source. ## Locked gates All must pass for `PASS_TO_AMENDMENT_CHAIN_AUDIT`: - exactly 98 frozen filings; - 100% official filing-index downloads and exact `10-12B` primary-document links; - 100% acceptance-timestamp coverage; - 100% primary-document downloads and immutable hashes; - at least 50% of documents contain explicit spin-off or separation-and-distribution language; - at least 30% contain pro-rata distribution-to-stockholder language; and - no market data, returns, or return hypotheses are opened. Failure is `DATA_GATED`; patterns and thresholds are not revised after aggregate results are seen. A pass authorizes only a separately frozen amendment-chain and blind-accuracy audit. It does not authorize a return test or assert that flagged documents are tradable events. ## Locked result All 98 official filing indexes, acceptance timestamps, exact `10-12B` primary-document links, and primary documents were recovered and hash-bound. Explicit spin-off or separation language appeared in 68 documents (69.39%), passing the 50% discovery-source gate. The terms needed to define an event were not present reliably in the initial registration: - pro-rata distribution language: 16/98 (16.33%), below the locked 30% gate; - ratio mentions: 8/98; - record-date mentions: 4/98; and - distribution-date mentions: 0/98. **Decision:** `DATA_GATED`. The fixed patterns are not revised and the failed initial-registration identity is not advanced to an amendment-chain audit. A future route requires a materially new, preregistered amendment-known identity or licensed point-in-time corporate-action feed. No market data or returns were opened and zero return hypotheses were spent. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/stablecoin-dislocation-feasibility ------------------------------------------------------------------------------ # Stablecoin par dislocations: locked no-return feasibility protocol **Short title:** Stablecoin par dislocations: feasibility **Declared:** 2026-08-16 **Return data:** prohibited **Hypotheses spent:** zero **Family trial account:** `stablecoin_dislocation` ## Question Can an eligible institution reconstruct and execute USDC secondary-to-primary redemption with point-in-time legal, operational, venue, chain, and banking fidelity sufficient to justify one later return preregistration? This stage may inspect schemas, timestamps, terms, account eligibility, fee schedules, venue and chain status, market depth, transfer timing, mint/burn records, reserve disclosures, and missingness. It may not calculate strategy P&L, Sharpe ratio, drawdown, return correlation, or optimize an entry discount or holding period. ## Frozen identity - Token: native issuer-supported USDC only; bridged, wrapped, algorithmic, and crypto-collateralized tokens are excluded. - Mechanism: acquire USDC in an executable secondary USD market and redeem directly through the issuer. Exchange-to-exchange convergence without issuer redemption is a different family. - Actor: the same named Canli Capital legal entity and accounts that would trade the strategy. Historical access cannot be inferred from another institution's eligibility. - Unit of account: executable USD proceeds in the linked bank account, not a USDT or DAI quote. - History: from the first date all required source states coexist through the current sealed cutoff, including March 2020, May and November 2022, March 2023, weekends, holidays, and venue outages. - No direction, discount threshold, venue ranking, chain ranking, size, or holding rule is selected. ## Source hierarchy 1. Effective-dated Circle terms, account agreement, fee schedule, supported-chain state, and timestamped proof that the production legal entity is eligible and in good standing. 2. Circle API and bank records for prospective dry-run mint, transfer, redemption, rejection, delay, fee, and fiat-settlement evidence. 3. Kaiko or equivalent synchronized tick trades, order-book snapshots, venue status, and symbol lineage for eligible USD markets; raw vendor parts and revisions are hash-bound. 4. Official exchange public archives and APIs as independent trade and listing checks, never as a substitute for historical depth. 5. On-chain canonical-contract transfers, mint/burn events, fees, finality, congestion, reorgs, and issuer-supported chain status known at the time. 6. Effective-dated reserve disclosures and official notices, used as state variables only when their publication timestamps are reconstructable. ## Locked feasibility gates Every gate must pass before a return protocol can be written: 1. The production legal entity has documented Circle Mint approval, direct redemption permission, linked-bank verification, applicable limits, and jurisdictional eligibility. Screenshots or another firm's status do not pass. 2. Historical terms, fees, minimums, bank cutoffs, holidays, supported chains, blocklisting policy, and conversion interruptions are effective-dated for every retained observation; coverage and changes are published. 3. At least three independent eligible USDC/USD venues have synchronized trades, best bid/ask, displayed size, sequence or snapshot time, fee tier, symbol status, and deposit/withdrawal status. 4. At least 99.5% of retained messages have unique venue, market, timestamp, side, price, size, and source identity; clock uncertainty is bounded and crossed/stale books fail closed. 5. Mandatory stress windows are complete: March 2020, May 2022, November 2022, March 2023, the ten largest observed USDC deviations, all known venue outages, and all issuer conversion pauses. Missing stress data cannot be replaced by calm-period coverage. 6. For each supported chain and venue path, deposits, withdrawals, confirmations, gas, congestion, reorg handling, address screening, and issuer support are point-in-time. Cross-chain bridges are prohibited. 7. Prospective dry runs complete the full secondary purchase-to-bank-fiat cycle on at least 60 deterministic sessions, including 20 weekends or holidays and 10 stressed-liquidity sessions. Every rejection, manual review, delay, and fee is retained. 8. The execution simulator models taker/maker fees, book walking, nonlinear impact, queue uncertainty, partial and rejected fills, cancel latency, transfer fees, finality, withdrawal limits and halts, redemption minimums and fees, bank-wire timing, fiat availability, and trapped inventory. 9. Principal-loss scenarios cover issuer insolvency, reserve impairment, bank failure, venue default, frozen or blocklisted addresses, chain halt, smart-contract defect, cyberattack, legal restraint, and simultaneous loss of redemption and secondary liquidity. No re-peg is assumed. 10. Capacity is the minimum of executable book depth, venue and transfer limits, issuer redemption limits, bank limits, and a predeclared fraction of observed stressed liquidity—not reported ADV. 11. An overlap audit is specified against AlphaForge crypto carry, BTC/ETH stress, exchange credit, dollar funding, and banking stress. Crisis conditional correlation and co-expected-shortfall are mandatory; a low unconditional correlation cannot pass. 12. The data manifest, legal-state manifest, raw checksums, parser source hash, and audit result form one reproducible chain, and return data opened and return identities spent remain exactly zero. ## Decisions - `PASS_TO_RETURN_PREREGISTRATION`: every gate passes and one production entity can execute the full cycle; this permits one separately sealed return identity and does not admit a sleeve. - `DATA_GATED`: named institutional data, direct redemption approval, or prospective operational evidence is absent but could resolve the gate. - `KILL_FEASIBILITY`: direct redemption is unavailable, stress books are irrecoverable, capacity is immaterial, or principal risk cannot be bounded honestly. - `REJECT_GOVERNANCE`: return data were opened, terms were backfilled from current pages, stress windows were excluded after inspection, or token/venue/threshold choices changed post hoc. ## Current decision `DATA_GATED`. Direct Circle Mint eligibility for the production entity is not evidenced, historical effective-dated redemption and outage state is not sealed, synchronized historical L2 books are not configured, and no prospective end-to-end redemption ledger exists. Binance trades and Coinbase candles can support integrity checks but cannot satisfy these gates. No Alpaca key is requested: Alpaca cannot prove issuer redemption access or historical multi-venue depth. The first useful credentials are institutional Circle Mint access and a licensed synchronized order-book dataset. Secrets belong only in environment variables or a managed secret store. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/treasury-auction-concession-feasibility ------------------------------------------------------------------------------ # Treasury auction concession — no-return feasibility protocol ## Scope This stage reads only official US Treasury auction metadata. It does not load prices, calculate returns, select an entry window, or spend a return identity. The objective is to establish that the coupon-auction event clock can be reconstructed from fields knowable before each auction. ## Source and immutable lineage - Source: Treasury Fiscal Data `auctions_query` API. - Start date: 2000-01-01. - Eligible security types: nominal `Note` and `Bond` only. Bills, TIPS and FRNs are excluded. - Raw response is canonicalized, SHA-256 hashed and atomically stored. - Event identity is `auction_date|CUSIP`; duplicates fail the gate. - The emitted Parquet contains announcement-safe fields only. Auction outcomes such as high yield, allocations and bid-to-cover are deliberately excluded from the event manifest. ## Gates locked before execution 1. At least 1,000 eligible coupon auctions. 2. At least 500 auctions from 2013 onward, preserving a publication-aware falsification era. 3. At least 99% completeness for identity, announcement, auction, issue, term, amount and reopening fields. 4. Announcement date is never after auction date for at least 99% of rows. 5. At least one calendar day of notice for at least 99% of rows. 6. Event identities are unique. Passing these gates authorizes a separate return preregistration. It does not authorize a return test by itself. The return specification must lock duration buckets, beta hedges, event windows, transaction costs, post-publication priority and overlap handling before opening prices. ## Kill conditions carried forward Kill if the effect is absent after publication, reduces to duration beta, fails one-tick-plus-fee cost stress, or exceeds 0.35 correlation with AlphaTrend. The sign and window will not be inverted or retuned after a failed locked identity. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/treasury-auction-identity-timing ------------------------------------------------------------------------------ # Treasury auction concession — published-identity timing audit ## Why this stage exists The official event manifest passed its metadata gates, but the primary paper's tradable identity starts ten trading days before a 2-year note auction. A return test may use that entry only if the auction date was knowable at the time. This audit compares the published window with formal announcement lead time without loading any price or return data. ## Locked interpretation - Primary literature identity: short the on-the-run 2-year note against a duration-matched 6-month-bill/10-year-note hedge for ten trading days before the auction, reverse on auction day, and hold the opposite relative-value position for ten trading days after. - Formal auction announcements do not retroactively justify trades placed before announcement. - A recurring monthly pattern is not sufficient lineage. The exact auction date must come from a point-in-time source available by the entry date. - Treasury says six-month tentative schedules are released at each quarterly refunding. Those historical schedule documents are the required next corpus. ## Decision rule `CALENDAR_LINEAGE_REQUIRED` if formal announcements do not support the ten-session entry or the historical tentative-schedule archive has not been sealed. Do not shorten the window, change the sign, substitute a directional ETF trade, or open returns to work around this gate. Such a change would spend a different identity. ## Sealed empirical checkpoint — 2026-08-16 The no-return audit sealed the official quarterly-refunding archive page, each linked release page, and the machine-readable tentative schedules available from the current Treasury archive path. The source event manifest was also corrected to retain Treasury's `floating_rate` field. This separates fixed-rate 2-year notes from 2-year FRNs; the earlier manifest had incorrectly made the two records auctioned on 2015-01-28 appear ambiguous. The corrected manifest contains 2,037 coupon auctions, including 153 floating-rate notes, with complete fixed/floating classification and SHA-256 `594cd1df7acbb6b91c3a778cfea0abd7bdec290d418b073c954ead858b22c285`. For the locked 2013–2025 fixed-rate 2-year-note panel: - 156 auction dates are unique after the FRN exclusion. - 23 of 52 quarterly tentative schedules are available through the current official XML path. - Those schedules bind 68 auctions, or 43.59% of the locked panel. - Every bound auction had at least 13 XNYS sessions between schedule publication and auction, exceeding the published ten-session requirement where provenance exists. - The 29 missing official-XML quarters are 2013Q1 through 2020Q1. The archive workflow audited both original Treasury formats: machine-readable `auctions.xml` and the separately captured `auctions.pdf`. The Internet Archive CDX index yielded 16 distinct XML captures and 26 distinct PDF captures. Every payload and extracted PDF text is SHA-256 bound. The PDF parser accepts only fixed-rate `2-Year NOTE` rows, excludes `2-Year FRN`, selects the auction date from the three-date row, and cross-checks it against the sealed official event manifest. A capture counts only when it proves the exact final auction date at least ten XNYS sessions before the auction. Six tentative dates that differ from the final manifest are preserved as schedule revisions and excluded from proof. - Archived XML binds 47 of the 88 historical auctions through 2020Q1. - Archived PDF binds 73 of 88; the XML/PDF union binds 77 without double counting. - Combined with current official XML, 145 of 156 auctions are bound: 92.95% coverage. - Eleven auction dates remain unproven; late captures are explicitly rejected as hindsight. - The CDX corpus hash is `de2968f5dcffab2ffb4f72ac2d132c13a9537463448087087842a9e15a6c0800`. - No price or return data was opened and zero return hypotheses were spent. The unresolved-date revision audit then classified all 11 failures directly from 251 hash-bound archive event rows and the official announcement dates: - Five auctions had a different same-month tentative date visible at least ten sessions ahead. - Two exact dates appeared in archive captures only three to eight sessions ahead. - Three exact dates appeared only in post-event captures. - One month had no captured schedule. - Every formal announcement arrived only two to four XNYS sessions before auction. Decision: `IDENTITY_NOT_OBSERVABLE_AS_PREREGISTERED`. More searching cannot turn a documented tentative-date revision into exact T-10 knowledge. The family may not proceed to return testing unless a new point-in-time schedule-revision state machine is registered with explicit cancel, roll, late-announcement, and missing-update behavior. Otherwise the ten-session identity must be retired. This is a lineage redesign, not permission to shorten the entry horizon after seeing returns. The sealed machine-readable result is published at `/glassbox/treasury_tentative_schedule_audit.json`; the archive-only audit is published at `/glassbox/treasury_wayback_schedule_audit.json`, and the PDF audit at `/glassbox/treasury_wayback_pdf_schedule_audit.json`. The revision classification is published at `/glassbox/treasury_calendar_revision_audit.json`. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/research/treasury-auction-state-machine ------------------------------------------------------------------------------ # Treasury auction concession: point-in-time schedule state machine **Prepared:** 2026-08-26 **Stage:** no-price, no-return identity redesign **Family trial account:** `treasury_auction_concession` **Author technical approval:** not yet recorded **Return execution authorized:** no ## Why the identity needs a state machine The original literature identity enters a relative-value position ten XNYS sessions before each fixed-rate 2-year Treasury auction, reverses after the auction, and exits ten sessions later. That clock is not observable from formal auction announcements alone. The sealed archive audit proves 145 of 156 auction dates at least ten sessions ahead, but it also preserves five tentative-date changes, two late exact captures, three post-event exact captures, and one missing month. A historical test cannot replace those states with the final auction calendar. This protocol keeps the economic direction and ten-session windows fixed while declaring how an implementable process would react to the calendar information available at each decision time. This document does not select prices, load returns, claim a premium, or admit a sleeve. It prepares one identity for Arhan Canli's technical review. ## Frozen event and decision clock - Eligible event: nominal, fixed-rate 2-year US Treasury note auction. - Research interval: 2013-01-01 through 2025-12-31 for the sealed historical audit. - Trading calendar: XNYS sessions. The eventual instrument calendar and execution timestamps must be bound separately in the return preregistration. - Tentative entry: XNYS close ten sessions before the latest authoritative tentative auction date observable by that close. - Formal confirmation: the official Treasury auction announcement date. - Auction confirmation: the official auction occurrence and result publication. - Post entry: XNYS close on the confirmed auction date, after the 1 p.m. auction. - Post exit: XNYS close ten sessions after the confirmed auction date. - Price, return, P&L, Sharpe, drawdown, and portfolio-correlation fields are prohibited here. The state machine does not infer when an archive document was originally published. Historical knowability uses only a sealed official release date or a Wayback capture timestamp. A capture is an upper bound on when a date was observable, never evidence that it was known earlier. ## Position identity carried forward The state machine changes only the event clock. It does not alter the literature direction: 1. The pre-auction leg is the locked short on-the-run 2-year note position against the declared duration-matched 6-month-bill and 10-year-note hedge. 2. The post-auction leg is the locked opposite relative-value position. 3. No missing or revised schedule permits an inverted sign, a shorter substitute window, an ETF directional proxy, or a different maturity. 4. Exact instruments, hedge ratios, rolls, timestamps, commissions, bid/ask costs, market impact, and margin remain mandatory fields in the later return preregistration. ## States `UNOBSERVED` : No usable tentative date is known. No pre-auction position is allowed. `TENTATIVE_ARMED` : A fixed-rate 2-year date is source-bound at least ten XNYS sessions ahead. The T−10 entry is scheduled but no position exists. `PRE_ACTIVE` : The locked pre-auction leg was entered at the scheduled T−10 close. `REARMED` : An authoritative schedule update changed the date before entry and the replacement date still has at least ten sessions of lead. The old entry is cancelled and a new T−10 entry is scheduled. `PRE_CANCELLED` : A date changed or an auction was cancelled after entry. The pre leg exits at the next XNYS close; the strategy never holds it merely because the original tentative date was convenient. `POST_ONLY` : The exact date arrived with fewer than ten sessions of lead, after the event, or without a usable tentative schedule. The pre leg is skipped. A post leg remains possible only after the auction is formally confirmed and occurs. `CONFIRMED` : The official announcement confirms the date. If the pre leg is active and unchanged, it remains active through the auction-day close. `POST_ACTIVE` : The confirmed auction occurred. The pre leg, if any, is closed and the opposite post leg is entered at the auction-day close. `CLOSED` : The post leg exits at T+10. Event attribution and all costs remain attached to that event identity. ## Transition rules | Current state | Point-in-time event | Required action | Next state | | --- | --- | --- | --- | | `UNOBSERVED` | Usable tentative date with at least ten sessions of lead | Schedule the exact T−10 close | `TENTATIVE_ARMED` | | `UNOBSERVED` | Formal announcement with fewer than ten sessions of lead | Do not chase the pre leg | `POST_ONLY` | | `TENTATIVE_ARMED` | T−10 close arrives with no conflicting update | Enter the locked pre leg | `PRE_ACTIVE` | | `TENTATIVE_ARMED` | Date changes and replacement still has ten sessions | Cancel old entry and schedule the replacement | `REARMED` | | `TENTATIVE_ARMED` | Date changes with fewer than ten sessions remaining | Cancel the old entry; do not enter late | `POST_ONLY` | | `PRE_ACTIVE` | Date changes or auction is cancelled | Exit at the next XNYS close; never invert | `PRE_CANCELLED` | | `PRE_CANCELLED` | Replacement date later becomes observable with ten sessions | A fresh pre entry is allowed only at its exact T−10 close | `REARMED` | | `PRE_CANCELLED` | Replacement remains late | No replacement pre leg | `POST_ONLY` | | `PRE_ACTIVE` | Formal announcement confirms the same date | Keep the pre leg through auction-day close | `CONFIRMED` | | any pre state | No official announcement by the auction-day decision cutoff | Exit or remain flat; no post leg | `CLOSED` | | `CONFIRMED` or `POST_ONLY` | Auction occurs and the official result is published | Enter the locked post leg at the XNYS close | `POST_ACTIVE` | | `POST_ACTIVE` | T+10 close | Exit | `CLOSED` | An announcement or update without an intraday publication timestamp is treated conservatively as actionable at the next XNYS close. A replacement pre leg is never backdated. ## Revisions in the sealed 2013–2025 panel The five known tentative-date changes receive deterministic treatment: - Four dates had already crossed their tentative T−10 entry before the formal revision. Their pre legs are cancelled at the next XNYS close and are not re-opened because fewer than ten sessions remain before the confirmed date. - One revision was announced before the tentative T−10 entry. Its stale entry is cancelled and the event becomes post-only because the confirmed date is already inside T−10. - The two late exact captures, three post-event captures, and one missing month are also post-only. - The remaining 145 events use the exact source-bound tentative date and can follow the complete pre-and-post path. These classifications are inputs, not performance-based exclusions. Every skipped or shortened pre leg remains in the event ledger. ## Overlap policy Monthly T−10/T+10 windows can overlap. No event is dropped because a neighboring event exists. Each event retains its own state and gross target. The later execution preregistration must aggregate simultaneous targets into one net order while preserving event-level theoretical legs, realized fills, allocated fees, and any cancellation. It may not keep only the more profitable attribution. ## Fail-closed conditions The event closes without a post leg if the auction is cancelled, the official announcement or result cannot be source-bound by the decision cutoff, the auction date is not a valid declared trading session, or the relevant instrument cannot be traded under the frozen execution contract. Missing records are never replaced by the final calendar. ## Technical gates The no-return audit passes only when: 1. All 156 sealed events map to exactly one state path. 2. The 145 exact-date proofs and 11 unresolved-date classifications reconcile to the source audits. 3. Every tentative entry, cancellation session, auction-day transition, and T+10 exit is deterministic under the XNYS calendar. 4. Revised, late, post-event, and missing schedules have explicit behavior. 5. Overlap handling and event-level attribution are declared. 6. No source input contains market prices or returns. 7. Return data opened and return hypotheses spent remain zero. 8. The protocol and every source artifact are SHA-256 bound. Passing these technical gates means only that the calendar identity is executable without final-date hindsight. The candidate remains `identity-redesign-required` until Arhan records technical approval. Even after approval, a separate checksum-bound return preregistration is required before any market data is opened. ## Approval boundary Prepared for review; not approved. Arhan must independently confirm the position identity, decision timing, cancellation rule, post-only treatment, overlap accounting, and kill conditions. Automation may test and package this protocol but may not supply that approval or authorize a return run. ============================================================================== ARCHIVED WORKING PAPERS: 16 ABSTRACTS ============================================================================== Preprints, not peer reviewed, with no DOI and no independent replication. Each paper is byte-preserved and its checksums are published beside it. The abstract is reproduced here; the body is not, because a copy of it in this file would not hash to the checksum the bundle publishes, and an uncheckable copy of a document whose whole point is that it is checkable is worse than a link. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/crypto-carry/v0.1.0 ------------------------------------------------------------------------------ # Crypto Perpetual Carry: Trial Lineage, Capacity Failure, and Live Evidence Boundary Published 2026-08-23. Paper: https://canlicapital.com/publication/crypto-carry/v0.1.0/paper . PDF: https://canlicapital.com/publication/crypto-carry/v0.1.0/paper.pdf AlphaForge studies cross-sectional carry in USDT-margined perpetual futures, ranking contracts by the negative trailing mean of observed funding: expensive longs rank as shorts and negative-funding contracts as longs. This paper reconciles all 25 charged hypothesis identities. The historical `carry_fund_21` walk-forward grew a simulated $100,000 to $138,236.27 from 2022-02-08 through 2026-06-01, with Sharpe 0.6766 and maximum drawdown 19.60%, but failed its DSR gate. A later eight-configuration matrix reported PBO 0.8818, no deflated winner, and a capacity sweep context rather than carry capacity; the sole carry-tilted arm had Sharpe 0.0618. An exact-timestamp current-state replay on 2026-08-23 does not reproduce the selection: final equity is $103,335.16, Sharpe 0.1065, and maximum drawdown 20.98%. At the first decision, the historical 22 names included EOS while the current 21 did not; restoring EOS reproduces all ten historical order quantities. A zero-trial audit binds every surviving ledger: overlapping prices, position and funding marks, and funding rates agree, but holdings and state paths diverge. Because the historical run sealed neither its exact code nor derived-input snapshots, a unique additive attribution of the multi-year gap is structurally unidentifiable. Prospective private snapshots are now enforced but cannot repair that omission. The material correction therefore remains open and external submission is blocked. The forward record is weaker: AlphaForge is a local simulated paper broker, not an Alpaca account or externally attested record. Its first configuration was signal-dead; funding cashflows were omitted until a forward-only repair; fewer than half of intended hourly cycles completed; and the stored universe remains frozen at 2026-06-01. Crypto carry is therefore an incumbent experiment with a plausible mechanism, severe selection and capacity evidence, known operational defects, and an unmet forward burden of proof, not a validated sleeve. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/alphamax/v0.1.0 ------------------------------------------------------------------------------ # Equity Momentum Under Complete Trial Accounting: A Selected Survivor and Failed Deep-History Replication Published 2026-08-23. Paper: https://canlicapital.com/publication/alphamax/v0.1.0/paper . PDF: https://canlicapital.com/publication/alphamax/v0.1.0/paper.pdf AlphaMax is ALPHAC's US-equity long/short momentum program. Its canonical signal is 12-minus-1 cross-sectional momentum: rank securities by split-adjusted return from approximately twelve months ago through one month ago, then hold a dollar-neutral long/short portfolio. This paper does not present a single favourable backtest as proof. It reconciles the entire charged family: 115 distinct hypothesis identities recorded from 2026-06-20 through 2026-08-17 across the primary and Sharadar research ledgers. The evidence is deliberately uncomfortable. A frozen 2023–2026 construction reported net Sharpe 0.91 and maximum drawdown 8.68% in the persisted deployed-path artifact. The later, preregistered 2005–2026 replication reported net Sharpe approximately -0.05 and a drawdown exceeding one third, failing its DSR and return gates. Construction studies did not rescue the family: a 4-by-4 weighting and breadth grid failed its family-wise Reality Check, and beta-neutral, volatility-scaling, and short-tail modifications were not adopted. The correct claim is therefore not “momentum is proven.” It is that AlphaMax is a live paper research sleeve with a plausible mechanism, a selected short-window survivor, a failed deep-history replication, and an explicit forward burden of proof. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/alphatrend/v0.1.0 ------------------------------------------------------------------------------ # Managed-Futures Trend as an Unresolved Diversifier: Complete Trial Lineage and Forward Burden of Proof Published 2026-08-23. Paper: https://canlicapital.com/publication/alphatrend/v0.1.0/paper . PDF: https://canlicapital.com/publication/alphatrend/v0.1.0/paper.pdf AlphaTrend is ALPHAC's managed-futures trend program. It takes volatility-normalized directional positions from medium- and long-horizon price trends across liquid exchange-traded market proxies, then combines them under a covariance-aware risk budget. This paper reconciles all 21 charged hypothesis identities in the family rather than presenting the strongest backtest alone. The result is promising as a diversifier but statistically unresolved. Nineteen identities have finite Sharpe estimates ranging from -0.238 to +0.345. Six identities retain complete walk-forward artifacts, seven retain source-bound summary reports, and eight retain immutable ledger summaries without full curves. Thirteen have persisted artifact-era DSR values; zero clear the 0.95 gate. The 17-market baseline had Sharpe 0.289 and 9.69% vol-matched maximum drawdown in a replica screen. Correlation whitening reduced Sharpe to 0.186, a single 110-session signal reached 0.271, and expanding to 33 ETFs reduced Sharpe to 0.128 while worsening vol-matched drawdown to 14.42%. AlphaTrend remains a paper evidence-collection sleeve, not an established forward result. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/alphavintage/v1.0.0 ------------------------------------------------------------------------------ # Point-in-Time Inflation Surprise and the Equity Size Spread: A Corrected Null, a Deployment-Governance Failure, and a Frozen Forward Experiment Published 2026-08-23. Paper: https://canlicapital.com/publication/alphavintage/v1.0.0/paper . PDF: https://canlicapital.com/publication/alphavintage/v1.0.0/paper.pdf A point-in-time CPI-surprise IWM-minus-SPY strategy appeared to pass its locked rules, but missing-release and active-day calendar defects invalidated that reading. A sealed, untuned correction produced net Sharpe 0.2298, Newey-West t 1.2673 and maximum drawdown -25.1%, so the result is KILLED. The separately labelled Alpaca paper sleeve remains a frozen forward experiment rather than validated alpha. Claim boundary: This release is a preparation bundle, not an external submission. It establishes no funded performance, DOI, peer review, citation, independent replication, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/crypto-defensive/v0.1.0 ------------------------------------------------------------------------------ # Crypto Defensive Factors: Two Positive Summaries Without Admission Evidence Published 2026-08-23. Paper: https://canlicapital.com/publication/crypto-defensive/v0.1.0/paper . PDF: https://canlicapital.com/publication/crypto-defensive/v0.1.0/paper.pdf This record reconciles two cross-sectional defensive-factor identities in crypto perpetual futures: 720-hour low beta and 720-hour low realized volatility. The immutable ledger summaries report annualized Sharpe ratios of 0.6295 and 0.6946 over 1,247 observations. Those are positive historical summaries, but they are not admission results. Neither identity retains a complete identity-matched curve, maximum drawdown, current-union deflated Sharpe ratio, capacity study, or broker-reconciled forward record. A later low-volatility reopening reproduced a lower Sharpe of 0.5229 and passed four diversification diagnostics, but its venue-reality gate remained outstanding and its DSR remained 0.04. The family therefore contributes zero sleeves. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/crypto-momentum/v0.1.0 ------------------------------------------------------------------------------ # Crypto Momentum: Complete Trial Lineage and Failed Sleeve-Admission Evidence Published 2026-08-23. Paper: https://canlicapital.com/publication/crypto-momentum/v0.1.0/paper . PDF: https://canlicapital.com/publication/crypto-momentum/v0.1.0/paper.pdf AlphaForge tested cross-sectional and time-series momentum in perpetual-futures prices. This paper reconciles all 18 charged crypto-momentum hypothesis identities recorded from 2026-06-20 through 2026-06-25. The best persisted result, a 21-day time-series momentum signal rebalanced weekly, had annualized Sharpe 0.4863, total return 26.83%, and maximum drawdown 17.02% from 2022-02-08 through 2026-06-01. Its artifact-era Deflated Sharpe Ratio was only 0.0684. The worst result, a seven-day cross-sectional signal rebalanced daily, had Sharpe -1.1690, total return -42.39%, and maximum drawdown 50.64%. All 18 artifacts failed their recorded DSR gate. A separate 2021–2026 diagnostic combined three momentum signals and measured Sharpe 0.0780. Its full-sample correlation with a carry diagnostic was +0.0444 and stress correlation was negative, but the combined Sharpe was only 0.0556 and even the reported decorrelated ceiling was 0.1206. Diversification without standalone edge does not earn a sleeve slot. No persisted momentum capacity sweep exists. This family is research-only: it is not validated, admitted, live, or part of an Alpaca paper account. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/crypto-multifactor-engine/v0.1.0 ------------------------------------------------------------------------------ # Crypto Multi-Factor Engine: Seven Trials, Capacity Decay, and No-Deploy Verdict Published 2026-08-23. Paper: https://canlicapital.com/publication/crypto-multifactor-engine/v0.1.0/paper . PDF: https://canlicapital.com/publication/crypto-multifactor-engine/v0.1.0/paper.pdf AlphaForge ran a historical robustness matrix over crypto perpetual futures from 2021-01-01 through 2026-06-01. Seven charged identities belong to the broad multi-factor engine: a baseline rank allocator; ML, regime, and combined overlays; daily rebalancing; a tighter no-trade band; and mean-variance allocation. An eighth matrix identity explicitly selected carry and residual reversal and is accounted for in the separate `crypto_carry` family. None of the seven engine identities cleared its artifact-era DSR gate. Annualized Sharpe ranged from -0.7901 to +0.0424 and maximum drawdown from 13.59% to 33.93%. The four baseline/overlay arms all produced the same Sharpe 0.0424 and DSR 0.2112. Cross-sectional combinatorially symmetric validation across all eight matrix trials reported PBO 0.8818 against a gate below 0.20 and no deflated winner. The matrix verdict was **NO-DEPLOY**. A capital sweep on the regime-gated engine showed Sharpe 0.4009 at $100,000, 0.0424 at $1 million, and -0.3720 at $10 million under the committed impact model. This is useful capacity-failure evidence, not a promise that the $100,000 result is repeatable. The family has no admitted sleeve and no broker-reconciled forward record. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/crypto-reversal/v0.1.0 ------------------------------------------------------------------------------ # Crypto Short-Horizon Reversal: Two Decisive Negative Trials Published 2026-08-23. Paper: https://canlicapital.com/publication/crypto-reversal/v0.1.0/paper . PDF: https://canlicapital.com/publication/crypto-reversal/v0.1.0/paper.pdf Two historical identities test whether crypto perpetual-futures returns reverse after common movement is removed. One uses a 24-hour residual signal; the other combines 24- and 72-hour residuals. Both are strongly negative in the implemented direction. Their immutable annualized Sharpe summaries are -2.1527 and -2.1140 across 1,574 observations. The result rejects the tested reversal rule, but it does not automatically establish the opposite momentum trade. Exact curves, maximum drawdowns, costs, funding attribution, and current-union DSR are not preserved at the family level. The family contributes zero sleeves and remains in the trial union as a negative result. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/crypto-vrp/v0.1.0 ------------------------------------------------------------------------------ # Crypto Volatility Risk Premium: One Proxy Trial and a Published Null Published 2026-08-23. Paper: https://canlicapital.com/publication/crypto-vrp/v0.1.0/paper . PDF: https://canlicapital.com/publication/crypto-vrp/v0.1.0/paper.pdf AlphaForge tested one preregistered BTC/ETH volatility-risk-premium timing rule from 2021-03-24 through 2026-06-01. It compared Deribit DVOL closes with a seven-day Yang–Zhang realized- volatility estimate, entered only when the spread exceeded two volatility points, charged 10 basis points on signal turnover, and evaluated 1,492 expanding-window out-of-sample days after a 365-day warmup. The proxy produced annualized Sharpe -0.633, Deflated Sharpe Ratio 0.000, PSR 0.066, skew -9.517, and raw kurtosis 132.65. It failed. The diagnostic also illustrates why average variance premium is not timing alpha. BTC's mean DVOL-minus-realized spread was +0.044 and positive on 72.99% of days; an always-short variance proxy showed Sharpe 2.4818 but skew -5.4874. ETH's corresponding always-short proxy showed Sharpe 0.5309 and skew -10.6795. Those attractive averages coexist with catastrophic left tails. This family is not a sleeve, is not in an Alpaca account, and has no broker-reconciled forward record. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/energy-inventory/v0.1.0 ------------------------------------------------------------------------------ # Petroleum Inventory Scarcity: One Negative Macro-Commodity Identity Published 2026-08-23. Paper: https://canlicapital.com/publication/energy-inventory/v0.1.0/paper . PDF: https://canlicapital.com/publication/energy-inventory/v0.1.0/paper.pdf This study tests one preregistered implementation of petroleum-inventory scarcity using EIA first-release data and liquid exchange-traded energy proxies. The signal enters on the next market open after release, normalizes inventory surprises against five years of seasonal history, and hedges trailing DBC beta. Over 2,669 immutable ledger observations, annualized Sharpe was -0.5893, skew was -1.5157, and kurtosis was 30.2245. The fuller probe measured net Sharpe -0.5892, Newey-West t-statistic -1.8450, DSR effectively zero, and maximum drawdown of 41.05%. It passed exposure and correlation checks but failed the return, robustness, product-consistency, portfolio, and capacity gates. The verdict is KILL and the family contributes zero sleeves. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/equity-insider-activity/v0.1.0 ------------------------------------------------------------------------------ # Clustered Insider Purchases: Two Negative Event-Information Trials Published 2026-08-23. Paper: https://canlicapital.com/publication/equity-insider-activity/v0.1.0/paper . PDF: https://canlicapital.com/publication/equity-insider-activity/v0.1.0/paper.pdf This record examines whether clustered open-market purchases by corporate insiders predict issuer returns after a realistic filing delay. Two immutable identities are charged because the return aggregation was corrected before publication. The preliminary implementation produced annualized Sharpe -0.9931; the corrected first measurement produced -0.2433 over 2,669 observations. A later replay on an advanced input snapshot measured Sharpe -0.2315 over 2,674 observations, Newey-West t-statistic -0.7490, DSR 1.83e-7, and maximum drawdown 24.84%. The strategy had low correlation with the existing book but reduced observed book Sharpe at a 10% weight. Six of twelve preregistered research checks passed. The verdict is KILL and the family contributes zero sleeves. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/equity-low-beta/v0.1.0 ------------------------------------------------------------------------------ # Equity Low Beta: Two Negative Identities and No Defensive Sleeve Published 2026-08-23. Paper: https://canlicapital.com/publication/equity-low-beta/v0.1.0/paper . PDF: https://canlicapital.com/publication/equity-low-beta/v0.1.0/paper.pdf Two historical identities test a 252-session equity beta rank. The implemented portfolio seeks a long-low-beta, short-high-beta spread under rank allocation. The shorter configuration reports annualized Sharpe -0.5995 over 728 observations. A deep-history configuration reports -0.0679 over 5,384 observations, with skew 8.2898 and kurtosis 311.7071. Neither estimate supports a defensive sleeve. The extreme higher moments in the longer summary also make a curve-level audit mandatory; they are not treated as evidence of an attractive positive tail. Exact curves, maximum drawdown, current-union DSR, capacity, and forward execution are not established. The family contributes zero sleeves. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/equity-narrative-change/v0.1.0 ------------------------------------------------------------------------------ # Annual Risk-Factor Narrative Stability: A Preregistered Null Published 2026-08-23. Paper: https://canlicapital.com/publication/equity-narrative-change/v0.1.0/paper . PDF: https://canlicapital.com/publication/equity-narrative-change/v0.1.0/paper.pdf ALPHAC preregistered one test of annual 10-K Item 1A narrative stability before opening the 2016–2025 return window. The locked strategy bought issuers with stable disclosures and sold issuers with changed disclosures after controlling for filing reaction, momentum, and filing-time industry. Across 2,514 observations, net Sharpe was -0.0074, DSR 0.0000114, Newey–West t-stat -0.0242, and maximum drawdown -28.47%. Twelve of 20 research gates passed, but the return, DSR, stress-cost, short-leg, capacity, mean-zero book-delta, and expected-shortfall gates failed. The sealed verdict is **KILL**. No sleeve was admitted. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/equity-quality/v0.1.0 ------------------------------------------------------------------------------ # Equity Fundamental Quality: Eleven Identities and No Validated Sleeve Published 2026-08-23. Paper: https://canlicapital.com/publication/equity-quality/v0.1.0/paper . PDF: https://canlicapital.com/publication/equity-quality/v0.1.0/paper.pdf ALPHAC recorded 11 distinct equity-quality return identities spanning gross profitability, operating margin, return on equity, a quality composite, and a growth/profitability/earnings quality composite. Immutable annualized Sharpe measurements range from -0.8316 to +0.7643. Nine of 11 are negative. The two positives are both operating-margin variants over the shortest 2022–2026 history; the same signal over 2000–2026 is -0.4174. No family-wide persisted curves, drawdowns, DSR values, capacity sweep, or broker-reconciled forward record survive for these identities. The correct status is research-only, not a validated sleeve. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/equity-value-investment/v0.1.0 ------------------------------------------------------------------------------ # Equity Value, Issuance, and Investment: Thirteen Identities and Unstable Evidence Published 2026-08-23. Paper: https://canlicapital.com/publication/equity-value-investment/v0.1.0/paper . PDF: https://canlicapital.com/publication/equity-value-investment/v0.1.0/paper.pdf ALPHAC recorded 13 equity value/investment identities: book-to-price, earnings yield, sales-to-price, accruals, asset growth, net issuance, investment-to-revenue, a value composite, and 52-week-high context. Eleven have finite immutable Sharpe measurements ranging from -0.9676 to +0.8276; nine of those 11 are negative. Accruals and one net-issuance run are non-finite. Asset growth flips from -0.6858 over 2018–2021 to +0.8276 over 2000–2026, while both book-to-price runs are negative. This is specification and data-instability evidence, not a validated return family. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return. ------------------------------------------------------------------------------ SOURCE: https://canlicapital.com/publication/macro-economic-trend/v0.1.0 ------------------------------------------------------------------------------ # Point-in-Time Macroeconomic Trend: Seven Identities Without a Validated Sleeve Published 2026-08-23. Paper: https://canlicapital.com/publication/macro-economic-trend/v0.1.0/paper . PDF: https://canlicapital.com/publication/macro-economic-trend/v0.1.0/paper.pdf ALPHAC evaluates seven immutable identities spanning an economic-trend engine, CPI-surprise sizing, and point-in-time macro-vintage variants. Persisted historical summaries range from -0.2981 to +0.3403, but the +0.3403 value is withdrawn because its active-day calendar omitted zero-exposure sessions. The calendar-corrected result is +0.2298 with Newey-West t 1.267 and a `KILLED` verdict. The withdrawn row remains in the lineage as a superseded measurement. The economic premise is that slowly updating growth and inflation information may forecast liquid cross-asset returns. Revised releases create a direct look-ahead hazard, so only vintages available at each decision are admissible. The seven identities share macro information and constitute one research family, not seven independent sleeves; they may also overlap managed-futures trend. Current evidence is summary-level rather than a complete curve, DSR, capacity, drawdown, and crisis correlation packet. The decision is therefore **zero validated sleeves**. A related AlphaVintage Alpaca paper experiment does not reverse that research decision and is neither funded nor independently attested. Future admission requires one frozen vintage-safe configuration, current-union deflation, full risk and capacity evidence, and forward execution. Claim boundary: This is an incomplete preparation bundle. It proves no external submission, DOI, peer review, independent replication, funded performance, or future return.