
当天新增筹码盈利占比
本文,笔者将介绍中信建投姚紫薇和陈升锐两位老师的研报《筹码分布因子系统构建》中的最后一类因子,筹码盈利因子。
这一类共有9个因子,但是笔者只复现了其中五个。还有四个没有复现,因为笔者把他们当作了中间变量。
计算公式和代码
这几个因子的计算都是基于筹码峰的概念,实现的难点也在这里。关于筹码峰的计算,笔者在该系列的第一篇文章中有过相关介绍。
量化拯救散户,公众号:量化拯救散户筹码分布因子,IC不高,但是分层结果相当出色!
1
计算公式
获利比率:衡量活力筹码所占比率,即t日盈利筹码占总筹码的比率。
博弈K线:反应当天开盘于收盘获利比率变化情况,即开盘时获利比率-收盘时获利比率。
价格相对位置:衡量平均筹码成本的盈利情况,即收盘价/筹码加权平均价格-1。
剩下的四个因子,公式有点儿复杂,笔者就直接贴图了。

2
代码
processing_single_day这个方法的主要内容和之前的几篇文章是一致的,所以就不赘述了。
咱们直接来看一看需要修改的部分。
def cal_factors(self, code, close, volume, factor, tr, open_):data = pd.concat([close, volume], axis=1)data.columns = ['close', 'volume']data = data.groupby('close', as_index=False, group_keys=False).sum()last_data = self.last_chip.get(code, None)open_ = open_.iloc[0]if last_data is None:winner_open = 0data.iloc[:, -1] *= trelse:winner_open = last_data[last_data['close'] < open_]winner_open = winner_open.iloc[:, 1].sum() / last_data.iloc[:, 1].sum()last_data['close'] /= factordata = data.merge(last_data, how='outer', on=['close'])data = data.fillna(0)data['volume'] = data.iloc[:, -1] * (1 - tr) + data.iloc[:, -2] * trdata = data[['close', 'volume']]p = close.iloc[-1]def weighted_central_moment(x, w, k, mean):"""计算k阶加权中心矩"""return np.average((x - mean) ** k, weights=w)weight = data['volume'] / data['volume'].sum()mean = np.average(data['close'], weights=weight)winner = data[data['close'] < p]winner = winner.iloc[:, 1].sum() / data.iloc[:, 1].sum()candle_strick_gambling = winner_open - winnerprt = p / mean - 1pl = (data.iloc[:, 0] >= p) * data.iloc[:, 1] * (p - data.iloc[:, 0])pg = (data.iloc[:, 0] < p) * data.iloc[:, 1] * (data.iloc[:, 0] - p)tl = (close >= p) * volume * (p - close) * trtg = (close < p) * volume * (close - p) * trdata.iloc[:, 0] *= factorself.last_chip[code] = data.copy()return winner, candle_strick_gambling, tg.sum() / pg.sum(), tl.sum() / pl.sum(), prt
第5、8、11和12行代码是新增的,主要是计算开盘时获利比率,这个值使用昨天的筹码峰和今天的收盘价计算的。
第19-23行,这个代码在整个系列的第一篇文章中也出现过,主要是计算筹码加权平均价格的。
第24-25行,计算的是当日盈利筹码占比,用的是当日的筹码峰和收盘价。
第26行,计算博弈k线因子。
第27行,计算价格相对位置。
第28-31行,计算的是最后六个因子。但是,笔者将pl、pg、tl和tg当作中间变量了,没有作为因子返回,因此因子评价的时候没有他们。
3
因子逻辑
在行为金融学理论中,投资者通常对账面盈亏具有显著敏感性,特别是短期浮盈筹码可能快速获利了结,导致抛压上升。若某只股票当日新增的盈利/亏损比率较高,意味着该股票短期不稳定筹码比率越大,筹码抛压也会变大,可能对股价走势产生不利影响。

因子评价

这五个因子中,大部分因子之间的相关性还是挺高的,只有tl_ratio和tg_ratio这两个因子之间可以说是没有任何相关性。
笔者计算的这五个因子,从IC上来看最高的是tl_ratio这个因子。但是,用过去21个交易日均值进行低频化的tg_ratio这个因子在分层回测上的表现是最好的,而且IC也还行。
同时,这个结论和一位私信我的大佬是一致的,他复现了这篇研报,也得到了tg_ratio表现最好的结论。
值得一提的是,tg_ratio用标准差低频化之后的表现看起来和均值是差不多的。
01
IC分析






这个因子在2018年的时候IC挺低的,绝对值勉强达到0.02,在2019年到2023年还不错,绝对值都超过了0.06。
02
回归分析


03
换手率分析


04
收益分析


这个因子的分层回测表现确实不错,在整个回测区间里,其净值曲线和因子值大小呈现出完美的负相关。
从2020年开始,因子值最大的两组就稳定在了倒数第一和倒数第二的位置上,从2023年之后,每一层都很清晰,和其他组基本上没有相交了。

总结
这篇研报到这里也就彻底结束了,以这样一个因子收尾,笔者还是比较满意的。
不知道各位大佬是不是也比较满意,如果您有那么一点儿喜欢的话,能否点赞推荐关注和分享支持一下笔者呢?

- END -
