社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Deepseek写因子,十年年化收益24.5%的均线能量核心行业轮动(python代码+数据)

七年实现财富自由 • 4 月前 • 156 次点击  

原创内容第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()

# 创建掩码,排除方向为0NaN的情况
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%+的策略,每周五迭代一次,代码和数据在星球全部开源。

扩展  •  历史文章   

EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)

deap时间序列函数补充,挖掘出年化39.12%的轮动因子,卡玛比率2.52

年化19.3%,回撤仅8%的实盘策略,以及backtrader整合CTPBee做实盘(附python代码和数据)

近四年年化收益19.3%,而最大回撤仅8%,卡玛比率2.34,投资应该是一件简单的事情。(附python代码+数据)

aitraderv4.2开发计划,整合QMT。年化39.9%的因子与年化19.3%的策略哪个优?

年化18%-39.3%的策略集 | backtrader通过xtquant连接qmt实战

AGI通用智能实验室

紧跟前沿AGI研究进展,论文复现,可运行的代码,落地应用等。

下面这个不是“AI量化投资实验室”, 是做大模型相关的星球)

▼点击阅读原文,访问“AI量化实验室”策略集合
(http://www.ailabx.com)。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178860
 
156 次点击