海龟交易系统所代表的传统CTA策略是不是过时了?

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

量化投资具体步骤:数据、指标(因子),信号规则或因子合成,策略,绩效评估,风控

其实所有的策略都可以归结为以上的步骤。

我们把通用的步骤积累起来,这样就可以快速形成策略,以应对变化的市场,做到有复利,有积累。

量化交易与主观交易不同在于,量化可以沉淀下来很多经验。

今天开放了QQ个人群,群邀请已经在星球置顶了,感兴趣的星友直接加入即可AI量化实验室——2024量化投资的星辰大海

思考一个问题,回测与实盘,开发策略是可以分开的。

回测讲求效率,而实盘讲求性能和稳定性。

而回测系统不必过于拘泥于细节,多数场景下,向量化回测就够了。

比如vectorBT就是这个逻辑。

像ETF的资产配置,股票的轮动,使用vectorBT或者bt(不是backtrader)就足够了。

这有什么好处呢?策略代码非常简洁,而且不容易出错。

大家感受一下海龟交易系统的代码——只有在这种场景下,也就是精细化的仓位管理,比如向上突破一次,加仓多少个ATR这样的逻辑。

ize = 0
    self.buy_count = 0
    # 海龟交易法则中的唐奇安通道和平均波幅ATR        
    self.H_line = bt.indicators.Highest(self.data.high(-1), period=self.p.long_period)
    self.L_line = bt.indicators.Lowest(self.data.low(-1), period=self.p.short_period)
    self.TR = bt.indicators.Max((self.data.high(0) - self.data.low(0)), \
                                abs(self.data.close(-1) - self.data.high(0)), \
                                abs(self.data.close(-1) - self.data.low(0)))
    self.ATR = bt.indicators.SimpleMovingAverage(self.TR, period=14)
    # 价格与上下轨线的交叉      
    self.buy_signal = bt.ind.CrossOver(self.data.close(0), self.H_line)
    self.sell_signal = bt.ind.CrossOver(self.data.close(0), self.L_line)

def next(self):
    if self.order:
        return
        # 入场:价格突破上轨线且空仓时        
    if self.buy_signal > 0 and self.buy_count == 0:

        self.buy_size = self.broker.getvalue() * 0.01 / self.ATR
        self.buy_size = int(self.buy_size / 100) * 100
        self.sizer.p.stake = self.buy_size
        self.buy_count = 1
        print('空仓时买入', self.buy_size)
        self.order = self.buy()
        # 加仓:价格上涨了买入价的0.5的ATR且加仓次数少于3次(含)        
    elif self.data.close > self.buyprice + 0.5 * self.ATR[0] and self.buy_count > 0 and self.buy_count <= 4:
        print('加仓买入')
        self.buy_size = self.broker.getvalue() * 0.01 / self.ATR
        self.buy_size = int(self.buy_size / 100) * 100
        self.sizer.p.stake = self.buy_size
        self.order = self.buy()
        self.buy_count += 1
        # 离场:价格跌破下轨线且持仓时        
    elif self.sell_signal < 0 and self.buy_count > 0:
        print('平仓信号卖出')
        self.order = self.sell()
        self.buy_count = 0
        # 止损:价格跌破买入价的2个ATR且持仓时        
    elif self.data.close < (self.buyprice - 2 * self.ATR[0]) and self.buy_count > 0:
        print('止损信号卖出')
        self.order = self.sell()
        self.buy_count = 0

        # 交易记录日志(默认不打印结果)

def log(self, txt, dt=None, doprint=False):
    if self.params.printlog or doprint:
        dt = dt or self.datas[0].datetime.date(0)
        print(f'{dt.isoformat()},{txt}')

# 记录交易执行情况(默认不输出结果)
def notify_order(self, order):
    # 如果order为submitted/accepted,返回空
    if order.status in [order.Submitted, order.Accepted]:
        return
    # 如果order为buy/sell executed,报告价格结果
    if order.status in [order.Completed]:
        if order.isbuy():
            self.log(f'买入:\n价格:{order.executed.price},\
            成本:{order.executed.value},\
            手续费:{order.executed.comm}')

            self.buyprice = order.executed.price
            self.buycomm = order.executed.comm
        else:
            self.log(f'卖出:\n价格:{order.executed.price},\
            成本: {order.executed.value},\
            手续费{order.executed.comm}')

        self.bar_executed = len(self)

        # 如果指令取消/交易失败, 报告结果
    elif order.status in [order.Canceled, order.Margin, order.Rejected]:
        self.log('交易失败')
    self.order = None

# 记录交易收益情况(可省略,默认不输出结果)
def notify_trade(self, trade):
    if not trade.isclosed:
        return
    self.log(f'策略收益:\n毛收益 {trade.pnl:.2f}, 净收益 {trade.pnlcomm:.2f}')

def stop(self):
    self.log(f'(组合线:{self.p.long_period},{self.p.short_period});\
    期末总资金: {self.broker.getvalue():.2f}', doprint=True)

图片

这种策略多见过传统的CTA策略,但AI量化里,多因子、排序、轮动是主角,仓位管理更多通过投资组合来完成,而非这种仓位分配和管理。

吾日三省吾身

昨天一同事过来聊天,说打算创业做点事情。

我第一反应是, 这个时候去创业,怎么考虑的。

尽管我基本明白背后的逻辑,应该是工作上出现的状况。

同事说,年初换了一家公司,觉得很谈得来,在二选一中选择了前者,结果半年不到,公司放弃了原定的规划,同事只能离开。

再尝试到找工作,面试机会倒是有——其实已经挺不容易了——但年龄的坎不好过去了。

肉少狼多,企业自然有的挑。

年轻人有冲劲,还没能家庭负担。

可能,这是多数职场人的归宿吧,或早或迟而已。

另外一个年轻的朋友说,现在公司卷着,说暂时肯定不动了,能不出来就不出来,至少把房贷清了,再积累一些资本,这样稳妥。

同事说,心理建设了1个多月,其实客观看,也不是什么大事,没能房贷,生活成本不高,没有负债,之前的成本也可以确保好多年财务安全。

只不过,习惯了,就得有一个工作,这是一种安全感的来源了吧。

国外很多人,很自然给自己安排一年的空窗期,就是工作一年,休息一年,去看世界,做自己喜欢的事情,而且还没有储蓄,似乎也很自然,但我们就会觉得特别没有安全感。

但事情就这么发生了,也总会有办法。

山重水复疑无路,柳暗花明又一村。

我们都得开始重新思考对孩子的教育观念,理财,写作以及一门硬技能。比如AI,智能体开发等。

如果你不需要通过一个组织去谋生,那学历就不是刚需。

财富自由不是你想不想的问题,而是必须去做的事情。

历史文章:

年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI量化投资实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值