Quantlab 5.11含ETF策略年化52%以及卡玛比4.79的债券策略(全量ETF后复权数据下载)

原创内容第649篇,专注量化投资、个人成长与财富自由。

这两天两个策略随代码打包共享:

年化收益52%,最大回撤13%,卡玛比率3.77,ETF轮动系列大有可为(附策略代码和数据下载)。

年化12.6%,最大回撤才2.6%的债券轮动策略,卡玛比4.79,稳稳的幸福

本周更新核心要点:

1、本周所有的策略,含如上两个策略。

2、全量ETF历史日线,一共200多万行,1200+多支ETF,以及LOF基金。

图片

图片

全新的Engine:

class Engine:
    def _parse_rules(self, task: Task, df):

        def _rules(rules, b_or=False):
            signals = []
            for r in rules:
                signals.append(eval(r))

            all = None
            for s in signals:
                if all is None:
                    all = s
                else:
                    if b_or:
                        all != s
                    else:
                        all &= s
            return all

        # rules = ['roc_20>0.02']
        for factor in task.names:
            globals()[factor] = CSVDataloader.get_col_df(df, factor)
            # print(globals()[factor])

        all_buy = _rules(task.select_buy)
        all_sell = _rules(task.select_sell, b_or=True)  # 卖出 求或,满足一个即卖出
        return all_buy, all_sell

    def _get_algos(self, task: Task, df):

        bt_algos = importlib.import_module('bt.algos')

        if task.period == 'RunEveryNPeriods':
            algo_period = bt.algos.RunEveryNPeriods(n=task.period_N)
        else:
            algo_period = getattr(bt_algos, task.period)()

        algo_weight = getattr(bt_algos, task.weight)()

        algo_select_where = None
        # 信号规则
        if task.select_buy is not None:
            signal_buy, signal_sell = self._parse_rules(task, df)

            select_signal = np.where(signal_buy, 1, np.nan)
            select_signal = np.where(signal_sell, 0, select_signal)
            select_signal = pd.DataFrame(select_signal, index=signal_buy.index, columns=signal_buy.columns)
            select_signal.ffill(inplace=True)
            select_signal.fillna(0, inplace=True)
            algo_select_where = bt.algos.SelectWhere(signal=select_signal)

        # 排序因子
        algo_order_by = None
        if task.order_by_signal:
            signal_order_by = CSVDataloader.get_col_df(df, col=task.order_by_signal)
            algo_order_by = SelectTopK(signal=signal_order_by, K=task.order_by_topK, dropN=task.order_by_dropN,
                                       sort_descending=task.order_by_DESC)

        algos = []
        algos.append(algo_period)

        if algo_select_where:
            algos.append(algo_select_where)
        else:
            algos.append(bt.algos.SelectAll())

        if algo_order_by:
            algos.append(algo_order_by)
        algos.append(algo_weight)
        algos.append(bt.algos.Rebalance())

        return algos

    def run(self, task: Task):
        # 加载数据
        df = CSVDataloader.get_df(task.symbols, True, task.start_date, task.end_date)

        # 计算因子
        if len(task.symbols):
            df = CSVDataloader.calc_expr(df, fields=task.fields, names=task.names)

        s = bt.Strategy(task.name, self._get_algos(task, df))

        df_close = CSVDataloader.get_col_df(df, 'close')
        bkt = bt.Backtest(s, df_close, name='策略')

        bkts = [bkt]
        for bench in [task.benchmark]:
            data = CSVDataloader.get([bench])
            s = bt.Strategy(bench, [bt.algos.RunOnce(),
                                    bt.algos.SelectAll(),
                                    bt.algos.WeighEqually(),
                                    bt.algos.Rebalance()])
            stra = bt.Backtest(s, data, name='benchmark')
            bkts.append(stra)

        res = bt.run(*bkts)
        return res

策略代码+数据下载:AI量化实验室——2024量化投资的星辰大海

代码下载:AI量化实验室 星球,已经运行三年多,1100+会员。quantlab代码交付至5.X版本,含几十个策略源代码,因子表达式引擎、遗传算法(Deap)因子挖掘引等,每周五迭代一次。

02 五年财务自由退休

财富自由实战方法论,构建两大系统:金钱系统和商业系统。

推荐第八本书《最重要的事只有一件》。

关于专注。我们想做的事情太多,难免分散注意力。

注意力是稀缺的。把有限的时间聚焦到最重要的事情上。

本书就重要的观点:最重要的事情就是当你完成这件事后,其他事情变得不重要或不必须。

比如咱们说现金系统和商业系统。

最重要的是商业系统。

因为现金系统投资体系构建完成,需要更多本金。

而商业系统可以补充本金。而商业系统里,最重要的是“有价值的产品”。你就知道自己应该如何安排时间和优先级了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI量化投资实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值