为什么做 Edgekit

项目起源与数学根源

Author

Edgekit Team

Published

June 13, 2026

Note📝 摘要

本文档讲清楚 Edgekit 项目的起源:为什么交易中的”正期望”不等于”可执行”,以及算术期望(A+B>2)与几何增长判据(A^p B^{1-p}>1)的本质区别。


1 现实困境:执行层的混乱

在实际交易中,大多数失败并不是因为缺乏胜率或盈亏比,而是因为执行层面和认知层面的混乱。

1.1 讨论很多,执行逻辑却缺失

人们经常讨论:

  • 如何提高胜率(p
  • 如何寻找更高盈亏比(RR)的机会
  • 各种技术指标和信号

然而一旦进入执行阶段,逻辑往往支离破碎。

1.2 典型的认知误区

  • 把仓位当成风险:认为”下 1 手”就是风险,忽视了止损距离才决定实际亏多少钱。
  • 把杠杆当成风险:盲目追求或排斥杠杆,而不理解杠杆只是调节敞口的工具。
  • 随意的风险调整:根据最近几笔的盈亏随意放大缩小风险,陷入赌徒谬误。
  • 失效后的盲目坚持:策略已经结构性退化,仍然相信”它会回来”,没有明确的停止准则。

2 两个被忽视的核心问题

Edgekit 试图解决两个非常具体、但长期被忽视的问题。

2.1 问题一:如何执行 (Execution)

已知胜率和盈亏比,这类机会应该怎么做?

  • 它值不值得做(优势是否真的为正)?
  • 单笔最多该亏多少(风险比例怎么定)?
  • 要不要复利,什么条件下复利?

2.2 问题二:何时停止 (Invalidity)

执行过程中,怎么判断优势已经失效?

  • 眼下的亏损是正常波动,还是结构性退化?
  • 什么时候应该果断停手,保住剩余资本?

3 数学根源

我们的设计起源于对一个极简游戏的思考。

3.1 最简单的游戏:抛硬币

想象每轮抛一枚公平的硬币(50% 概率):

  • :资本乘以 AA > 1
  • :资本乘以 B0 < B < 1

这是一个纯粹的乘法过程

3.2 第一个判断:A + B > 2

只看算术期望的话:

\mathbb{E}[M] = 0.5A + 0.5B = \frac{A+B}{2}

A+B > 2 时单轮期望为正。这通常是人们被游戏吸引的原因,但这是一个危险的直觉陷阱

3.3 五五开下的生死条件:AB > 1

考虑两轮后(一赢一输)的资本变化因子 A \times B

  • AB > 1:两轮后资本放大。
  • AB < 1:两轮后资本收缩。

在公平硬币下,这正是几何增长判据:每轮的长期对数增长率 g = \tfrac{1}{2}\ln A + \tfrac{1}{2}\ln B = \tfrac{1}{2}\ln(AB),所以 AB > 1 等价于 g > 0。如果 AB < 1,无论 A+B 多大,资本长期都会被反复压缩,趋于零。

3.4 一般情形:几何增长判据 g > 0

Warning适用边界

AB > 1 只在 p = 0.5等价于长期存活。真实交易的优势恰恰是 p \neq 0.5 的非对称优势,必须用一般判据。

长期路径中赢输并不精确交替,决定命运的是按概率加权的几何平均

g = p \ln A + (1-p) \ln B > 0 \quad\Longleftrightarrow\quad A^{p} \cdot B^{1-p} > 1

两个反例说明 p \neq 0.5AB > 1 既不充分也不必要:

场景 AB g 长期命运
A=4.0,\ B=0.3,\ p=0.3 1.20 > 1 -0.427 必然破产(每轮几何均值约 0.65)
A=1.4,\ B=0.6,\ p=0.8 0.84 < 1 +0.167 长期增长(每轮几何均值约 1.18)

后文的凯利准则正是对 g 的最大化,天然适配 p \neq 0.5AB > 1 保留为五五开游戏的直觉引子。

3.5 核心洞察

Important
  • A + B > 2 决定你是否会被游戏吸引(创造希望)。
  • A^p \cdot B^{1-p} > 1 决定你能否留在游戏里(决定命运)。AB > 1 是它在 p = 0.5 时的特例。

3.6 可视化演示

先看五五开的三种情形:

import numpy as np
import matplotlib.pyplot as plt

# 设置绘图风格(含中文字体回退链:macOS / Linux CI / 缺省)
plt.style.use('ggplot')
plt.rcParams['font.sans-serif'] = [
    'PingFang SC', 'Hiragino Sans GB', 'Arial Unicode MS',
    'Noto Sans CJK SC', 'WenQuanYi Zen Hei', 'DejaVu Sans'
]
plt.rcParams['axes.unicode_minus'] = False
np.random.seed(42)
n_rounds = 100
n_simulations = 10

# 三种场景
scenarios = {
    'AB > 1 (可持续)': {'A': 1.8, 'B': 0.6},
    'AB < 1 (不可持续)': {'A': 1.5, 'B': 0.6},
    'AB = 1 (临界点)': {'A': 1.67, 'B': 0.6}
}

fig, axes = plt.subplots(1, 3, figsize=(15, 5))

for idx, (title, params) in enumerate(scenarios.items()):
    A, B = params['A'], params['B']
    ax = axes[idx]

    for _ in range(n_simulations):
        capital = [1.0]
        for _ in range(n_rounds):
            if np.random.random() < 0.5:
                capital.append(capital[-1] * A)
            else:
                capital.append(capital[-1] * B)
        ax.plot(capital, alpha=0.6, linewidth=1)

    ax.axhline(y=1, color='black', linestyle='--', alpha=0.5)
    ax.set_title(f'{title}\nAB={A*B:.2f}')
    ax.set_yscale('log')
    ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()
Figure 1: 抛硬币游戏的资本路径模拟

再看 p \neq 0.5AB 如何失效(Section 3.4 的两个反例):

np.random.seed(7)

asym_scenarios = {
    'AB=1.20 > 1 仍破产': {'A': 4.0, 'B': 0.3, 'p': 0.3},
    'AB=0.84 < 1 仍增长': {'A': 1.4, 'B': 0.6, 'p': 0.8},
}

fig, axes = plt.subplots(1, 2, figsize=(10, 5))

for idx, (title, params) in enumerate(asym_scenarios.items()):
    A, B, p = params['A'], params['B'], params['p']
    ax = axes[idx]

    for _ in range(n_simulations):
        capital = [1.0]
        for _ in range(200):
            if np.random.random() < p:
                capital.append(capital[-1] * A)
            else:
                capital.append(capital[-1] * B)
        ax.plot(capital, alpha=0.6, linewidth=1)

    geo_mean = A**p * B**(1 - p)
    ax.axhline(y=1, color='black', linestyle='--', alpha=0.5)
    ax.set_title(f'{title}\np={p}, 几何均值={geo_mean:.3f}')
    ax.set_yscale('log')
    ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()
Figure 2: p ≠ 0.5 时 AB>1 不保命、AB<1 不致命:决定命运的是几何均值 Ap·B(1-p)

4 从抛硬币到交易执行

把数学模型翻译成交易语言:

  • A 是获胜时的增长乘数,由盈亏比和风险比例决定。
  • B 是失败时的保留比例,即 1 − 风险比例。
  • 真实交易中 p \neq 0.5,所以判断标准是 g > 0,不是 AB > 1

很多交易者追求极高的盈亏比(大 A),却忽视了风险比例过大导致 B 太小,最终 g < 0

Edgekit 的起源正是为了管理这个乘法过程:

  1. 风险定义:把风险锁定为可控的百分比,从而控制 B
  2. 凯利准则 + Half-Kelly:全凯利给出让 g 最大的风险比例,我们默认只用一半。代价是损失约四分之一的增长(分数 c 的凯利,增长率约为最优值的 c(2-c) 倍);换来的是方差减半,以及对参数高估的容错。半凯利不是增长最优,是稳健取舍。
  3. x-Rebase:在加法增长(安全)与乘法增长(效率)之间找平衡。
  4. 失效监控:在 g 的结构发生退化时及时停手。

5 项目使命

我们不是在寻找优势(Edge)。

我们是在严肃地对待一个已经存在的优势:

如何理性地使用它,以及当它不再存在时,如何严格地停止。