Nine Dimensions of N/A: The Most Honest Research Report I Read This Quarter

Credtoshi β€’ β€’ Bitcoin

Hook

Last week I received an analytical artifact that contained no analysis. It arrived formatted as a report: a header block, a nine-dimension framework, a scoring column. Every cell in that column read N/A. Seven input fields β€” title, source, information points, named protocols, domain tags, time-sensitivity, core claims β€” came back either empty or explicitly unclassified. The information-point array was not thin, not preliminary, not "pending verification." It was []. An empty array.

The author's conclusion was a refusal, stated plainly: with no payload, there is no chain from evidence to conclusion, therefore no report. Manufacturing one would violate the evidence standard.

I read it three times. It is the most useful piece of crypto research I have seen this quarter, and it contains zero information about any protocol.

This is not a joke, and it is not a rhetorical flourish. In a bear market, the single most valuable output an analyst can produce is a verified null β€” a documented statement that the subject cannot be evaluated because the payload required to evaluate it does not exist. Almost nobody produces them. The entire research economy is built to prevent them. That is the subject of this article.

Context

Crypto research has a supply problem that looks like a demand problem. The demand is for certainty. The supply is whatever can be formatted to resemble certainty at the lowest possible cost per page. Between those two things sits a verification gap that widens in bear markets, because bear markets are when the cost of being wrong is highest and the budget for being right is lowest.

I have been on both sides of that gap. In 2017, while working as a quantitative analyst in Chengdu, I spent six weeks reversing the bonding-curve logic of an AMM prototype that later became Uniswap. I found three integer-overflow vectors before token launch, published the report to GitHub, and watched it pick up roughly 400 stars. The deliverable was not a thesis. It was a list of line numbers and a reproduction path. Nobody asked me for a price target, because at that stage nobody had a position to defend.

That changed fast. By the time the liquidity mining scripts came around and the founders commissioned me to verify them, the same community that had rewarded a bug report now wanted something different: narrative. Which pool, what APR, how long does it last. My GitHub report on the mining scripts got fewer reads than a single tweet claiming an annualized yield with no denominator attached.

The lesson I took from that cycle is the one I still trade on: the market pays for conclusions and discounts for verification, which means the verification is systematically under-produced relative to its actual value. Every cycle since has re-run the experiment. 2020, DeFi Summer, I ran $50,000 of my own capital through Curve stablecoin pools against Uniswap, harvesting spread inefficiency for a 340% three-month return, then gave a chunk back when the peg drifted and impermanent loss stopped being a theoretical line item and started being my money. 2021, I swept a generative art floor with bots, $120,000 for 150 pieces, held two weeks, and ate a 70% liquidation when the lead developer walked off the roadmap. 2022, I shorted LUNA futures at 10x into the de-peg and made $450,000 in 48 hours, then lost 20% of it to withdrawal freezes on smaller venues. 2024, I stopped being a gambler and ran a market-neutral basis trade between spot Bitcoin ETFs and CME futures, $200,000 collateral, six months, 12% annualized, low volatility.

Five cycles. One consistent finding: the losses were never analytical failures. They were evidence failures. Every dollar I have lost in this industry was lost because I accepted a field that was filled in when it should have been marked empty.

The floor sweep in 2021 is the cleanest example. I had on-chain data. I had a floor price. I had a supply schedule. What I did not have was any verifiable evidence that the roadmap existed as anything other than a Google Doc. The developer dimension of my own internal framework should have read N/A, and instead I let it read "promising." That single substituted field cost me roughly $84,000 net.

Since then I have run a nine-dimension checklist on everything. Technical layer and security assumptions. Token economics. Market positioning and funding. Ecosystem dependencies. Regulatory exposure. Team and governance. Risk matrix. Narrative stage. Contagion path. Nine dimensions, each requiring a specific evidence class. When a dimension has no evidence, it gets N/A. Not "unclear." Not "monitor." N/A, with a note explaining which specific artifact was missing.

The report I received last week did this correctly, at the level of the entire subject rather than a single dimension. And in doing so it exposed something the industry does not want to look at directly.

Core

The code doesn't lie. The people who report on it do, usually by filling in a field they had no business filling in.

Consider what the null payload actually consists of. Seven fields, and each one is a load-bearing beam. Without a title or source, you cannot verify the claim or infer the claimant's position β€” you have no idea whether the document is a primary disclosure, a secondary summary, or someone's recollection of a podcast. Without an information-point list, there is no evidence chain, and all nine analytical dimensions lose their anchor simultaneously because every dimension is a question asked of a specific fact. Without named protocols, you cannot identify the subject, which means token economics, team, and regulatory exposure have no object to attach to. Without domain classification, you cannot even confirm the material is in scope β€” the framework may not apply. Without time-sensitivity assessment, you cannot place the claim in a narrative cycle or judge how much of it is already priced.

That last one is the one retail traders underestimate most. A true statement at the wrong point in the cycle is a false signal. The 2024 ETF approval was true, verifiable, and priced within about 40 minutes of the headline. Anyone who read it as a buy signal six weeks later was not working with bad data. They were working with good data attached to a missing timeliness field.

So the null payload is not one gap. It is a gap that propagates. One missing array collapses nine dimensions. This is why the honest response is total refusal rather than partial confidence, and why partial confidence is the actual industry default. A report with six filled dimensions and three N/As looks incomplete and doesn't sell. A report with nine fields all filled with directional language looks authoritative and does. The market pays for the second one. That is the whole mechanism.

Now look at how the filling happens in practice, because it is not usually fraud. It is usually a defensible-sounding substitution.

Take interest rate models. Aave and Compound publish utilization curves with kink parameters set by governance. Those parameters are legible, documented, and appear in every risk dashboard. What they are not is a discovery mechanism. The borrow rate at a given utilization is an administrative choice by token holders, not an aggregation of lender time preference and borrower demand clearing in a market. When you see a report that lists "supply APY 4.2%, borrow APR 6.1%" as market data, you are reading a governance output dressed as a price. The dimension was not empty β€” a number exists β€” but the number does not answer the question the dimension asks. It answers "what did the parameter set to," not "what is the marginal cost of liquidity." Those diverge most violently exactly when it matters, in a stress event, when utilization pins to the kink and the rate stops being informative and starts being a queue position.

The same substitution runs through TVL. Aggregate value locked is a countable number, so it gets counted, and it gets reported, and it gets compared across chains. What it does not measure is depth. Liquidity is a river, not a pond β€” what matters is how much can exit at what slippage over what time, not how much is sitting still. I can show you two pools with identical TVL where one absorbs a $2 million market sell at 40 basis points and the other gaps 900 basis points because 80% of the deposit is one address that will move as a single block. Same number. Different river.

And the Layer 2 problem compounds it. Dozens of rollups now publish TVL figures that sum to a number larger than the capital actually deployed, because the same wallet bridging the same USDC to four chains appears four times. That is not scaling. That is slicing an already-thin book into fragments and then reporting the fragments as if they were depth. Fragmentation is the opposite of liquidity: it widens spreads, it makes routing more expensive, and it multiplies the number of venues that each individually lack the depth to absorb a real order.

Bitcoin's inscription experiments follow the same pattern in a different unit. BRC-20 and Runes consume block space, and block space is the scarcest, most honestly priced resource in the entire industry β€” you cannot fake it, you pay for it in fees, and the fee is visible. But look at what is being purchased per byte. Using a settlement layer engineered for high-value, low-frequency transfer to store JSON-like payloads is using a Rolls-Royce to haul cargo: it insults the car and the load is small. The metric that would resolve this is cost per byte of durable utility, and almost nobody publishes it, because published in that unit the trade looks exactly as bad as it is.

So here is the verification ladder I actually use, and it starts below the level where most research begins.

Rung one: contract address. Not the ticker, not the logo, not the CoinGecko page. The address. If a report cannot give you one, every subsequent claim is unfalsifiable. Rung two: bytecode and verification status on the relevant explorer, plus whether the deployed bytecode matches the audited commit. An audit of a commit that never shipped is a document about a different program. Rung three: event logs. Who actually moved the tokens, from where, to where, and does the transfer history match the claimed distribution. Rung four: liquidity depth at executable prices, measured by simulating the trade you would actually make, not by reading the reserves. Rung five: counterparty solvency and withdrawal latency, which is a different question from price and is the one that ends careers.

I will give you one concrete anchor, because abstraction is how the filling happens. WETH at 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, USDC at 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, the Curve 3pool at 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7. Those three addresses are enough to reconstruct a real depth curve for the largest stablecoin pair on Ethereum, and you can do it yourself in an afternoon with an archive node and a forked state. The reason people don't is not technical difficulty. It is that the answer is boring and the answer is small, and a small boring answer does not generate engagement.

There is a fourth thing the ladder exposes, which is cost-to-execute. Gas is the only line item in this industry that is quoted by the machine rather than by a human. When I audited those mining scripts in 2017, the thing that struck me was not the logic β€” it was how much of the advertised yield evaporated once you priced the transactions required to claim and restake it. A 40% APR that requires twelve interactions per week at 60 gwei is not a 40% APR. It is a 40% APR minus a number that nobody bothers to compute, and that number is the entire margin for anyone below institutional size.

None of this is exotic. All of it is available. The reason it is not standard is that the null result is not sellable, and the substituted field is.

Contrarian

Here is the counter-intuitive part, and it is the part I would have argued against five years ago.

The industry treats a null result as an analyst failure. The framework returned N/A, so the framework failed. That reading is backwards. A framework that can return N/A on nine dimensions is a working framework. A framework that always returns nine filled dimensions is a decoration.

I learned this the expensive way. Every loss in my history corresponds to a field I filled in without evidence. The NFT floor sweep: developer-commitment dimension filled with "promising" instead of N/A. The LUNA aftermath: exchange-solvency dimension filled with "probably fine" instead of N/A. The impermanent loss on Curve: peg-stability dimension filled with a historical chart instead of a conditional stress model. In all three cases, the honest output was a null, and the null was available for free at the time.

What makes this contrarian rather than merely prudent is the second-order effect. Projects that can survive a clean null are structurally different from projects that cannot. If a team publishes a treasury address, a vesting contract, and an unlock schedule that reconciles against on-chain transfers, they have passed a test that costs them something to pass. If a team publishes a blog post about "long-term alignment," they have passed nothing, because that sentence cannot fail. The ability to be falsified is the only signal in this market that retains value across cycles, and it is precisely what the null-result discipline measures.

Which brings me to the uncomfortable part. Retail does not want nulls. Retail wants a number, because a number is a decision and a decision is relief. Volatility is just interest for the impatient, and the research industry is the lender β€” it sells you certainty now and collects the principal later, when the field you accepted as filled turns out to have been empty the whole time. Floor sweeps happen; rug pulls are a choice. So is a research report.

Takeaway

The next time someone hands you a nine-dimension report with every cell filled, ask one question: which field would have been N/A if the analyst had been honest, and what did they put there instead?

If they cannot name one, you are not reading analysis. You are reading a loan application with your name on it. The bear market does not reward the analyst who fills the most fields. It rewards the one who knows exactly which fields are empty β€” and prices the position accordingly.

You don't get paid for what you know. You get paid for what you declined to assume.