Workspace IndexDev Notes › The 70% has to be wrong three times in ten

#133PoC

The 70% has to be wrong three times in ten

Accuracy needs a threshold, and a threshold throws away the number you actually act on. A probability is scored by whether it is true as a frequency — and the market price is a free baseline that most forecasting projects never compare themselves against.

Not yet scoped, and it needs no new model — only a log. The agent card already asks an LLM for a probability and compares it to a live order book, so start by persisting three columns per decision: the forecast p, the market's implied probability at the same instant, and the eventual outcome. After enough resolutions, three outputs fall out for free: a reliability diagram (bucket by forecast, plot observed frequency against predicted), a Brier score decomposed into reliability, resolution and uncertainty, and the same Brier computed on the market's price over the identical events. The third one is the whole experiment — a forecaster only has edge if it beats the market's score on the same questions, and everything else is a description of how it fails.

Why

A model that outputs a probability cannot be graded with accuracy, and the substitution is the most common quiet mistake in applied work. Accuracy, precision, recall and F1 all require a threshold: somewhere the 0.63 becomes a yes. That threshold is a decision about costs, not a property of the forecast, and once it is applied the number you actually sized a position with has been discarded. A forecaster that is right 100% of the time on the questions it answers has not demonstrated skill — it has demonstrated that it only answers easy questions.

The correct grade for a probability is a proper scoring rule, meaning one whose expected score is optimised by reporting your true belief. Two are worth knowing. The Brier score is mean squared error on probabilities, it is bounded, and it decomposes cleanly, which is why it is the useful one here. The log score is the only local proper rule, and it punishes confident wrongness without limit — assign 0.001 to something that happens and the score is unbounded. The choice between them is a choice about whether one catastrophic call should dominate the record, and for a trading agent it usually should.

Then the trap, and it is the reason this card is not simply "calibrate your model". Calibration alone is worthless. A forecaster that ignores every question and always reports the base rate is perfectly calibrated — when it says 30%, the thing happens 30% of the time — and it is useless, because it never distinguishes one case from another. Murphy's decomposition of the Brier score names the two halves separately: reliability is whether your stated probabilities match observed frequencies, resolution is whether you push probabilities away from the base rate in the right direction. Calibration without resolution is a thermometer that always reads the seasonal average. Both numbers are needed, and only the decomposition shows which one you lack.

And there is a baseline sitting right there that most projects never use. On a prediction market the price is a probability, produced by everyone else's money, on exactly the questions being forecast, at exactly the moment of the decision. Scoring the agent against the market on identical events costs one extra logged column and settles the only question that matters — not "is the forecaster good" but "is it better than the number that was free". priced-by-the-wrong-thing argues that an instrument can answer a different question than the one being asked; this is the same discipline applied to your own output.

Finally, the reason it is not academic. Position sizing under Kelly is a function of the probability itself, not of a classification. A forecast that is directionally right but systematically overconfident produces bets that are systematically too large, and the account dies while the hit rate looks fine. Miscalibration does not show up as wrong answers. It shows up as the wrong bet size, which is a different failure and a worse one.

How it works

What each score can and cannot see

Metric Needs a threshold Rewards honesty Sees overconfidence Note
Accuracy / F1 Yes No No Discards the magnitude you sized the bet with
AUC No No No Only ranking. A model that outputs p/10 for every p has identical AUC and is unusable
Brier No Yes Yes Bounded, and decomposes into reliability + resolution + uncertainty
Log score No Yes Unboundedly Local; one confident miss can dominate the whole record

The AUC row is the one that catches people. Ranking metrics are invariant to any monotone squashing of the probabilities, so a systematically overconfident model and a well-calibrated one can score identically — and only one of them can be traded.

The decomposition, and why one number is not enough

Brier = reliability − resolution + uncertainty.

  • Uncertainty is a property of the questions, not of you. It is the base-rate variance, and it sets the score you get for saying nothing.
  • Reliability (lower is better) is the calibration term: when you said 0.7, did it happen 70% of the time?
  • Resolution (higher is better) is the skill term: did you move away from the base rate, and correctly?

The always-say-the-base-rate forecaster has perfect reliability and zero resolution, which is exactly the profile of a system that has learned to be safe rather than useful. The opposite profile — high resolution, poor reliability — is the more common one for an LLM asked for a probability: it discriminates cases well and states the odds too confidently. The two failures need opposite fixes, and a single Brier number tells you neither.

The measurement, in the shape this project can actually run

The agent card already produces the input. One decision row is enough:

Column Where it comes from
p_model The forecast the agent acted on
p_market Implied probability from the order book at the same instant
outcome 0 or 1, after resolution

From those three: a reliability diagram, both Brier scores, and their decompositions. The comparison against p_market is the experiment; everything else is diagnostics. And it has an unusual property for a research measurement — it cannot be gamed by picking easier questions, because the baseline gets the same questions.

One honest caveat to state up front: an order book gives a bid-ask spread, not a point probability, and the mid is a convention rather than a truth. On a thin market the spread can be wider than the edge being claimed, so the spread belongs in the log next to the mid — otherwise the comparison silently flatters whichever side of it the agent traded on.

Why this sits in the Future section

It is not a forecasting technique. It is the measurement layer that any probabilistic output needs, and the outputs are multiplying — an LLM asked for a likelihood, a policy's confidence in a grasp, a router deciding whether to escalate. the-harness-not-the-model argues that what you build around a model matters more than the model. Scoring is the part of that harness that tells you whether anything inside it is working, and it is usually the part nobody builds because the model already returns a number that looks like an answer.

← All Dev Notes · Workspace Index · Top ↑

70%는 열 번 중 세 번은 틀려야 한다

정확도는 임계값을 요구하고, 임계값은 실제로 행동의 근거가 되는 숫자를 버립니다. 확률은 빈도로서 맞는지로 채점됩니다 — 그리고 시장가라는 공짜 기준선이 있는데 대부분의 예측 프로젝트는 자기를 거기에 대보지 않습니다.

아직 범위 미정이고, 새 모델이 필요 없습니다 — 로그만 있으면 됩니다. agent 카드는 이미 LLM에 확률을 묻고 그것을 실시간 오더북과 비교합니다. 그러니 결정마다 세 칸을 남기는 것부터: 예측 확률 p, 같은 순간의 시장 내재확률, 그리고 최종 결과. 충분히 결과가 쌓이면 셋이 공짜로 나옵니다 — 신뢰도 다이어그램(예측값으로 구간을 나눠 관측 빈도를 예측 확률에 대해 그림), reliability·resolution·uncertainty 로 분해한 Brier 점수, 그리고 동일 사건에 대해 시장가로 계산한 같은 Brier 점수. 세 번째가 실험의 전부입니다 — 예측자는 같은 질문에서 시장의 점수를 이겨야만 엣지가 있는 것이고, 나머지는 어떻게 지고 있는지에 대한 서술입니다.

확률을 뱉는 모델은 정확도로 채점할 수 없고, 그 치환이 실무에서 가장 흔한 조용한 실수입니다. 정확도·정밀도·재현율·F1 은 전부 임계값을 요구합니다 — 어딘가에서 0.63 이 "예"가 되어야 하죠. 그 임계값은 비용에 대한 결정이지 예측의 속성이 아니고, 그걸 적용하는 순간 실제로 포지션 크기를 정한 그 숫자가 버려집니다. 자기가 답한 질문에서 100% 맞히는 예측자는 실력을 보여준 게 아니라 쉬운 질문만 골랐다는 걸 보여준 것입니다.

확률의 올바른 채점은 proper scoring rule 입니다 — 자기 진짜 믿음을 그대로 보고할 때 기대 점수가 최적이 되는 규칙이죠. 둘만 알면 됩니다. Brier 점수는 확률에 대한 평균제곱오차이고, 유계이며, 깔끔하게 분해됩니다 — 여기서 쓸모 있는 이유가 그 분해입니다. 로그 점수유일한 local proper rule 이고, 자신 있게 틀리는 것을 무한히 처벌합니다 — 일어난 일에 0.001 을 줬다면 점수가 발산합니다. 둘 사이의 선택은 한 번의 대형 오판이 기록 전체를 지배해야 하는가에 대한 선택이고, 트레이딩 에이전트라면 대개 그래야 합니다.

그다음이 함정이고, 이 카드가 단순히 "캘리브레이션 하세요"가 아닌 이유입니다. 캘리브레이션만으로는 아무 값어치가 없습니다. 모든 질문을 무시하고 항상 기저율만 말하는 예측자는 완벽하게 캘리브레이션됩니다 — 30% 라고 말하면 실제로 30% 일어나니까요 — 그리고 쓸모가 없습니다. 한 사건을 다른 사건과 구별한 적이 없기 때문입니다. Brier 점수의 Murphy 분해는 두 절반에 각각 이름을 붙입니다: reliability 는 말한 확률이 관측 빈도와 맞는가, resolution 은 확률을 기저율에서 옳은 방향으로 밀어내는가. resolution 없는 캘리브레이션은 늘 계절 평균을 가리키는 온도계입니다. 두 숫자가 다 필요하고, 어느 쪽이 없는지는 분해해야만 보입니다.

그리고 바로 옆에 기준선이 놓여 있는데 대부분의 프로젝트가 안 씁니다. 예측시장에서 가격이 곧 확률입니다 — 다른 모두의 돈으로 만들어진, 정확히 그 질문에 대한, 정확히 결정하는 그 순간의 확률이죠. 동일 사건에서 에이전트를 시장에 대고 채점하는 데는 로그 한 칸이 더 들 뿐이고, 그것이 유일하게 중요한 질문을 정리합니다 — "이 예측자가 좋은가"가 아니라 "공짜였던 숫자보다 나은가". priced-by-the-wrong-thing 은 도구가 묻는 질문과 다른 질문에 답할 수 있다고 주장하는데, 이건 같은 규율을 내 출력에 적용한 것입니다.

마지막으로, 이게 학술적이지 않은 이유. 켈리 기준의 포지션 크기는 분류가 아니라 확률 자체의 함수입니다. 방향은 맞지만 체계적으로 과신하는 예측은 체계적으로 너무 큰 베팅을 만들고, 적중률은 멀쩡해 보이는 채로 계좌가 죽습니다. 캘리브레이션 오류는 틀린 답으로 나타나지 않습니다. 틀린 베팅 크기로 나타나고, 그건 다른 실패이며 더 나쁜 실패입니다.

동작 방식

각 점수가 볼 수 있는 것과 없는 것

지표 임계값 필요 정직을 보상 과신을 봄 비고
정확도 / F1 필요 아니오 못 봄 베팅 크기를 정한 크기 정보를 버림
AUC 불필요 아니오 못 봄 순위만 봄. 모든 p 를 p/10 으로 뱉는 모델도 AUC 가 동일하고, 쓸 수 없음
Brier 불필요 유계이고 reliability + resolution + uncertainty 로 분해
로그 점수 불필요 무한히 local. 자신 있게 한 번 틀리면 기록 전체를 지배

사람들이 걸리는 줄은 AUC 입니다. 순위 지표는 확률에 단조 변환을 가해도 불변이라, 체계적으로 과신하는 모델과 잘 캘리브레이션된 모델이 같은 점수를 받습니다 — 그런데 거래할 수 있는 건 한쪽뿐입니다.

분해, 그리고 왜 숫자 하나로는 안 되는가

Brier = reliability − resolution + uncertainty.

  • uncertainty내가 아니라 질문의 속성입니다. 기저율 분산이고, 아무 말도 안 했을 때 받는 점수를 정합니다.
  • reliability(낮을수록 좋음)는 캘리브레이션 항입니다 — 0.7 이라 했을 때 실제로 70% 일어났는가.
  • resolution(높을수록 좋음)은 실력 항입니다 — 기저율에서 벗어났는가, 그리고 옳은 방향으로 벗어났는가.

늘 기저율만 말하는 예측자는 reliability 완벽, resolution 0쓸모 있기보다 안전하기를 배운 시스템의 정확한 프로필입니다. 반대 프로필(resolution 높고 reliability 나쁨)은 확률을 요구받은 LLM 에서 더 흔합니다 — 사건은 잘 구별하는데 확률을 너무 자신 있게 말하죠. 두 실패는 정반대 처방이 필요하고, Brier 숫자 하나로는 둘 다 알 수 없습니다.

이 프로젝트가 실제로 돌릴 수 있는 형태의 측정

agent 카드가 이미 입력을 만들고 있습니다. 결정 한 줄이면 충분합니다:

어디서 오나
p_model 에이전트가 실제로 행동의 근거로 삼은 확률
p_market 같은 순간 오더북의 내재확률
outcome 결과 확정 후 0 또는 1

이 셋에서 신뢰도 다이어그램, 두 Brier 점수, 각각의 분해가 전부 나옵니다. p_market 과의 비교가 실험이고, 나머지는 진단입니다. 그리고 연구용 측정치로는 드문 성질이 하나 있습니다 — 쉬운 질문을 골라 점수를 올릴 수 없습니다. 기준선이 같은 질문을 받기 때문입니다.

먼저 밝혀둘 단서 하나: 오더북이 주는 것은 호가 스프레드이지 점 확률이 아니고, 중간값은 진실이 아니라 관례입니다. 얇은 시장에서는 스프레드가 주장하는 엣지보다 넓을 수 있으므로, 스프레드도 중간값 옆에 같이 기록해야 합니다 — 안 그러면 에이전트가 거래한 쪽으로 비교가 조용히 유리해집니다.

왜 Future 섹션인가

이건 예측 기법이 아닙니다. 확률적 출력이라면 무엇이든 필요로 하는 측정 계층이고, 그런 출력은 늘어나는 중입니다 — 가능성을 묻는 LLM, 파지에 대한 정책의 확신도, 에스컬레이션 여부를 정하는 라우터. the-harness-not-the-model 은 모델보다 그 둘레에 짓는 것이 중요하다고 주장합니다. 채점은 그 하네스에서 안쪽이 작동하는지를 알려주는 부분이고, 대개 아무도 안 만드는 부분입니다 — 모델이 이미 답처럼 생긴 숫자를 돌려주기 때문입니다.

← 전체 개발 노트 · 워크스페이스 인덱스 · 맨 위 ↑