原创文章第296篇,专注“个人成长与财富自由、世界运作的逻辑与投资"。 昨天我们使用alphalens分析了alpha-006这个因子【Alpha101因子分析系列】之Alpha006”价量背离“(代码+沪深300成份股全量数据集下载),这个因子比较简单,但看起来效果还不错,今天我们来具体就使用单因子对沪深300成份股进行回测看看。 年化63.9%,夏普1.4,交易出乎意料,我们还在持续的挖掘因子,这个开局效果不错。
![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_1_20231012034006367.png)
![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_2_20231012034006476_wm.png)
代码在工程这个位置:(欢迎大家找问题),代码和数据已经在星球更新:知识星球与开源项目:万物之中,希望至美 需要说明的事,没有考虑成本与滑点,只为演示因子效果,因为这还不是我们的最终策略,最终一定是一组多因子合成的效果,回撤会比这个好,才可以交付实盘验证。 ![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_3_20231012034006992_wm.png)
import pandas as pd
# 把昨天的文件包,放在ailabx/data下的hist_hs300_20230813下,使用duckdb直接访问 from engine.config import CSVS_DIR
from engine.datafeed.dataloader import Duckdbloader
symbols = ['000001.SZ', '000002.SZ'] loader = Duckdbloader(symbols=None, columns=['close', 'open', 'volume'], start_date="20100101") fields = ["-1 * correlation(open, volume, 10)", "close/shift(close,1)-1"] names = ["量价背离_10", 'return_0']
df = loader.load(fields=fields, names=names) df.dropna(inplace=True) print(df)
from engine.env import Env from engine.algo.algo_weights import * from engine.algo.algos import *
e = Env(df) e.set_algos([ #RunDays(5), # SelectBySignal(buy_rules=['ind(roc_20)>0.02'], sell_rules=['ind(roc_20)<-0.02']), SelectTopK(K=1, order_by='量价背离_10'), WeightEqually() ]) e.backtest_loop() e.show_results()
继续搞因子:Alpha015: (-1 * sum(rank(correlation(rank(high), rank(volume), 3)), 3)) 涉及几个函数:sum, rank,还有昨天我们用过的correlation。
def sum(se: pd.Series, N): se = se.groupby('symbol', group_keys=False).apply(rolling, N, 'sum') return se
# index.name = 'date',默认都是序列内部,序列间的需要合并df后来计算。 def rank(se: pd.Series): rank_result = se.groupby('date').rank(pct=True) return rank_result sum是N个序列值求和,比如简单。
rank是按date来groupby,也就是某一天的截面数据计算百分位。 ![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_4_20231012034007633_wm.png)
![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_5_2023101203400854_wm.png)
![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_6_20231012034008680_wm.png)
本质上说,alpha015与昨天的alpha006类似,都是“价量背离”,只是选取最高价与成交量的负相关关系,这里进行了组内的排名,求和等复杂运算。但结果显示,alpha015的ic值要差一些。 复杂就不一定就是好的。 这个单回子回测的年化收益是26%。 ![](http://image109.360doc.com/DownloadImg/2023/10/1215/273693015_7_20231012034008961_wm.png)
因子是无穷多的,因子并不是越多越好,效果差的因子合成进来,对总体结果会有影响。 我们也无法指望机器学习模型能够“自动”甚至“智能”的去拟合这个结果,导致的结果要么不拟合,要么过拟合。 一些感悟:
今天发现自己的手机号有快递,结果查询状态,没有发件人信息,只有物流的揽件信息,然后快递在运送途中,另外目的地也没有说送到哪。
有没有朋友知道这个什么情况。 之前有收到过类似的”测试件“,里边是一张类似答谢,可以扫码抽奖之类的,当然直接就给扔了。不知道是个啥。 【Alpha101因子分析系列】之Alpha006”价量背离“(代码+沪深300成份股全量数据集下载) 知识星球与开源项目:万物之中,希望至美
|