原创内容第791篇,专注量化投资、个人成长与财富自由。
一个里程碑——今天咱们公众号粉丝数到达一个新记录啦!
一个小小的成就,感谢大家的支持。
日更差不多800天,一直坚持原创不容易,而且咱们不只是写文章,还需要先写代码,开发策略。
昨天咱们如期交付了aitrader_v4.2的系统代码和数据:aitrader_v4.2源码发布,含39.5%的策略,openctp及qmt实盘对接(python代码+数据集)
新的一周计划如下:
1、交付均线能量因子及行业轮动策略。
2、deap遗传算法行业轮动因子挖掘及策略代码。
3、ionic+vue3 app主体功能开发完成。
4、backtrader + ccxt实盘对接。
5、其余已知问题。
网上看到的一个策略:均线能量,就统计均线值累计上涨或下跌的期数。对六大行业指数进行能量轮动。
由于部分行业ETF成立时间较晚,我们可以使用对应的指数来回测,看更长周期。我们来复现一下:
先看回测效果:


长期年化24.5%,不过回撤有点大,可以作为复合策略的子策略使用。

我们整理好逻辑,同样让deepseek来写代码(这个因子逻辑挺绕,deepseek思考了5分钟,修改了好几个版本,最终呈现如下)
@calc_by_symbol
def ma_energy(close: pd.Series, window: int) -> pd.Series:
# 计算移动平均线
ma = close.rolling(window).mean()
# 计算均线的差分
diff = ma.diff()
# 初始化方向序列,并根据差分确定方向
direction = pd.Series(index=diff.index, dtype=float)
direction[diff > 0] = 1 # 上涨
direction[diff < 0] = -1 # 下跌
direction[diff == 0] = 0 # 不变
# 当差分无法计算时(如前一日均线为NaN),方向设为NaN
direction[diff.isna()] = np.nan
# 根据方向变化分组
groups = (direction != direction.shift(1)).cumsum()
# 创建掩码,排除方向为0和NaN的情况
mask = (direction != 0) & (~direction.isna())
# 计算各组的累积计数
cumcount = mask.astype(int).groupby(groups).cumsum()
# 计算能量值:方向 × 累积计数
energy = direction * cumcount
# 将均线无效位置的能量设为NaN
energy[ma.isna()] = np.nan
return energy
完整的策略代码如下(系统代码和数据下载:AI量化实验室——2025量化投资的星辰大海):
from bt_algos_extend import Task, Engine
def ranking_ETFs():
t = Task()
t.name = '均线能量行业轮动'
# 排序
t.period = 'RunDaily'
t.weight = 'WeighEqually'
t.select_buy = ['ma_energy(close,20)>0']
t.select_sell = ['ma_energy(close,20)<0']
t.order_by_topK = 2
t.order_by_signal = 'ma_energy(close,20)'
t.symbols = [
'399975.SZ', # '512880.SH', # 证券ETF
'H30184.CSI', # '512480.SH', # 半导体ETF
'399976.SZ', # '515030.SH', # 新能车
'930697.CSI', # '159996.SZ', # 家电ETF
'399989.SZ', # '512170.SH', # 医药ETF
'000922.SH' # '515080.SH', # 中证红利
]
t.benchmark = '000300.SH'
return t
from config import DATA_DIR_QUOTES_INDEX
res = Engine(path='quotes_index').run(ranking_ETFs())
import matplotlib.pyplot as plt
print(res.stats)
from matplotlib import rcParams
rcParams['font.family'] = 'SimHei'
# res.plot_weights()
res.prices.plot()
plt.show()
代码和数据下载:AI量化实验室——2025量化投资的星辰大海
AI量化实验室 星球,已经运行三年多,1300+会员。
aitrader代码,含几十个策略源代码,因子表达式引擎、
遗传算法(Deap)因子挖掘引擎等,支持vnpy,qlib,backtrader和bt引擎,
内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。

AGI通用智能实验室
紧跟前沿AGI研究进展,论文复现,可运行的代码,落地应用等。
(下面这个不是“AI量化投资实验室”, 是做大模型相关的星球)
