excel学习库

excel表格_excel函数公式大全_execl从入门到精通

将多个公式合成一个公式,解决公式评分和拓展性的问题

本文为专栏的第七篇文章,先来回顾下上一章节知识点。

在上一章节,我们学习了给公式增加交易信号的方法,并用通达信编程实现了之前的5个底部公式的交易信号。接下来,很自然的,我们就可以用第四、五章节学习的内容,对公式做回测,然后根据回测结果去优化公式的参数或条件。这后面就有非常多可以挖掘的东西了,就需要读者朋友们自行探索了。

但这里还有另外一个值得探讨的问题,试想每次都加载5个公式副图,实在是太多了,而且也不方便,缺少实用性。况且公式千千万,何止示例中的5个呢?如果需要把自己觉得比较好的公式囊括成1个公式中,又该怎么办呢?我相信很多人都存在这样的疑问。

那么,本文就针对这一问题做个探讨,在通达信中怎么将5个公式组合成一个公式,以增强其实用性,然后再延伸一下,怎么将多个公式合成一个公式,以解决公式评分和拓展性的问题。本文结构包含基础知识、公式合成的思路、提供一种对公式做评分的方法、以及通达信中的代码实现,下面一起来学习吧。

第一部分:基础知识

1. 什么是因子?

在股票市场中,因子指的是对个股收益差异有解释作用的特征,这些因子能够解释投资组合的收益或帮助进行资产定价。

在股票市场上,因子通常被分为不同的类别,包括规模因子、估值因子、成长因子、盈利因子、动量反转因子、交投因子、波动率因子、分析师预测因子等。例如,规模因子可能包括总市值、流通市值等;估值因子可能包括市盈率、市净率等;成长因子可能包括营业收入同比增长率、营业利润同比增长率等。这些因子从不同的维度对个股收益差异进行解释。

股票在本质上是一类资产,而资产本身没有涨跌的理由,上涨和下跌的资产价格波动是由某些驱动因素造成的。股票获得收益的背后对应的就是每一个因子获得的收益。因此寻找因子与市场之间的联系,从而确定因子的权重,可能是一种不错的选择。

2. 什么是多因子模型?

多因子模型通常选择一组因子,如财务比率(如市盈率、市净率等)、盈利预期、公司治理、市场情绪等,然后通过统计分析方法(如回归分析、主成分分析等)确定每个因子的权重。最后,根据各因子的权重得分,将不同的因子加权求和,加总成一个组合的因子值,对股票进行排序,选择得分高的股票进行投资。

第二部分:通达信中公式合成的思路

从上面的基础知识,我们对因子的定义有了大致了解,那么我们就借鉴这种操作思想来处理公式。在通达信中,我们将每个公式都作为一个因子来对待。

这样,关于公式合成的问题,就转化为了如何确定各个公式的权重。

比较传统的方式,比如等权重加权,也是市面上见的最多的最简单的一种方式,就是将多个公式的信号直接相加。这种方式意味着对各个公式没有偏好性,认为各个公式之间是独立的,预测能力也是一致的。这显然不够科学。

另外一种传统方式是通过IC加权或IC-IR加权,就是将各个公司的权重设置为IC值,或IC-IR值。其中IC值是指信息系数(Information Coefficient)。它表示所选股票的因子值与股票下期收益率的截面相关系数,IR是IC的多周期均值除以IC的标准方差,代表因子获取稳定Alpha的能力。IR兼顾了因子的选股能力(由IC代表)和因子选股能力的稳定性(由IC的标准方差的倒数代表)。但这种操作在通达信中无法实现。

上面两种方式,我们都不用。我们从公式的经济含义角度出发,考虑我们所要关心的因素,然后由这些因素构造权重。那么,我们关心的因素有哪些呢?下面,我们简要罗列:

(1)胜率;

(2)平均亏损与平均盈利;

(3)年化收益率阿尔法;

(4)年化收益率贝塔;

(5)年化波动率;

(6)交易的次数;

(7)交易的数量;

这7个指标,在第五章节的时候已经做了详细的说明,此处不再赘述。简要解释一下,胜率要求至少是要50%以上,平均盈利/平均亏损的比值至少达到1.5,年化收益率阿尔法越大越好,年化波动率越小越好。交易次数与交易量间接反应公式的盈利能力,比如同样的收益率,交易次数与交易量越少越好。

上述7个指标在通达信的公式评测报告中可以直接获取到,我们对它们再做个组合,比如下图:

可以根据不同的偏好,对x1~x4设置不同的系数。通过上面的评价计算方式,我们可以对每个公式做个评分,然后对评分做归一化,得到的数值即为我们公式合并时的权重。

当然,组合方式有很多,也有非线性的,比如相乘,幂方等。

第三部分:通达信编程实现

这里只是示例,参数未做优化,不建议直接用于实际交易。

1、在此之前我们需要先分别获取5个公式的评测数据。在评测时,设置统一的条件,比如:回测周期过去5年,手续费万三,信号过滤,本周期末开仓,开仓后20个交易日卖出,对象为全部A股,基准对象沪深300。

在评测时,我们采用组合评测的操作方式,一次性把5个公式都测试了,评测设置如下图:

一共有26815条数据要跑,按我电脑速度,2分钟跑3060条,全部跑完预计要18分钟。可见,评测调参是非常耗时的工作。

2、五个底部公式都跑了,在信号发出后,持仓20天的情况,为了便于观察,我们把需要的数据以表格的形式展示:

从上表可知,在当前评测条件下,公司四的有效性是最好的,其次是公式五,再是公式二,再是公式三,最后是公式一。

威廉指数公式的交易次数明显大,说明他的信号非常频繁,也就是说可以将代码中的阈值调低些。公式四和公式一相比交易次数少了,但交易量更大,说明乖离率信号更多发生在低价股上,因为价格越低,每次交易的股票手数越多。

由于市场行情一直在变化,风格也可能切换,建议回测数据定期更新,比如每月更新一次,或者每季度更新一次。

3、接下来,我们来计算各个公司的评分。这里有两种处理方式,一种是直接在excel中计算,计算得到一个分数,然后再链接到通达信自定义数据中,另外一种是直接将计算公式写在通达信代码块里。

这里,我们两种方式都说下。我们先在excel中计算公式评分,具体如下表:

此处函数sqrt意思开平方根,MAX是取最大值,在IR的计算中用MAX函数,意思是当IR小于0时,取0值,因为如果IR值为了,意味着相对于基准品种,该公式的收益率是负数,即跑不赢沪深300指数的涨幅,那这个公式的意义就不大了,所以直接不用这个公式,最后评分为0;

4、下面我们在通达信中来具体实现公式的合成:

(1)我们在第三课的代码基础上继续写,先把之前的输出信号全部用大括号注释掉,源代码如下所示:

(2)接着往下写,后续代码如下图所示:

这里来简要解释一下。在公式评分处的定义取值,就是将我们在第3步中在excel表中计算的评分。评分和是所有的公式分数求和,如果有更多的公式,那就继续加。

评分归一化的作用是将评分转化为权重,数值在0-1之间。

底部概率的定义是将归一化后的权重值与公式信号相乘后相加,乘以100是将值扩大100倍,使其范围在0-100之间,符合日常使用习惯。

最后一句NOTEXT:50 的作用是在50处画一条直线。

(3)完成后的副图示例如下:

随便翻看了几个,从直观体验来说,效果还是可以的。当底部概率超过50%的时候,我认为是一个比较好的介入机会。或者用底部概率由高到低排序,选择前20只作为股票池,也是一种思路。

5、另外再说下把上面的评分通过自定义数据形式导入到通达信软件中,具体操作的方法:

(1)需要先把表格数据制作成txt文档,比如下图所示,只是一个示例:

(2)在通达信软件,打开菜单栏中的公式->自定义数据管理器,会弹出如下的界面,然后点击新建,在弹出的对话框中,数据号和数据名称自己随意输入,后点击确认。

(3)在选择刚新建的那条记录,点击“修改数据”会出现下面的对话框。前面是默认选项,各位可以根据需要自行修改。这里要说明的是下方的数据导入方式里的信息,这个意思是说导入的数据格式需要按它给出的数据格式。

然后点击“导入”,就可以。

(4)如果导入成功了,那效果如下图所示,如果下次重新评分了,只需在这个界面点击下方的“修改”按钮即可。

5、通过上面步骤,我们已经将公式评分导入到通达信系统了,下面,我们要在通达信中调用刚导入的数据。

在通达信函数树的专业财务函数中有引用数据的函数,比如我们用第二个函数EXTERNVALUE。

第四部分:个人总结

看到这里,相信读者朋友已经学会了公式合并的思路和方法。从上面的详细操作步骤和过程可以看出,这是一个开放式的思路,具有非常好的扩展性,再多的公式都可以增加进来。由于权重设置是基于历史回测的结果数据,所以最终的评分会相对稳定。

不过,这里还有个问题是需要大家去思考的,那便是公式间的相关性问题,如果合并的公式相关性越高,则评分效果越差,公式相关性越低,效果越好。这个很好理解。所以,在选择要合并公式时不能盲目,还是要看公司的底层逻辑,比如我们的选择了不同的角度,去构造底部公式,就是选择了弱相关性。对于新手,这个问题可以说是一个小坑。

底部公式是解决了买的择时问题,那么,接下来面临的将是卖的问题。会买的徒弟,会卖的才是师傅。当底部信号发出并介入后,该什么时候卖呢?有没有顶部区域的构造公式和角度呢?下一章节,我们来做个探讨。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接