使用方法
- 页面打开时已经填好示例:日收益率 0.15%、本金 10000 USDT、持有 30 天,四张结果卡与表格前 6 行直接给出结果,不用先点按钮。
- 「日收益率 r」填的是当日收盘价 ÷ 前一日收盘价 − 1 得到的那个百分比,可以填负数(跌)。加密行情 7×24 小时全年无休,所以下面默认按 365 天折年。
- 「年化天数口径」选 365 还是 360,只影响结果提示区里折年化那一句的取用天数,不影响表格前五列的原始总额。加密用 365,债券利息常用 Actual/360;两种口径的实测差异见正文「输入范围与对照表」。
- 点「计算」或在任一输入框按 Enter 重算。「载入示例」把三个值恢复成0.15 / 10000 / 30;「导出 CSV」把当前对照表存成带 BOM 的表格文件,Excel 打开中文不乱码;「复制结果」把三套总额抄到剪贴板。
- 输入非法时(比如日收益率填 80,超出 ±50 的范围)会在按钮下方给出具体提示,写明是哪个字段、允许什么范围,不会静默归零。
这个加密货币利润计算器能解决什么问题
加密货币利润计算器把「日收益」翻译成「年收益」时最容易被数字骗。交易所界面常只显示一个折年数字,但同一条 r 在 365 与 360 两种口径下差 1.7719%(r = 0.15% 时),r 越大差得越多;本页把两种口径并列算出来,差多少一眼可见。
二是判断复利到底有没有起作用。很多人口头说复利,实际算的是单利。本页把 1 + r·n、(1+r)ⁿ、e^(r·n) 三条公式的结果并排放:r = 0.15%/日 时,第 30 天三者差 9.93 USDT,到第 365 天差 1807.16 USDT(本金才 10000),用单利估算会系统性低估。
三是算清楚跌回原点要多少。涨 100% 之后不是跌 50% 就能回到原点,而是要跌 50%(因为是乘性);反过来先跌 50% 再涨 100% 只能回到 75%。加密货币利润计算器在持有天数与翻倍/回本两处都把这个不对称算出来。
四是给浮点溢出划一条明确的线。日收益率 50% 配 3650 天会让 (1.5)^3650 变成 Infinity,本页在它溢出之前先报错,而不是把 Infinity 显示给你。
本页不做这些事:不取实时行情、不接入交易所 API、不给买卖建议、不算手续费与提现成本。如果你要的是「本金投进去、期间加减仓、最后卖出到手多少钱」的完整流水账,用投资回报率计算器;只想看年化收益率本身,用年化收益率计算器;要算的是「一年期按复利滚完变成多少」,用复利计算器。
原理:为什么同一个 r 会有三个答案
设日收益率 r、持有 n 天、本金 P₀。三条公式的区别只在「每天的收益是否以变化后的本金为基数」这一句话上。
单利 P = P₀ · (1 + r·n):每天赚的钱都按原始本金算,30 天就是 30 份固定的 r·P₀。它是最容易被误用的一个——很多人口中的「日收益 0.15%,30 天 4.5%」其实是单利,而行情软件给的 4.5993% 是复利。
日复利(离散) P = P₀ · (1 + r)ⁿ:第 i 天的收益基数是 P₀(1+r)^(i−1),逐日滚存。这是交易所与行情软件最常用的口径,因为它就是「每天把前一天的收盘价当新基数」的字面实现。
连续复利 P = P₀ · e^(r·n):把离散更新换成微分方程 dP/P = r·dt 的解,是学术与期权定价里的口径。注意它的 r 是瞬时连续复利率,与「每日百分比涨跌」不是同一个量。
两者的差是可以算出来的小量。把 e^(rn) 与 (1+r)ⁿ 相除取对数:rn − n·ln(1+r) = n·(r − ln(1+r))。当 r 很小时 ln(1+r) ≈ r − r²/2,所以两者差约 n·r²/2。r = 0.0015、n = 30 时这个估算给出 30 × 0.0015²/2 = 0.00003375,实测相对偏差 0.003372%,量级吻合。这解释了为什么在币圈讨论里,用 e^(rn) 还是 (1+r)ⁿ 几乎总能吵起来——两者的差在多数场景下远小于行情本身的噪声。
反过来,单利与复利的差不可忽略。由 (1+r)ⁿ ≥ 1 + rn(伯努利不等式)可知复利结果永远不小于单利,且 n 越大、r 越大,差距越大。实测(r = 0.15%/日、P₀ = 10000):
- n = 7,相对差 0.004687%——可以忽略;
- n = 30,相对差 0.094895%——开始能看出来;
- n = 90,相对差 0.823213%;
- n = 365,相对差 10.456806%,复利总额是单利的 1.116779 倍。
365 与 360 差在哪。同一条 r 折成年度收益时,两个口径给出的是两个不同的数。实测(r = 0.15%/日):365 天口径 (1.0015)^365 − 1 = 72.8216%,360 天口径 (1.0015)^360 − 1 = 71.5313%,360 比 365 低 1.7719%。这不是精度差异而是定义差异:365 承认「一年 365 天」,360 承认「按 30 天/月 × 12 月算年」(US 30/360 里的 30,以及欧陆 Actual/360 的 360 天基准)。债券利息按 360 计是因为它假设一年只有 360 天的计息基础,而加密每天都在成交。
差距会随 r 变大而放大,实测同一模型下:r = 0.30% 时 365/360 口径差 2.2358%;r = 0.50% 时差 2.9389%;r = 1.00% 时差 4.9854%。也就是说,波动越大的资产,口径选择带来的数字差异越大——在加密语境下用 360 报一个高收益数字,会明显低估它。这也是本页把两个口径都算出来并列的原因。
亏损侧的不对称。r 填负数时三条公式同样成立:r = −0.15%/日、n = 30 时,单利给出 9550.00,日复利 9559.65,连续 9559.97。注意亏 30 天与赚 30 天并不镜像——赚要涨 4.5993% 才回到原点,亏只要跌 4.4043% 就到了,多出来的部分正是复利在负利率下更快放大的结果。
完整示例(数值仅作演示)
与页面打开时的三个输入完全一致:r = 0.15%/日、P₀ = 10000 USDT、n = 30 天、口径 365。实测三套结果:
- 单利
10000 × (1 + 0.0015 × 30)= 10450.000000,涨幅 4.500000%; - 日复利
10000 × 1.0015³⁰= 10459.925923,涨幅 4.599259%; - 连续复利
10000 × e^(0.0015 × 30)= 10460.278599,涨幅 4.602786%; - 复利比单利多 9.925923 USDT,相当于本金的 0.0993%;
- 连续比离散只多 0.352676 USDT,相对偏差 0.003372%。
把 n 拉到 365(同样 r 与本金):单利 15475.00(日涨幅 54.7500%)、日复利 17282.16(72.8216%)、连续 17289.25(72.8925%)。翻倍所需天数按日复利解 n = ln2 / ln(1+r) = 462.4446 天——注意它比单利解 ln2 / r = 462.0981 天要长,这正说明用单利会高估增长速度。
翻倍这件事还有反直觉的一面:涨 100 天后是 11617.04,要跌回10000 需要跌 13.9195%(即 1 − (1+r)^(−100)),而不是 50%。
输入范围与对照表
三个输入的合法区间与步长都写在 HTML 属性上(min / max / step),浏览器会先挡掉一部分,但本页仍然逐项校验并给出中文文案。
| 字段 | 允许范围 | 步长 | 默认值 | 超出范围的后果 |
|---|---|---|---|---|
| 日收益率 r | −50 ~ 50 % | 0.01 | 0.15 | ±50% 与 n=3650 组合会让 (1+r)ⁿ 溢出成 Infinity,直接报错 |
| 投入本金 P₀ | 0.01 ~ 1e12 | 0.01 | 10000 | 结果超出双精度安全整数 9007199254740991 后不再逐位可靠 |
| 持有天数 n | 1 ~ 3650 | 1 | 30 | 3650 = 10 年上限;n ≤ 0 会让公式失去「持有」意义 |
| 年化口径 | 365 或 360 | — | 365 | 只影响折年化列,不影响原始总额 |
下面是固定 r 与 P₀、只改天数时的实测对照表(页面表格默认显示前 6 行,完整 12 行请点「加载更多」):
| 日 r | 天数 | 单利总额 | 日复利总额 | 连续复利总额 | 日复利涨幅 |
|---|---|---|---|---|---|
| 0.15% | 1 | 10015.00 | 10015.00 | 10015.01 | 0.1500% |
| 0.15% | 7 | 10105.00 | 10105.47 | 10105.55 | 1.0547% |
| 0.15% | 30 | 10450.00 | 10459.93 | 10460.28 | 4.5993% |
| 0.15% | 90 | 11350.00 | 11444.21 | 11445.37 | 14.4421% |
| 0.15% | 180 | 12700.00 | 13096.99 | 13099.64 | 30.9699% |
| 0.15% | 365 | 15475.00 | 17282.16 | 17289.25 | 72.8216% |
| 0.05% | 30 | 10150.00 | 10151.09 | 10151.13 | 1.5109% |
| 0.50% | 30 | 11500.00 | 11614.00 | 11618.34 | 16.1400% |
| 1.00% | 30 | 13000.00 | 13478.49 | 13498.59 | 34.7849% |
| −0.50% | 30 | 8500.00 | 8603.84 | 8607.08 | −13.9616% |
| 0.15% | 462 | 16930.00 | 19986.68 | 19997.06 | 99.8668% |
| 0.15% | 463 | 16945.00 | 20016.66 | 20027.07 | 100.1666% |
最后两行是翻倍的临界点:第 462 天日复利总额 19986.68还没到 20000,第 463 天 20016.66 已经超过——所以 0.15%/日 的精确翻倍点是第 463 天。
常见误用对照。
| 常见说法 | 为什么不准确 |
|---|---|
| 「日收益 0.15%,一年就是 0.15×365 = 54.75%」 | 这是单利。同期日复利是 72.8216%,差 18.07 个百分点,按 10000 本金算就是 1807 USDT |
| 「年化 72.8%,半年就是 36.4%」 | 年化不能线性折半。正确做法是 (1+0.728216)^(182.5/365) − 1 = 31.4616%;线性折半会高估约 4.95 个百分点 |
| 「日收益 0.15% 看着很小」 | 日复利一年 72.82%,翻倍只要 463 天。这是数字量级问题,不是风险问题 |
| 「跌 50% 涨回来就平了」 | 跌 50% 后本金剩一半,要涨 100% 才回原点,此时终值是 0.75 倍 |
边界与精度
IEEE754 双精度的两个硬边界。JS 的 Number 是 64 位浮点,安全整数上限 2⁵³−1 = 9007199254740991。本页默认示例的 17282.16 远在范围内,但把 r 与 n 推到边界附近就会撞上第二个边界:Math.pow 的结果是 double,超过 Number.MAX_VALUE ≈ 1.7976931348623157e+308 就返回 Infinity。临界条件是 n · ln(1+r) > 709.78,实测:
- r = 50% 时临界 n = 1750.53 天;
- r = 100% 时临界 n = 1024.00 天;
- r = 0.15% 时临界 n = 473541.47 天(远超本页 3650 上限,所以默认区间内安全)。
这就是本页把天数锁在 3650 的原因:(1.0015)^3650 = 237.6735,仍在安全范围;而 r 填到 50% 时 (1.5)^3650 必然溢出,所以 r 的上限与 n 的上限必须一起校验,只卡一个不够。本页的实际判据是算出 ln(1+r)·n,超过 709.78 就直接报错并写明实际值。
浮点累加必须靠 toFixed 收口。0.1 + 0.2 = 0.30000000000000004,所以本页从不比较浮点相等,金额一律用 toFixed(2) 后再显示。Number.EPSILON = 2.220446049250313e-16 是「1 与下一个可表示 double 的差」,r 小到 1e-16 量级时 1+r 会因精度损失而不再变化,本页因此把 r 的有效下限放在 ±0.0001%——再小下去 ln(1+r) 的有效数字已经丢失,折年化结果只剩噪声。
关于分母为0。P₀ 下限设为 0.01,而不是允许 0:P₀ = 0 时三条公式都返回 0,看起来「没有本金所以没有收益」是自洽的,但折年化与涨幅会变成 0/0,在 toFixed 下静默变成 NaN。本页在 P₀ ≤ 0 时直接 fail,并提示把本金填成大于 0 的数值。
最后是一句必须说清的话。本页做的是纯算术:它不知道你的手续费率、不知道滑点、不知道交易所会不会插针、也不知道这笔持仓的最大回撤。加密行情一天内的波动常常远超 0.15% 这个量级——用一条固定的日收益率外推一年,本身就假定了每天都是同一个涨跌幅,而这恰恰是加密市场最不成立的那个假设。加密货币利润计算器的所有输出都是数学演示,不构成任何投资建议。
常见问题
日收益率到底应该填哪种?从哪里拿?
本页要的是日百分比涨跌,即 (今收 − 昨收) ÷ 昨收。如果你的数据源给的是「7 日年化」(APY)或「7 日平均利率」(APR7),必须先换算,不能直接填进来。APR7 的日化近似是 APR7 ÷ 365;APY 要按离散口径反解 r = (1 + APY)^(1/365) − 1。注意行情站上的「日收益」经常是按 24 小时任意时点滚动算的,不是交易所的自然日(UTC 00:00 到 24:00),两者数值不同。
为什么不用 APY 和 APR 这两个标准术语?
因为它们在存款与债券里是硬规定的产品名(Annual Percentage Yield / Annual Percentage Rate,由各国金融监管规定披露口径),拿它们给加密的波动收益命名会让两类完全不同的东西混在一起。本页因此明确列出三套原始公式与天数口径,而不是给一个「年化」数字让你猜它是怎么来的。如果你需要的是银行存款或国债那种带固定利率、明确到期日的产品,去用年利率计算器。
单利比复利小,是不是说明交易所少给了我钱?
不是,两者是两个不同的数学模型,对应两种不同的资金处理方式。单利假设你每天把赚到的部分取出来不再投入;复利假设赚到的全部滚存。真正的对账要看交易所的账单:它记的是实际成交价对应的真实日序列,你把每日的真实涨跌连乘出来的结果才等于真实余额。本页是把「同一个 r 套进不同公式」的差别摆出来,不是任何一方的账。
连续复利 e^(rn) 会不会高估收益?
在 r 固定的前提下,它略微高估离散结果,因为 ln(1+r) < r。实测 r = 0.15%、n = 30 时连续比离散多 0.352676 USDT,相对偏差 0.003372%。但这个「高估」只在 r 是离散日百分比时才成立——如果你手里的 r 是瞬时连续复利率,那 e^(rn) 才是对的表达,(1+r)ⁿ 反而偏高。判断依据只有一个:你拿到的 r 到底是哪一种。
365 和 360 到底该选哪个?
看你在算什么。本币对、加密货币、任何「每天真实发生一次」的市场,用 365;债券附息、货币市场工具、利差合约里的报价基准,用 360(这源于 US 30/360 与欧陆 Actual/360 的惯例)。本页两列都算出来,1.388889% 的差额就是选错口径的代价。另外还有一个 252 的口径,用在「按交易日计数」的年化上——它算出的年化数字最大,因为一年只有约 252 个交易日,别的场合不要混用。
为什么结果只保留两位小数?
因为 P₀ 与 r 都是你手工填的输入,两位小数之外的精度没有意义。更重要的是不要把本页的输出当成对账依据:真实收益要按每笔成交的实际价格计算,还要扣手续费、提现费与滑点。这里给出的是「如果没有摩擦、r 恒定」时的数学值,用来对比公式之间的差别足够了。
输入 r = 0 会怎样?
三条公式都返回 P₀ 本身(10000),涨幅 0%,翻倍天数显示为「不会翻倍」而不是除以 0 得到的 Infinity 或 NaN。r = 0 是一个合法输入,本页不会报错,但会在提示区写明此时三套公式完全重合、没有可比较的差异。
为什么天数上限只有 3650?
因为再往上对「加密行情」这个场景已经没有意义,同时它正好卡在浮点溢出的前面。3650 天是 10 年,实测 (1.0015)^3650 = 237.6735,离双精度上限还差很远。真正的约束不是天数,而是 r × n 的组合——r 填 50% 时 1750 天就溢出了,这也是为什么页面在每次计算时都会重新检查这个组合,而不是只看天数。