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

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

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)

代码位置如下:

图片

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/134180
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 57分钟前
下一篇 56分钟前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注