红利低波与创成长,加上动量过滤,年化12.6%(python代码)

原创文章第618篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。

未来几周,我们会做的几件事情:

1、数据方面:

基础量价数据自动更新,目前计划三类数据:指数、ETF、期货。(日线),期货是主连合约日线。

其他如果大家有需要,或者有好的数据源,请提供。

自动dump到csv供回测引擎使用,自动更新网站上策略的结果,产生交易信号。

basic信息,instruments列表信息。

2、整合单因子分析框架,主要是alphalens分析框架。

结合因子表达式,对单因子进行分析。

3、单因子回测策略。

4、因子挖掘整合进来——主要使用deap(也许会纳入gplearn这个看需要)。

5、StockRanker——基于lightGBM,多因子排序。

A股的指数,我同步了126支,至少有一支ETF基金的指数,也就是说,这个指数是可以交易的。

ETF排重之后(像沪深300指数的ETF有几十支)有150多支,从量化的角度,我们选择交易量最大的,通常也是规模最大的一支即可。——像黄金ETF,不方便同步指数数据的,直接使用ETF数据。

大家可以会好奇,为何不直接使用ETF,使用ETF自然是方便,但有些ETF的上市时间很短,所以数据很有限。而指数则会从更早的时间开始。

因此,我们把两份数据都提供。

图片

图片

图片

图片

昨天有同学留言,说希望提升因子挖掘的优先级,安排。

在因子挖掘之前,还是要新增单因子分析功能,否则你如何知道单个因子是好或不好。

图片

在大类资产上,两周(10天)的动量IC值是明显的,因此,我们之前的周调仓,应该优化成两周调仓。

因子单调性一般:

图片

单因子分析的代码如下——其实形式上与notebook还是streamlit无关——streamlit可以做交互,比如大家自己一选就可以直接查看结果,而notebook需要修改一点代码:

图片

import streamlit as st


def build_page():
    from config import DATA_DIR
    instru = DATA_DIR.joinpath('instruments')
    import os

    files = os.listdir(instru.resolve())
    filename = st.selectbox('请选择投资标的集合:', options=files)
    with open(instru.joinpath(filename).resolve(), 'r') as f:
        symbols = f.readlines()

    symbols = [s.replace('\n', '') for s in symbols]
    st.write(symbols)
    factor_expr = st.text_input('请输入因子表达式', value='roc(close,20)')
    if st.button('加载数据并计算因子值'):
        with st.spinner('回测进行中,请稍后...'):
            from datafeed.dataloader import CSVDataloader

            loader = CSVDataloader()
            df = loader.get_df(symbols=symbols, set_index=True)
            df = loader.calc_expr(df, fields=[factor_expr], names=['factor_name'])
            # df.set_index(['date', 'symbol'], inplace=True)
            factor_df = df[['factor_name','symbol']]
            factor_df.set_index([factor_df.index, 'symbol'], inplace=True)
            close_df = loader.get_col_df(df, col='close')

            from alpha.alphalens.utils import get_clean_factor_and_forward_returns

            results = get_clean_factor_and_forward_returns(factor_df, close_df)
            # st.write(results)

            from alpha.alphalens.streamit_tears import create_full_tear_sheet
            create_full_tear_sheet(results)

代码位置如下:

图片

历史文章:

量化策略优选发布,支持策略发布到服务器持续运行(附python代码)

年化26.4%,quantlab5.5发布——多任务机器学习组合优化,可视化策略生成向导(代码+数据)

AI量化实验室——2024量化投资的星辰大海

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI量化投资实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值