10%长期年化真的挺容易的:国内版全天候风险平价策略

您可以自行,快速创建自己的可实盘策略。

我们花30秒来配置经典的“大小盘趋势轮动策略”。

第一步,选择投资标的池,这里我们选择:沪深300ETF和创业板ETF。

图片

第二步,配置交易规则:

这里我们只引入一个因子,就是20日动量,命名为roc_20。

图片

第三步:(保持默认值即可)

图片

搞定:

图片

界面代码发下(今天或明天打包发布)AI量化实验室——2024量化投资的星辰大海

import streamlit as st
import requests
import pandas as pd
from engine.task import Task
from engine.engine import Engine

url = 'http://ailabx.com/api/funds'


@st.cache_data
def get_funds():
    datas = requests.get(url).json()
    dict_data = {item['symbol']: item['name'] + '({})'.format(item['symbol']) for item in datas}
    return dict_data


task = Task()


def select_funds():
    def _select_funds_format(x):
        return get_funds()[x]

    symbols = st.multiselect(label='请选择基金:', options=list(get_funds().keys()),
                             format_func=lambda x: _select_funds_format(x))
    task.symbols = symbols


def select_period():
    periods = {'RunDaily': '每天运行', 'RunWeekly': '每周运行', 'RunMonthly': '每月运行', 'RunQuarterly': '每季度运行',
               'RunYealy': '每年运行',
               'RunDays': '自定义天数'}

    def _period_format(x):
        return periods[x]

    period = st.selectbox(label='请选择调仓周期', index=0, options=list(periods.keys()),
                          format_func=lambda x: _period_format(x))
    if period == 'RunDays':
        days = st.number_input(label='请输入天数', min_value=1, max_value=365)
        task.algo_period_days = days
    task.algo_period = period


def select_weights():
    weights = {
        'WeightEqually': '等权分配',
        'WeightFix': '固定权重',
        'WeightERC': '风险平价'
    }

    def _weight_format(x):
        return weights[x]

    weight = st.selectbox(label='请选择权重分配', options=list(weights.keys()), format_func=lambda x: _weight_format(x))
    if weight == 'WeightFix':
        fix_weigths = st.text_input(label='请输入权重(逗号分隔)', value='[]')
        task.algo_weight_fix = eval(fix_weigths)
    task.algo_weight = weight


def add_features():
    col1, col2 = st.columns(2)
    with col1:
        features = st.text_area(label='因子表达式')
        task.features = features.split('\n')
    with col2:
        feature_names = st.text_area(label='因子名称')
        task.feature_names = feature_names.split('\n')


def buy_and_sell_rules():
    col1, col2 = st.columns(2)
    with col1:
        buy_rules = st.text_area(label='买入规则')
        task.rules_buy = buy_rules.split('\n')
    with col2:
        sell_rules = st.text_area(label='卖出规则')
        task.rules_sell = sell_rules.split('\n')


def order_by():
    order_by = st.selectbox(label='排序因子', options=task.feature_names)
    task.order_by = order_by


def backtest():
    if st.button(label='开始回测'):
        e = Engine(task)
        e.run()
        df = e.get_df_equities()
        ratio = e.get_ratios(df)
        orders_df = e.get_orders_df()
        st.write(ratio)
        print(ratio)
        st.line_chart(df)

后端功能大重构进展比较顺利,后面还会有一些小细节的持续改进。

回归Quantlab,本周要发布的源代码版本是V3.7。

用户可以低代码创建自己的策略,进一步降低使用门槛。数据在服务下载,当然大家可以自行下载到本地。

ETF选择,可以检索名称或者symbol:

图片

def select_funds():
def _select_funds_format(x):
return get_funds()[x]
symbols = st.multiselect(label='请选择基金:', options=list(get_funds().keys()), format_func=lambda x:_select_funds_format(x) )
st.write(symbols)

选择调仓周期:

图片

def select_period():
    periods = {'RunDaily': '每天运行', 'RunWeekly': '每周运行', 'RunMonthly': '每月运行', 'RunQuarterly': '每季度运行',
               'RunYealy': '每年运行',
               'RunDays': '自定义天数'}

    def _period_format(x):
        return periods[x]

    period = st.selectbox(label='请选择调仓周期', index=0, options=list(periods.keys()),
                          format_func=lambda x: _period_format(x))
    if period == 'RunDays':
        days = st.number_input(label='请输入天数', min_value=1, max_value=365)
        st.write('{}天凋仓'.format(days))
    st.write('您选择调仓周期:{}'.format(period))

我们来演示一个完整的流程:

图片

年化10%其实真的挺容易的!

图片

系统整体代码及数据下载AI量化实验室——2024量化投资的星辰大海

因子挖掘

关于因子挖掘这条线,之前咱们发布DeepAlpha,DeepAlpha通用因子挖掘:支持GPlearn遗传算法和深度强化学习挖掘因子(代码+数据下载)

业界主流的两种机器挖因子的模式都涵盖了:遗传算法和深度强化学习。

不过底层使用了Qlib的数据存储。

很多同学问何时可以简化这部分处理,其实方案一直都有。但我当前却想跳过这一步。

为何?

无论是遗传算法还是强化学习,都是机器“暴力”搜索参考及函数空间,去寻找满足fitness的表达式。

在如此低信噪比的金融数据里,过拟合基本是定论。

不可解释性,不稳定性,导致这一块不好用。

所以,很多私募仍然在使用传统人工构造因子的逻辑。

我在想——有没有可能把二者结合起来呢?

直到看到这篇研报,之前分析过:研报拆解:大语言模型LLM和多智能体(Multi-Agents)实现量价因子挖掘框架

让大模型用Few-shot方式学习前人发布过的好的因子,解释这些因子。然后“仿写”,然后通过因子分析给出反馈,改进,这个持续迭代去优化和挖掘新的因子。——这是星球目前要尝试的方向,也代表着未来

吾日三省吾身

做商业必环,用户价值为先。

用户要学习量化,学会量化,会用系统,获得策略,得到收益。

历史文章:

研报拆解:大语言模型LLM和多智能体(Multi-Agents)实现量价因子挖掘框架

年化29%,夏普比1.26:红利与创成长趋势轮动策略(代码+数据下载)

每日一策略:斜率动量与RSRS择时(代码+数据)以及基于Django的量化社区开发

AI量化策略商城核心逻辑实现——创业板动量择时策略为例(代码+数据)

AI量化平台产品化Quantlabv3.6发布:日拱一卒,功不唐捐。(更新优惠券)

Quantlab3.6代码发布——重写创业板择时策略:年化20%, 回撤18.8%(代码+数据下载)

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

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

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

相关推荐

发表回复

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