标普500指数的恒定市值回测

长期持有不等于“躺平”。

长期持有并不意味着买入之后就不再调整。
卖出的逻辑是当初买入的逻辑不成立了。

传统的收益率止盈之类的不合适,止盈之后买什么呢?拿着现金?除非有更好的选择,或者当前基金的基本面变坏了,比如基金经理变更。

高估止盈是否需要?是需要的。否则就会坐过山车,但怎么止很关键。
传统上的做法是估值分位点超过85%止盈20%,超过90%再止盈20%这样的操作,这种操作会上牛市前期,早早就下车了。

我们选择恒定市值,就是保持恒定的仓位在市场中,比如一支基金仓位恒定5万,当市场上涨10%之后,把这个上涨的部分卖出落袋为安,而当市场下跌10%后,则在低位补仓至市值5万。如此持续做网格,不惧波动。

今天我们使用标普500指数近十年的数据来回测看看效果。

from engine.strategy import Strategy
from engine.datafeed import CSVDatafeed
import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


# 恒定市值维护
class FixMarketValueSpx(Strategy):
    def __init__(self, feed):
        super(FixMarketValueSpx, self).__init__(feed)
        self.fix_mv = 100000.0
    def onbar(self, index, date, df_bar):
        print(date)
        instrument = 'SPX'
        if index == 0:
            self.acc.order_buy_mv(instrument, 80000)

        # 取当前市值,若超过设定值,比如5万的10%,即55000,则卖掉5000,反之买入差额的部分
        # 取当前instrument的持仓市值,
        curr_mv = self.acc.get_instrument_mv(instrument)
        print(date, '当前持仓:{}'.format(round(curr_mv, 2)), '现金:{}'.format(round(self.acc.curr_cash, 2)))

        if curr_mv >= 1.1 * self.fix_mv:
            gap = curr_mv - self.fix_mv  # +5000
            self.acc.order_sell_mv(instrument, gap)
        elif curr_mv <= 0.9 * self.fix_mv:
            gap = self.fix_mv - curr_mv
            self.acc.order_buy_mv(instrument, gap)


feed = CSVDatafeed()
# 标普500指数的恒定市值回测
feed.add_data('SPX', '../datas/SPX.csv')

s = FixMarketValueSpx(feed=feed)
s.run()
s.plot(benchmark=['SPX'], filename='SPX恒定市值.html')

结果如下图:

最大回测和波动率肯定是显著下降。

不过大家也许注意到了,年化收益也下降了,是的,像标普这种年化11.4%的指数,七年就能够翻一番,我们做网格,会有越来越多的现金往出提。不过注意,未体现在策略里的是,这些取出来的现金部分,还是会再投资的。这一部分没有算。

另外代码里把bokeh更换为了pyecharts,这个新版本还不错,使用起来很简单,功能很强大,推荐大家使用。

(公众号:七年实现财富自由(ailabx),用数字说基金,用基金做投资组合,践行财富自由之路)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI量化投资实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值