轮动策略模板重写,先来一个年化21%的策略(代码+数据)

今天我们来完成如下两个功能: 择时策略模板和streamlit实现GUI。

图片

择时模板更为简单:

@dataclass
class TaskPickTime(Task):  # 择时策略模板
    def get_algos(self):
        return [
            RunAlways(),
            SelectBySignal(rules_buy=self.rules_buy,
                           buy_at_least_count=self.at_least_buy,
                           rules_sell=self.rules_sell,
                           sell_at_least_count=self.at_least_sell
                           ),
          WeightEqually(),
            Rebalance()
        ]

就是配置一下买入,卖出信号:

from engine.engine import Engine
from engine.task import TaskPickTime

task = TaskPickTime()

task.benchmark = '159915.SZ'
task.symbols = [ "159915.SZ"]

task.features = [ "买入信号"]
task.feature_names = ["买入信号"]

task.rules_buy = ['信号>x']
task.rules_sell = ["信号<y"]

e = Engine(task=task)
e.run()
e.stats()

回测结果:

图片

年化19.7%,回测18.8%,远超创业板指数本身。

图片

上面的参数,在一些平台是收费的,因此我没有直接贴出来。

大家可能好奇,这些最优参数怎么来的

其实这就是下一步我们要做的事情——超参数优化。

使用机器学习,遗传算法等对参数空间进行搜索,找到最优化的参数集。——你发现,你改动参数,结果大概率会变差,因为这是我们优化的结果。

今天的第二项任务是streamlit做界面,有一个界面方便大家运行策略,分析结果。

图片

图片

大家可以下载代码自行体验:

图片

星球每天给大家写实战代码、交付策略:

gui的核心代码如下:

import streamlit as st
from streamlit_option_menu import  option_menu

from engine.engine import Engine
from examples.strategies import task_list

st.set_page_config(page_title='Quantlab - AI量化实验室', page_icon=":bar_chart:", layout='wide')

#定义边栏导航
with st.sidebar:
    choose = option_menu('Quantlab-AI量化实验室',['策略回测','数据分析','机器学习'],
                         icons=['house','book-half','book-half'])

task = st.selectbox(label='请选择策略:', options=task_list())


if st.button('回测'):
    st.write('启动回测:' + task.name)

    with st.spinner('回测进行中,请稍后...'):
        e = Engine(task=task)
        e.run()
        df_all = e.get_df_equities()
        st.line_chart(df_all)
        df_ratios = e.get_ratios(df_all)
        st.write(df_ratios)

版本3.3是值得期待的版本,经过2023年一年的摸索,我们的思路基本成熟。

底层完全重构,从因子表在式,到因子挖掘,后续一系列功能都做得最大程度的复用与环环相扣。确保功能的连续性。

历史文章:

轮动策略模板重写,先来一个年化21%的策略(代码+数据)

去掉底层回测引擎,完全自研,增加超参数优化,因子自动挖掘,机器模型交易。

【就要提价了】AI量化实验室——2024量化投资的星辰大海

昨天花一天时间,把回测引擎主体重写了。

性能提升不是一星半点。

确实是代码读多的好处,把各家所长精华都消化了,缺点尽量规避。

今天的计划:

1、轮动模板迁移过来。

2、补充orders ,trades细节。

3、调试stats细节。

使用examples/scripts下的脚本下载所需要的ETF日线数据(注意这里都是后复权的)。

图片

轮动策略的模板同样简洁:

@dataclass
class TaskRolling(Task):  # 轮动策略模板
    def get_algos(self):
        return [
            self._parse_period(),
            SelectBySignal(rules_buy=self.rules_buy,
                           buy_at_least_count=self.at_least_buy,
                           rules_sell=self.rules_sell,
                           sell_at_least_count=self.at_least_sell
                           ),
            SelectTopK(factor_name=self.order_by, K=self.topK, drop_top_n=self.dropN,
                       b_ascending=self.b_ascending),
            self._parse_weights(),
            Rebalance()
        ]

算法每天盘后运行,先是信号选股,把rsrs标准分<0的过滤掉,然后按20天动量斜率排序,择期最大者持有。

策略配置如下:

from engine.engine import Engine
from engine.task import TaskRolling

task = TaskRolling()

task.benchmark = '510300.SH'
task.symbols = [ "513100.SH", "159934.SZ", "510880.SH", "159915.SZ",]

task.features = [ "roc(close,20)", "slope(close,20)", "slope_pair(high,low,18)", "zscore(rsrs_18,600)",]
task.feature_names = [ "roc_20", "slope_20", "rsrs_18", "rsrs_norm",]

task.rules_buy = []
task.rules_sell = ["rsrs_norm<0"]

task.order_by = 'slope_20'

e = Engine(task=task)
e.run()
e.stats()

策略表现:

图片

策略代码在如下位置:

图片

大家可以前往星球下载,

【就要提价了】AI量化实验室——2024量化投资的星辰大海

A股市场开年以来可是相当震撼。

上午表现还可以,群里一片哀嚎。

这个时候,大类资产配置的优势就体现出来了 。

万物皆周期,投资尤是。

按自己的规划和交易系统走,不忘初心。

在目前的规划里,深度强化学习本身也是用于挖因子,不过,有quant4.0的版本里,端对端且跳过因子挖掘,或者说通过模型直接学习价量中的信息,这在图像识别和自然语言处理里,已经实现了。

神经网络能自动提取股票原始量价数据中的特征,实现端到端的因子挖掘和因子合成。注意力机制在多数场景下有效。

我们基于策略模板,尽量把开发量简化。

当前已经重构了大类资产配置模板,轮动模型,明天是择时模板,机器因子合成模板,属于轮动策略的一个分支,然后就是多策略组合。

之后是因子挖掘,jplearn, 深度强化学习端对端,因子评价等。

还有就是超参数优化,包括暴力穷举,机器学习,遗传算法超参数优化等。

历史文章:

去掉底层回测引擎,完全自研,增加超参数优化,因子自动挖掘,机器模型交易。

自动挖因子,自动超参数优化,多策略组合与全天候实盘——Quantlab的2024进化路线图

投资要义:“股债平衡兼套利,低估分散不深研”——大类资产配置,轮动,择时,多策略组合。

2023再见,2024你好。

【就要提价了】AI量化实验室——2024量化投资的星辰大海

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

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

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