分享

年化26.1%,夏普2+,改进后的轮动策略(代码+数据下载)

 AI量化实验室 2024-05-15 发布于北京

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

策略篇

我们知道,择时非常难。

轮动相对容易。

指增本身也是轮动。它介入主动管理与被动管理之间。

轮动本质也不预测。

比如多因子评分,还是动量轮动。这里的轮动因子,就是相对优势。我们持有有相对优势,淘汰相对落后的。

但K通常不能取太小,为何。

就好比按考试成绩排名,我们应该把前20%的同学都保留,甚至更多。而不应该只取第1名,这里存在随机性。

import algos_extend
K = int(len(symbols)*0.3)
print(K)
s = bt.Strategy('轮动不择时', [
algos_extend.SelectTopK(df_roc,K),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])

s_pick = bt.Strategy('轮动+择时', [
bt.algos.SelectWhere(signal),
algos_extend.SelectTopK(df_roc,K),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])

bench_bh = bt.Strategy("benchmark-等权-买入并持有",[bt.algos.RunOnce(),
bt.algos.SelectAll(),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])

bench = bt.Strategy("benchmark-等权-月平衡",[bt.algos.RunMonthly(),
bt.algos.SelectAll(),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])
bench_erc = bt.Strategy("benchmark-风险平价-月平衡",[bt.algos.RunMonthly(),
bt.algos.SelectAll(),
bt.algos.WeighERC(),
bt.algos.Rebalance()])

stras = [s,s_pick,bench_bh,bench]
bkts = []
for s in stras:
bkt = bt.Backtest(s, df_close,progress_bar=True)
bkts.append(bkt)

res = bt.run(*bkts)
res.plot()

专栏篇

对于AI量化而言,数据是基础:

星球专栏已经更新到数据部分,基本写完了。

调一些api,存储到mongo很简单,但如何设计一个通用的,可扩展的,可持续更新的数据管理,还是需要花一番心思。

下面是我们的最佳实践:

现在这一套代码,无论是更新etf, 可转债,股票,期货都是通用的,基本就是配置一个表名即可以入库。

维护起来比较省心省力。

吾日三省吾身

郭有才火了,山东菏泽南站也火了。

流量为王的时代,做生产者很重要。

其实,任何年代皆如此,从web 2.0开始,自媒体登上历史舞台。

互联网给了草根无限可能。

早年只能通过表演,出唱片,现在自己一个屏幕,都可以默默努力。

当然,不是所有人都有好的故事,好的才艺,能唱会跳。况且,能唱会跳高颜值的人不要太多。

但持续生产可以打动人心的,有长期价值的内容一定是铁律。

你的努力,需要让世界看得见。

很多人说,娱乐至死有什么价值?——那流行娱乐有什么价值,电影有什么价值呢?——就是情绪价值吧。

在经济下行周期,大家都迷茫,压抑。

需要释放,需要共情。

我们需要一些故事,努力可以有未来,一些普通人,平凡人,他们的善良,勤奋,美好的爱情。。。

董宇辉也为现象级明星,也因为他提供了巨大的情绪价值。

我们心里,总得信点啥。

不确定的时代,带来的不安全感。

要在发展中解决所谓不安全感的问题,不能因为可能的风险,就啥也不干。不发展才是最大的不安全,你有能力了,就算出现一些意料之外的事情,也能轻松解决。

明天会发生什么,不知道。

当然不是说随意冒险,而是尽量评估,然后用心去做,但不必过份思虑。

其他的,一切皆是体验,“允许一切发生”。

历史文章:

年化20.9%,夏普1.52,回撤13.75,具备实盘条件

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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章