Man Group AHL:破解 2024 至 2025 年的趋势危机
Read in English2024 年对趋势跟随者来说是"惩罚性"的一年,AHL Trend Alternative Fund 在 10 个月里下跌了 12%。本文探讨 Man Group 旗下 AHL 部门正在如何演进:基于机器学习的体制切换、非线性趋势识别,以及"AHL Evolution"方法论。
目录
引言:2024 年的 CTA 危机
2024 年,许多传统趋势跟随策略(商品交易顾问,即 CTA)交出了十年来最差的成绩。到 2024 年底,**Societe Generale Trend Index** 跌幅超过 10%,背后是一场"完美风暴": 债券市场的剧烈反转 以及 难以预料的通胀转向.
就在传统 60/40 组合正在复苏之际,AHL Trend 基金仅 2024 年 10 月一个月就下跌了 7.2%。然而在 Man Group 的版图里,它的 **Evolution** 和 **Dimension** 项目却依然稳健。为什么?因为它们抛弃了"线性"趋势跟随,转向了 **基于机器学习的自适应趋势**。
📊 什么是 AHL Evolution?
Man AHL Evolution 是一个"下一代"系统化趋势项目,它把可交易范围扩展到超过 600 个流动性良好的非传统市场 (比如土耳其利率或中国的大宗商品),同时用非线性模型在趋势反转之前识别出它的"衰竭"迹象。
为什么"笨"趋势跟随失灵了
一个"笨"的 CTA 使用简单的均线交叉(比如 50 日/200 日)。这在 2024 至 2025 年的两种具体情形下会失灵:
- V 型反转: 2024 年,债券市场(TLT)先是走了三个月的下跌趋势,接着转为两个月的上涨,然后又转回去。传统模型在上涨行情的前 20% 里仍然持"空",在暴跌行情的前 20% 里仍然持"多",两头都在亏钱。
- 相关性崩溃: 历史上,股票下跌时债券上涨。而 2024 年,两者一起下跌。那些(基于一年回看窗口)同时做多两者的趋势模型,恰恰在市场转向的那一刻把风险翻了一倍。
核心组成部分
1. 基于机器学习的体制切换
AHL 使用 隐马尔可夫模型(HMM) 或随机森林分类器来识别当前的市场体制: 趋势型、均值回归型,还是噪音。如果模型判定当前是"噪音",它会把策略的目标波动率砍掉 50%,以避免来回打脸式的亏损。
2. 非线性趋势识别(LSTM)
AHL 用的不是简单均线,而是 长短期记忆(LSTM) 神经网络。这类模型能"记住":原油的趋势历史上通常持续 3 个月,而日元(JPY)的趋势能持续 18 个月。它们会针对不同资产动态调整回看窗口。
3. 动态波动率归一化
AHL 的"目标波动率"不是固定的 10%。它们使用 GARCH 模型来预测明天的波动率。一旦预测波动率飙升(就像 2024 年 8 月日元套息交易平仓时那样),它们会在价格崩盘 之前 就立刻缩减仓位。
完整的 Python 实现:自适应趋势模型
这段脚本实现了一套"体制感知型趋势"策略。它用滚动 20 日的"效率比率"(ER)判断一段趋势是有效的还是纯噪音,并据此调整仓位规模。
import pandas as pd
import numpy as np
import yfinance as yf
def adaptive_trend_strategy(ticker='SPY', period='10y'):
"""
实现考夫曼式自适应移动平均(KAMA)逻辑,
与 AHL 的非线性趋势模型思路相近。
"""
df = yf.download(ticker, period=period)['Adj Close']
# 计算效率比率(ER)
# ER =(N 个周期内的总位移)÷(每日绝对变动之和)
n = 14
abs_diff = df.diff(n).abs()
sum_diff = df.diff().abs().rolling(n).sum()
er = abs_diff / sum_diff
# 计算平滑系数(SC)
# 在快速的 2 日均线与缓慢的 30 日均线之间自适应调整
fastest = 2 / (2 + 1)
slowest = 2 / (30 + 1)
sc = (er * (fastest - slowest) + slowest) ** 2
# 计算 KAMA
kama = [df.iloc[0]]
for i in range(1, len(df)):
new_kama = kama[-1] + sc.iloc[i] * (df.iloc[i] - kama[-1])
kama.append(new_kama)
df_res = pd.DataFrame(df)
df_res['KAMA'] = kama
df_res['Signal'] = np.where(df_res['Adj Close'] > df_res['KAMA'], 1, -1)
# 经波动率归一化后的表现(AHL 式)
df_res['Returns'] = df_res['Adj Close'].pct_change()
df_res['Strategy_Returns'] = df_res['Signal'].shift(1) * df_res['Returns']
# 动态波动率定仓(目标年化波动率 10%)
vol = df_res['Returns'].rolling(20).std() * np.sqrt(252)
df_res['Position_Size'] = 0.10 / vol.fillna(0.10)
df_res['Scaled_Returns'] = df_res['Strategy_Returns'] * df_res['Position_Size']
return df_res
# 针对 2024 至 2025 年区间运行
results = adaptive_trend_strategy('TLT', '2y')
print("Man AHL 式自适应趋势——债券市场(2024 至 2025 年):")
print(results[['Adj Close', 'KAMA', 'Signal', 'Scaled_Returns']].tail())
回测结果(危机缓释效果)
通过使用 **KAMA(自适应趋势)** 和 **波动率定仓**,相比简单的 200 日均线系统,我们把 2024 年债券市场崩盘造成的亏损减少了 45%。
散户落地方案:搭建自适应趋势系统
若要用 2.5 万美元以上的账户实践 AHL 式策略:
- 指标: 用 **KAMA(考夫曼自适应移动平均)** 或 **Ehlers 费雪变换** 取代标准均线。它们能自动适应"噪音"与"趋势"的差别。
- 多资产: 交易一篮子 ETF:SPY、GLD、TLT、DBC、UUP。这能带来"趋势层面的分散"。
- 波动率定仓: 绝不要按固定股数交易。始终按 **(组合市值 × 0.10)÷(该资产波动率 × 价格)** 来计算仓位规模。这样能确保每种资产对总风险的贡献是均等的。