一句话摘要
造一个能识别市场与真实回报差距的机器人
市场说 1%。现实交付 0.43%。构建一个真正知道差别的 bot July 9, 2026 · 26 min read · View source ↗ Marketing
我要拆解如何构建一个 bot:它接收一堆过去的结果,返回每一个交易都依赖的那个数字——下一个事件的真实概率。不是胜率。不是直觉。而是一个经过校准的概率,附带一个诚实的置信区间。我会解释每一个公式,展示确切的代码,并在一整个完整的案例上端到端跑一遍。
我们直接开始。
收藏这个 → 当你把它对准自己的数据的那一刻,你会想要这些精确的公式和 estimator 类。
下面是让这件事现在值得做的进展。
2026 年 2 月,Jonathan Becker 发布了有史以来最大的公开预测市场数据集:数亿笔 Polymarket 和 Kalshi 交易,每一个结算结果都包含在内,免费且 MIT 许可。第一次,任何人都能量化一个价格到底意味着什么。而一旦你量化它,答案让人不安。
一份以 1 美分交易的合约,隐含的是 1% 的概率。在 Becker 的数据里,这些合约历史上只有大约 0.43% 的时候结算为 YES。市场自己的数字错了一倍还多。这就是"热门-冷门偏差"(favorite-longshot bias),而且它不是 Polymarket 的怪癖。另一份 2026 年研究分析了跨 327,000 份合约的 2.92 亿笔交易,发现这些场所上的校准是一种结构性的、多维度的失败,政治市场长期被压缩向 50%。价格是一个失真的信号,而那几百万把它当作概率来引用的人,引用的是一组站不住脚的数字。
这就是这个 bot 存在的全部理由。如果市场的数字不可信,你就得自己从结果里计算概率,用把原始计数变成校准估计的数学。本文就是那个数学和那台机器。
到本文结束时,你会确切理解:为什么数结果会给你错误的概率;Beta-Binomial 引擎如何把胜率转化成可信的估计;如何选择那个在数据稀疏时控制你行为的先验;如何附上一个能告诉你到底要不要下注的置信区间;如何判断哪些过去结果才算相关;如何证明你的 bot 是校准过的,而不是单纯假设它校准了;以及如何把这一切组装成一个你今天就能对准数据集的系统。
注意:这不是一篇能略读的文章。每一部分都建立在前一部分之上。如果你想要一个输出真正能用来定仓位的数字的 bot,请逐行阅读。
方法骨架
整个系统八步。截图保存这个。
把每一个过去结果摄入成一个结构化记录:一个二值结果,加上它发生时所处情境的特征。
按相似状态把结果分桶,这样你只计算与你正在定价的事件真正相关的证据。
在匹配的桶内统计成功数 k 和总试验数 n。
用 Beta-Binomial 后验均值 (k + α) / (n + α + β) 估计概率,永远不要用原始 k / n。
先验 → 用均匀默认值、Jeffreys 先验、或在整个数据集上的 empirical-Bayes 拟合来设置 α 和 β。
用 Beta 后验的可信区间量化不确定性。区间的宽度就是你的置信度。
用一个分层回退把稀疏的桶向全局基准率收缩,这样三个结果永远不会伪装成一个分布。
用 Brier score 和 log loss 校准,如果数字撒谎就重新校准。随着新结果落地,把后验往前滚动更新。
下面的一切都是那八行背后的细节。
前置条件
你需要 Python 3.9 或更高、numpy 和 scipy,以及一个历史结果来源。那个来源可以是你自己记录的结果,也可以是 Becker 数据集(github.com/Jon-Becker/prediction-market-analysis),它以 Parquet 文件形式发布,你可以直接用 DuckDB 查询。你需要理解概率是什么。你不需要统计学学位。这里的每个公式都在首次使用时定义。
唯一的概念性要求:你必须接受,概率不是你观察到的一个单点数字。它是一个你估计的、带不确定性的未知量。就这一处转变,把这个 bot 和一个"用胜利除以总数"的电子表格区分开来。
第一部分:为什么数结果会给你错误的数字
把结果变成概率的朴素方法就是做除法。你看到事件在 n 次里发生了 k 次,所以你把概率叫做 k / n。这是最大似然估计,对大的 n 它是没问题的。对你自己实际拥有的样本量来说,它会在两个具体的、相反的方向上失败。
失败一:它过拟合稀疏数据。在你的记录里,一个冷门三次出场三次全胜。朴素估计说概率是 100%。这显然是假的,但公式却以完全的自信说出它。三个结果不是一个分布。它是穿着分布外衣的噪音。零的情况下也一样:一支队伍连输五场,朴素估计就断言概率恰好是零,而任何真实事件都永远不会是零。
失败二:它忽略基准率。朴素估计只使用你桶里那一小撮结果,并丢掉你所知道的关于这类事件一般如何表现的一切。如果冷门总体上大约 20% 的时间会赢,一个三次出场三次全胜的桶不应该把你一路拉到确定性。它应该把你从 20% 向上更新,更新的幅度取决于你拥有多少数据。
这两种失败就是用大白话说出来的 bias-variance 权衡。太相信小样本,你就得到方差:随着噪音剧烈摆动的狂野估计。忽略样本、只依赖基准率,你就得到偏差:永远不适应真实信号的估计。朴素计数活在这个权衡最糟糕的角落里。它是纯方差、零收缩。
市场本身就是证据。当你把人群的隐含概率当作真相时,你就是在信任一个有偏流的原始计数。Becker 的数据恰好展示了它在哪崩掉:在 1 美分处,人群定价 1%,现实交付 0.43%。计数在极端处是系统性、可测量的错误,而且错在一个你可以预测的方向上。一个除了计数什么都不做的概率引擎,会继承每一个那样的错误。
修复不是更好的计数。它是一个完全不同的对象。不是问"结果里胜利的占比是多少",而是问"给定这些结果和我已经知道的东西,真实概率的完整分布是什么"。那是一个贝叶斯问题,而且它有一个干净到几乎可疑的闭式解。
第二部分:贝叶斯引擎(Beta-Binomial 共轭)
把未知概率,称它为 θ,当作一个有自己的分布的随机变量,而不是一个你要去钉死的固定值。在看任何结果之前,你对 θ 持有一个先验分布。观察结果之后,你把它更新成一个后验分布。后验就是你的答案。
对二值事件,自然的先验是 Beta 分布,写作 Beta(α, β)。它生活在 0 到 1 的区间上,那恰好是概率所在的地方。它的两个参数有一个具体含义:α 像先验成功数的计数,β 像先验失败数的计数。它的均值是:
Beta(α, β) 的均值 = α / (α + β)
所以 Beta(2, 8) 的均值是 2 / 10 = 0.20,编码了一个以 20% 为中心、以十个伪观察的强度持有的信念。
结果本身遵循一个二项分布:n 次独立试验中 k 次成功,每次概率为 θ。现在到了关键结果。当你把一个 Beta 先验和二项数据结合时,后验又是一个 Beta 分布,计数被简单地加进去:
先验:Beta(α, β)
数据:k 次成功,n − k 次失败
后验:Beta(α + k, β + n − k)
这个性质叫共轭,正是它让这个引擎快到能同时在每一个市场上跑。更新你对一个概率的全部信念,就是一次加法。没有积分,没有采样,没有求解器。
你的点估计是后验均值:
p_bayes = (α + k) / (α + β + n)
看看它怎么处理第一部分的两个失败模式。拿那个三次出场三次全胜的冷门,持先验 Beta(2, 8):
朴素:3 / 3 = 1.0000(基于 3 个结果的确定性——荒谬)
贝叶斯:(2 + 3) / (10 + 3) = 5 / 13 = 0.3846
贝叶斯估计把你从 20% 的基准率移到大约 38%。它听到了信号,三次全胜是真实证据,但它拒绝被三个数据点拖到确定性。这正是你想要的行为。
它这样表现的原因,在你把后验均值改写成一个加权平均时就看得见:
p_bayes = w · (k / n) + (1 − w) · (α / (α + β))
其中 w = n / (n + α + β)
这个估计是样本均值 k / n 和先验均值 α / (α + β) 的混合。数据上的权重 w 随 n 增长而增长。结果少时,w 很小,你依赖先验。结果多时,w 趋近 1,数据接管。收缩是自动的,而且完全由你拥有多少证据支配。你从来不用手动调什么时候该相信样本。算术自己做了。
下面是引擎的代码。两个函数承载了整个点估计。
def posterior_params(k, n, alpha_prior, beta_prior):
"""Beta-Binomial conjugate update. Returns posterior (alpha, beta)."""
return alpha_prior + k, beta_prior + (n - k)
def posterior_mean(k, n, alpha_prior, beta_prior):
a, b = posterior_params(k, n, alpha_prior, beta_prior)
return a / (a + b)
这就是整个 estimator。从这里往后的所有内容,都是关于选好先验、附上不确定性、决定什么该进 k 和 n,以及证明输出是诚实的。
第三部分:选择先验
先验不是一个碍事的参数。它是那个精确控制你 bot 在数据稀疏时如何表现的旋钮——而数据稀疏时,恰恰是一个坏估计让你付出最大代价的时候。有三个站得住脚的选择,按复杂度递增排列。
均匀先验:拉普拉斯后继法则
设 α = 1 且 β = 1。Beta(1, 1) 是均匀分布:在任何数据之前,从 0 到 1 的每个概率都同样可能。后验均值变成:
p = (k + 1) / (n + 2)
这是拉普拉斯后继法则,一个很强的默认值。它永远不返回精确的 0 或精确的 1,所以它结构上不可能产生朴素计数的那种确定性错误。三次三次全胜给出 4 / 5 = 0.80 而不是 1.00。它温和、无假设,而且在你确实没有任何先验知识时,正确地伸手去用它。
Jeffreys 先验
设 α = 0.5 且 β = 0.5。Beta(0.5, 0.5) 是二项比例上的 Jeffreys 先验,是统计学里当你想要一个在特定技术意义上无信息、且在重参数化下不变的先验时的标准选择。后验均值是:
p = (k + 0.5) / (n + 1)
它比拉普拉斯稍微少往中心拉一点,所以它让小样本稍微更大声一点,同时依然拒绝碰到边界。当你想要最小收缩但仍需要边界保护时用它。
信息性先验:注入你真正知道的东西
这是对交易真正重要的那个,因为你从来不是完全无知的。你知道基准率。你可能知道市场的隐含概率。直接编码它。选一个等于你基准率的先验均值 m,和一个等于你希望这个信念值多少个伪观察的先验强度 s = α + β。
然后:
α = m · s
β = (1 − m) · s
以强度十持有的 20% 基准率给出 α = 2, β = 8,也就是第二部分的 Beta(2, 8)。强度是杠杆。小的 s 意味着先验是一个数据很快覆盖的弱推动。大的 s 意味着在愿意离开你的基准率之前,你要求大量证据。这就是你如何把领域知识建进机器、而不硬编码规则。
经验贝叶斯:从数据本身学习先验
最强大的选项是别再猜先验,而是从你的整个数据集里估计它。看你拥有的每个桶的观察胜率,拟合一个描述这些频率如何跨桶分布的单一 Beta(α, β)。然后用那个拟合出的 Beta 作为每一个单独桶的先验。
你用矩法拟合它。设 m 是你桶级频率的均值,v 是它们的方差。产生那个均值和方差的 Beta 参数是:
s = m · (1 − m) / v − 1
α = m · s
β = (1 − m) · s
当 v < m · (1 − m) 时有效。这就是经验贝叶斯:先验不再是一个假设,它是对你领域里概率实际如何分布的一次测量。一个数据很少的桶会被拉向一般桶的行为,这在一个桶还没挣到自己的观点之前,正是该做的正确的事。
def fit_empirical_bayes(bucket_frequencies):
"""Method-of-moments Beta fit across observed bucket win rates."""
import numpy as np
m = np.mean(bucket_frequencies)
v = np.var(bucket_frequencies)
if v <= 0 or v >= m * (1 - m):
return 1.0, 1.0 # fall back to uniform
s = m * (1 - m) / v - 1
return m * s, (1 - m) * s
说清楚该用哪个:在构建阶段先用拉普拉斯,一旦你有了一个真实的基准率就切换到一个信息性先验,一旦你有足够多桶可以拟合,就转向经验贝叶斯。每一步都让你的 bot 的稀疏数据行为更诚实。
第四部分:告诉你该不该信这个数字的置信区间
一个单独的点估计是危险的,因为从 5 个结果算出来的 26% 和从 5,000 个结果算出来的 26%,不是同一个论断,即便数字一模一样。区别是不确定性,而贝叶斯引擎把它免费交给你,因为你的答案是一个完整分布,而不是一个点。
可信区间是那个以指定的后验概率(通常是 95%)包含真实概率的范围。你直接读后验 Beta 的 2.5 和 97.5 分位数即可:
from scipy import stats
def credible_interval(k, n, alpha_prior, beta_prior, level=0.95):
a, b = alpha_prior + k, beta_prior + (n - k)
lo = (1 - level) / 2
hi = 1 - lo
return stats.beta.ppf(lo, a, b), stats.beta.ppf(hi, a, b)
这个区间的宽度是 bot 在点估计之后第二重要的输出。窄区间意味着数据已经说清楚了,你可以行动。宽区间意味着无论中点看起来多诱人,你都不够了解、不足以去下注。这是每个系统化交易员最终都靠惨痛代价学会的那条规则的正式版本:稀疏的桶不可交易。这个区间把那种直觉变成了一个数字。
如果你更想要频率学派区间,用 Wilson score 区间,而不是教科书的正态近似。正态近似 p ± z · sqrt(p(1−p)/n) 是 Wald 区间,对小 n 或极端 p 它错得离谱。它能产生低于零或高于一的边界,而且当 k 为零时它塌缩成零宽度。Wilson 区间修好了这两点。对 95% 下 z = 1.96:
center = (p + z² / (2n)) / (1 + z² / n)
half-width = z / (1 + z² / n) · sqrt( p(1−p)/n + z² / (4n²) )
其中 p = k / n。它待在有效范围内,且在极端处保持合理。
这个区间也是仓位定级的一个钩子。在我早先关于经验 Kelly 的拆解里,定仓公式用你的 edge 估计的变异系数来打折扣,f_empirical = f_kelly · (1 − CV_edge)。这个可信区间相对估计值的宽度,就是那个不确定性的直接度量。宽区间,大打折扣,更小的仓位。区间不只告诉你该不该下注。它告诉你该下多少。
第五部分:定义"相似" → 分桶系统
第二部分到第四部分的引擎,只和你喂给它的结果一样好。如果你数了那些与你正在定价的事件并不真正相关的结果,你会得到一个对错误东西的精确估计。所以真正的设计问题是这个:哪些过去结果算作下一个事件的证据?
答案是分桶。你用一组特征描述一个结果发生时的情境,把每个特征离散化成少数几个层级,再组合成一个桶键。只有当两个结果的情境在每个特征上都匹配时,它们才共享一个桶。然后你在与你要定价的事件匹配的桶里统计 k 和 n。
这就是我在世界杯策略里用来给冲击分类的同一个想法:联赛层级、冷门程度、订单簿深度、比赛时间、进球状态,串接成一个键。把它泛化。挑那些可能改变结果的特征,每个切成层级,然后连接它们。
def bucket_key(record):
return "|".join([
classify_tier(record.league), # major | minor
classify_favoritism(record.price), # heavy | moderate | slight | underdog
classify_time(record.minute), # early | mid | late | final
classify_state(record.goal_diff), # level | close | comfortable | blowout
])
# e.g. "major|underdog|mid|level"
分桶有它自己的 bias-variance 权衡,而且它是第一部分那个的镜像。加更多特征,每个桶变成对情境更精确的描述,但结果被摊薄到更多桶里,所以每桶的 n 下降、方差上升。用更少特征,每个桶装更多数据,但描述更粗糙,你把真正不同的情境模糊到一起,这会抬高偏差。这和支配组合独立信号的平方根 N 逻辑是一样的:更多的条件维度只在每个桶仍有足够数据有意义的那个点上之前才有帮助。
两全的办法是一个分层回退。在几个不同的粗细层级上定义你的桶。当最完整、最具体的桶有足够结果时,用它。当它太稀疏时,通过丢掉最不重要的特征回退到一个更粗的桶,并把具体估计向粗桶收缩。这是部分池化,也正是 2026 校准研究所用的结构——一个贝叶斯分层模型——用来表明校准是真实的、但依赖领域。当具体还没挣到自己的观点时,你从一般那里借力量;随着具体积累证据,你让它接管。
def estimate_with_fallback(record, index, min_trials=8):
"""Walk from most specific bucket to coarsest until one has enough data."""
for key in bucket_hierarchy(record): # specific -> coarse
k, n = index.counts(key)
if n >= min_trials:
return key, k, n
k, n = index.global_counts() # base rate as final backstop
return "GLOBAL", k, n
min_trials 阈值是你画"有足够数据信任这个桶"和"回退"之间那条线的地方。这和拒绝从三个冲击里构建分布是同一种纪律。刻意地设置它。
第六部分:校准 → 证明数字是真的
到目前为止的一切都产出概率。这一部分讲的是如何证明那些概率是诚实的,因为一个产出数字的 estimator,如果那些数字不对应现实,就一文不值。一个概率是校准过的,当它匹配观察频率:在你 bot 说 30% 的所有那些次里,事件应该大约 30% 的时间发生。如果它 15% 的时间发生,你的 bot 就是过度自信的,每一个基于它定的仓位都是错的。
你用三种方式度量校准,而且你要持续跑全部三种。
可靠性图
把你的预测分成区间,然后在每个区间里比较平均预测概率和事件的实际发生频率。预测画在一个轴上,实现画在另一个轴上。一个完美校准的 bot 会描出对角线。系统性高于或低于线的偏差,是你能看到并纠正的系统性偏差。这正是暴露市场价格里"热门-冷门偏差"的那件工具,你把它对准自己的 bot,去抓你自己身上的同一种病。
Brier score
Brier score 是概率预测的均方误差。对预测 p_i 和结果 o_i ∈ {0, 1}:
Brier = (1 / N) · Σ (p_i − o_i)²
越低越好;零是完美。它奖励既正确又自信,而且它干净地分解成一个校准项和一个分辨项,所以一个上升的 Brier score 会在你的 P&L 之前就告诉你 edge 正在衰退。
Log loss
Log loss 比 Brier score 远更严厉地惩罚自信的错误预测:
LogLoss = − (1 / N) · Σ [ o_i · ln(p_i) + (1 − o_i) · ln(1 − p_i) ]
一个 0.99 却判错方向的预测,贡献一个巨大的惩罚。如果你的 bot 将要自信地犯错,log loss 是会最先尖叫出来的那个指标。两个都追踪:Brier 看整体质量,log loss 看你自信里的尾部风险。
import numpy as np
def brier_score(p, o):
p, o = np.asarray(p), np.asarray(o)
return np.mean((p - o) ** 2)
def log_loss(p, o, eps=1e-15):
p, o = np.clip(p, eps, 1 - eps), np.asarray(o)
return -np.mean(o * np.log(p) + (1 - o) * np.log(1 - p))
如果可靠性图显示你的 bot 以某种一致的方式未校准,你就用一张在留出数据上拟合的重校准映射修好它:Platt scaling,它拟合一个从你的原始输出到校准输出的 logistic 变换;或 isotonic regression,它拟合一个单调阶跃函数,对形状的假设更少。在验证集上拟合一次,应用到每一个未来的预测。这是把一个看似合理的 estimator 变成可信的那个的循环,而且它是几乎所有人都跳过的那一步。
第七部分:完整 bot(架构和完整案例)
完整系统有四个组件。一个数据层摄入结果,并在层级每一层构建 k 和 n 的桶索引。一个先验层跨所有桶一次性拟合经验贝叶斯 Beta。一个估计层接收查询、走过桶回退,并返回后验均值加可信区间。一个校准层把每一个预测对着它最终的结果记录下来,并报告 Brier 和 log loss,这样你就知道 edge 开始腐烂的那一刻。
下面是作为单一类的 estimator。
import numpy as np
from scipy import stats
class ProbabilityBot:
def __init__(self, alpha_prior=1.0, beta_prior=1.0, min_trials=8):
self.alpha, self.beta = alpha_prior, beta_prior
self.min_trials = min_trials
def fit_prior(self, bucket_frequencies):
m, v = np.mean(bucket_frequencies), np.var(bucket_frequencies)
if 0 < v < m * (1 - m):
s = m * (1 - m) / v - 1
self.alpha, self.beta = m * s, (1 - m) * s
def estimate(self, k, n, level=0.95):
a, b = self.alpha + k, self.beta + (n - k)
mean = a / (a + b)
lo = stats.beta.ppf((1 - level) / 2, a, b)
hi = stats.beta.ppf(1 - (1 - level) / 2, a, b)
return {"prob": mean, "low": lo, "high": hi,
"width": hi - lo, "n": n}
def edge(self, k, n, market_price):
est = self.estimate(k, n)
est["edge"] = est["prob"] - market_price
est["tradeable"] = est["width"] < 0.20 # your discipline knob
return est
现在在一个真实场景上从头到尾跑一遍。
你在给一个冷门是否会赢一场比赛定价。你从你的索引里拉出匹配的桶,major | underdog | mid | level,它持有 28 个历史结果,其中冷门赢了 8 个。你对这个桶家族里冷门的基准率是 20%,所以你的先验是 Beta(2, 8)。
第 1 步,朴素数字。8 / 28 = 0.2857。29%,以一种虚假的自信说出。
第 2 步,后验。持 Beta(2, 8) 先验,后验是 Beta(2 + 8, 8 + 20) = Beta(10, 28),后验均值是 10 / 38 = 0.2632。26%。估计从朴素的 28.6% 向 20% 的基准率收缩了,因为 28 个结果是真实的,但不是压倒性的。这里的数据权重是 w = 28 / 38 = 0.737,所以估计是 74% 数据、26% 先验。
第 3 步,区间。来自 Beta(10, 28) 的 95% 可信区间从 0.138 到 0.412,宽度 0.274。作为对比,朴素 Wald 区间会从 0.118 到 0.453,更宽,而且部分建立在虚假自信的点上。区间够宽,让你知道这是一个中等确信度的估计,不是一个锁定。
第 4 步,edge。市场给 YES 定价 0.22。你的估计是 0.2632。edge 是 +0.043,大约四分钱的期望价值偏向你。可信区间不排除市场价格,所以这是一个倾向,不是一记重锤。你把它定得小,经验 Kelly 还会因区间宽度进一步打折。你不会在一个四美分的 edge 加一个二十七分的区间上去全仓押注,而现在你有了明确说出这一点的数字。
第 5 步,纪律检查。拿它对比稀疏桶的陷阱。如果这个桶只持有 3 个结果、3 次全胜,朴素数字会是 100%,贝叶斯估计会是 38%,可信区间会从 0.15 到 0.65,宽度 0.50。半条概率线。bot 会仅凭宽度就把它标记为不可交易,而且它是对的。同样的数学,它把你从这类系统最常爆掉的方式里救出来。
这就是整个循环。摄入结果,分桶,计数,用后验估计,附上区间,对比市场,按宽度定仓位。在你关心的每一个事件上重复。
常见错误
失败是可预测的,所以提前把它们点出来。
相信稀疏桶上的原始 k / n 是原罪,第二部分的一切存在就是为了防止它。过度分桶直到每个桶只装一两个结果,从另一个方向重现了同样的问题,而第五部分的回退是解药。当你有真实基准率时还用平坦先验,等于扔掉免费信息,所以一旦你能拟合,就尽快转向信息性或经验贝叶斯先验。从不检查校准意味着你在盲目飞行,不知道你的数字有没有意义,而第六部分不是可选项。读点估计却忽略区间,会让你对一个五次结果的猜测和一个五千次结果的近乎确定下同样大小的注。把你正在预测的结果泄漏进定义估计的桶里,是一个让回测闪闪发光、让实盘结果崩塌的 look-ahead bug。而把旧结果当作和近期结果一样,忽视了 regime 会变;当过程非平稳时,给近期数据更大权重或衰减旧结果。
总结
胜率是一个计数。概率是一个分布。这个 bot 的全部工作,就是把第一个转化成第二个,而不对你撒谎说它知道多少。
Beta-Binomial 引擎用一次加法完成转换,因为一个 Beta 先验被二项结果更新后依然是 Beta,而它的均值 (k + α) / (n + α + β) 是数据与先验的自我加权混合。先验控制稀疏数据行为,经验贝叶斯让你从数据里学它而不是猜它。可信区间把不确定性变成一个你能据此定仓位的数字,它是一个可交易估计和一个穿着戏服的抛硬币之间的区别。分桶决定哪些结果算数,用一个分层回退让具体向一般借力量,直到它挣到自己的观点。而校准,用在实时可靠性图上以 Brier score 和 log loss 度量,是你证明数字对应现实、而不是假设它们对应的方式。
市场自己的概率公开地在这个测试上失败:以 0.43% 结算的 1 美分合约,是一个从未变成校准估计的计数。构建那个做市场跳过的那一步的 bot,你就是在用真实分布定价,而其他所有人都在引用一个坏掉的数字。
这是我想要你坐下来的问题。
你的 bot 输出 26%,可信区间从 14 到 41。市场说 22。edge 是真实的,但区间把它吞掉了。你因为中点有 edge 而做这笔交易,还是因为区间说你其实不知道而放弃?你的答案,就是一个概率引擎和一个举止得体的随机数生成器之间的全部区别。
没有错误的答案。但有非常能说明问题的答案。Tags: # X # Marketing # Growth # Guide Related articles How to turn attention into consumer-app customers who don’t churn That playbook worked when building the product was hard and distribution was cheap, but the opposite is true in 2026. Mobile Apps Paywall Marketing Advertising
原文参考:https://maxed.wiki/posts/market-says-1-reality-delivers-0-43-build-the-bot-that-actually-knows-the-difference/ (Maxed.wiki,本页为站内中文整理)