CMO 的计算方法(公式、输入和验证)
直接答案:CMO 是如何计算的
CMO(钱德动量振荡器)通过比较固定回溯周期内近期价格上涨幅度总和(“收益”)与下跌幅度总和(“亏损”),并将该比较结果转换为振荡器数值。
一种常见的表达方式是:
CMO = 100 × (SumGains − SumLosses) / (SumGains + SumLosses)
其中:
- SumGains 是回溯周期内正向价格变化的总和。
- SumLosses 是回溯周期内负向价格变化绝对值的总和。
当分母不为零时,该计算结果通常在 −100 到 +100 之间。
计算机制:定义输入和逐步计算过程
1) 选择回溯周期长度
选择一个整数回溯周期长度,通常记为 N。在某一时刻的计算使用该序列最近 N 个价格变动。
验证假设:为使比较有意义,每次计算 CMO 时必须使用相同的 N。
2) 选择价格序列
CMO 基于价格时间序列计算。价格可通过多种方式定义(例如收盘价),但所用定义必须保持一致。
示例假设:以下计算使用单一价格序列 P(t),并定义相邻时间步之间的价格变化。
3) 计算每一步的价格变化
在回溯窗口内的每个时间步 i,计算变化:
- ΔP(i) = P(i) − P(i−1)
然后将每个变化拆分为两个部分:
- Gain(i) = ΔP(i) 如果 ΔP(i) > 0,否则为 0
- Loss(i) = −ΔP(i) 如果 ΔP(i) < 0,否则为 0
注意符号约定:亏损以正值表示。
4) 在回溯窗口内对收益和亏损求和
- SumGains = 最近 N 步中所有 Gain(i) 的总和
- SumLosses = 最近 N 步中所有 Loss(i) 的总和
5) 应用振荡器公式
计算:
- CMO = 100 × (SumGains − SumLosses) / (SumGains + SumLosses)
重要提示:如果 SumGains + SumLosses = 0,则振荡器在数学上无定义,因为会出现除以零的情况。在实际实现中,不同工具可能以不同方式处理此情况(例如留空或赋予特定值)。若需独立验证,请检查您的方法如何处理分母为零的情况。
实例或证据:小型数值演算示例
假设 N = 4,并使用以下连续时间步的价格序列 P:
- P(0)=100, P(1)=102, P(2)=101, P(3)=103, P(4)=103
步骤 1:计算最近 4 步的变化:
- ΔP(1)=102−100=+2 → Gain=2, Loss=0
- ΔP(2)=101−102=−1 → Gain=0, Loss=1
- ΔP(3)=103−101=+2 → Gain=2, Loss=0
- ΔP(4)=103−103=0 → Gain=0, Loss=0
步骤 2:对收益和亏损求和:
- SumGains = 2 + 0 + 2 + 0 = 4
- SumLosses = 0 + 1 + 0 + 0 = 1
步骤 3:计算 CMO:
- CMO = 100 × (4 − 1) / (4 + 1)
- CMO = 100 × 3/5
- CMO = 60
从计算角度看,这意味着净方向为正,因为在选定窗口内,累计收益超过了累计亏损。
局限性和风险:可能出现的问题及变化原因
1) 当收益和亏损均为零时,结果无定义或不稳定
如果在回溯窗口内价格从未上涨或下跌(所有变化均为零),则 SumGains = 0 且 SumLosses = 0,导致分母为零。不同平台可能显示不同结果。这是独立验证中的一个关键失效模式。
2) 对输入价格定义方式的敏感性
CMO 的数值取决于所选价格序列(例如收盘价 vs 其他一致的价格定义)。即使“回溯周期”和公式相同,使用不同的输入序列也会改变计算出的收益和亏损。
3) 对回溯周期长度(N)的敏感性
改变 N 会改变包含的过去变动,从而影响 CMO。较长的窗口通过聚合更多步骤平滑更多波动;较短的窗口对近期变化反应更灵敏。这并非公式问题,但会影响图表间的可比性。
4) 不保证未来走势
CMO 仅在固定窗口内总结过去变动;CMO 的历史模式并不能保证未来走势会遵循。成本、执行差异和市场状态变化都可能影响在特定振荡器读数后价格的行为。
5) 数据和采样差异
如果从不同时间框架(或时间步构建方式不同的数据)计算 CMO,则 ΔP 值集合会变化,从而改变 CMO。
验证与后续问题:如何检查您的计算
为独立验证 CMO 计算是否正确:
- 确认您的价格定义(所用序列)和回溯周期长度 N。
- 重新计算窗口内每一步的 ΔP(i)。
- 使用相同的符号规则将每个 ΔP 拆分为 Gain 和 Loss 幅度。
- 对收益和亏损求和,并验证分母(SumGains + SumLosses)非零。
- 应用公式 CMO = 100 × (SumGains − SumLosses) / (SumGains + SumLosses)。
接下来可考虑的问题:“CMO 设置如何改变其行为?” 这取决于 N 和价格序列的选择,两者直接影响收益/亏损的总和。