Py学习  »  Python

量化交易中,如何使用Python计算「筹码分布」指标

经管之家 • 3 年前 • 395 次点击  


这是邢不行第  64  期量化小讲堂的分享

作者 | 邢不行、助教林奇



本文内容也有视频版本,点击观看:量化交易中,筹码分布指标如何计算【邢不行】



记得小时候的某个暑假,一边吃西瓜,一边看港剧《大时代》。


《大时代》


里面炒股的场景给我留下了很深的印象,也为之后进入金融行业埋下了一个种子。


剧里有经典的一幕,一位投资大师为了让主人公帮其报仇,教他炒股。图中大师正使用香烟代表筹码,推演股价走势。


大师给主人公讲解筹码分布


小时候的我只是记得这一幕但并不理解,之后回想才明白,他们在讲的应该是筹码分布理论


有一定经验的A股投资者,应该都或多或少的听过筹码分布,本文我们就谈谈在量化投资中如何计算筹码分布,计算代码。


如果看完全文后你有任何问题,都可以扫描下方二维码或加我微信xbx783,和我交流。




01

什么是筹码分布


我是08年左右开始炒股的,之前的市场没有亲历,不清楚筹码分布理论具体是什么时候引入中国市场。


只能通过查看资料,大致推测A股市场的筹码分布最早是由行情软件“指南针”在1997年提出的。


《筹码分布》作者、指南针董事长陈浩


那么筹码分布到底是什么呢?


我们都知道一只股票在上市时会发行很多股份,那这每一股就代表了一个筹码。


而每一股在成交后都会有一个最近的成交价格,比如某只股票在13元成交1000股,14元成交500股,15元成交2000股。


分布就是指将筹码按照其最近成交价格进行分类,统计每个成交价格上筹码的数量


我们把一只股票所有的筹码按照最近一次成交价进行分类排列,就能得到筹码分布图:


筹码分布


一般的行情软件都会提供筹码分布图。以同花顺为例,在K线图的右侧就有筹码分布图,图中价格上的柱线代表了筹码分布的数量


同花顺的筹码分布图


上图中45元左右集中了很多筹码,说明很多股票都是在45元附近成交的。


随着鼠标在K线上移动,筹码分布图也会跟着变动,这是一个随着每天的交易而变动的动态过程



虽然筹码分布问世多年,但至今热度依旧不减。各种新闻上经常提到,也有很多同学加我微信(xbx783)问我筹码分布相关的问题。



如果你有关于量化投资的更多问题,可以扫描下方二维码或加我微信xbx783,和我交流。



当然,基本上所有的行情软件也都提供筹码分布指标,这使得我们可以很方便的查到任意一只股票的筹码分布。


大智慧

同花顺

东方财富

各类行情软件上的筹码分布图


但我们做量化投资,光看这个图是没用的,一定要有最原始的数据。


只有有了筹码分布的具体数据,才能对此进行加工处理,构建各类量化交易策略。



02

筹码分布如何计算


行情软件上的筹码分布到底是如何计算的呢?


让我们回到股票发行的起点。


假设股票A以10元的价格发行1000股,那它发行时的筹码分布是这样的:



所有筹码的成本都是10元,其他价位上的筹码是0。


假设股票A开始上市交易,并且我们获取到了股票A的逐笔交易数据。


时间

价格

成交量

换手率

成交额

09:31

10.3

300

30%

3090

09:42

10.5

200

20%

2100

···

···

···

···

···

股票A逐笔交易数据


第一笔交易以10.3的价格成交了300股,在这一笔交易结束之后,筹码分布会变成这样:


第一笔交易

时间

价格

成交量

换手率

成交额

09:31

10.3

300

30%

3090

第一笔交易后的筹码分布


10元的筹码减少300股,10.3元的筹码增加300股。


第二笔交易以10.5的价格成交了200股,毫无疑问10.5元的筹码会增加200股,但关键问题是,这200股从哪里来呢?


第二笔交易

时间

价格

成交量

换手率

成交额

09:42

10.5

200

20%

2100


这其实取决于这200股到底是从10元的价位卖出,还是从10.3元的价位卖出,亦或两者都有。


遗憾的是这个数据只有交易所知道,并且绝对不会对外公布


所以我们从第二笔交易开始就已经算不清楚准确的筹码分布了,更何况之后更多的交易了。


所以理论上,经过以上简单的推理,我们根本画不出准确的筹码分布图。



03

行情软件上的筹码分布


既然我们都不知道筹码的准确来源,那行情软件是怎么画筹码分布图的呢?


其实方法非常简单粗暴,既然不知道卖出的筹码到底从哪个价格来,那么干脆一刀切,强制让所有价格的筹码都卖出相同的比例。


什么意思呢?比如刚刚第二笔交易以10.5元成交200股。


第二笔交易

时间

价格

成交量

换手率

成交额

09:42

10.5

200

20%

2100


这200股占总股本的20%,我就从原来的所有价位都卖出20%


经过第二笔交易后,10.3元的价位卖出20%变为240股,10元的价位也卖出20%变为560股。


第二笔交易后的筹码分布


知道第二笔交易怎么处理后,第三笔、第四笔可依此类推只要有逐笔数据我们就能画出筹码分布图。


// 筹码分布的优化算法


有的行情软件算法会更高级一点,并不是所有价格档位都按照相同的比例卖出。


有的算法认为盈利越多的价格,越倾向于减仓。10元的盈利比10.3元高,所以10元的减仓比例高于10.3元。


而有的算法认为持有时间越长,越倾向于减仓


当然,虽然这些算法在尝试逼近真实情况,但肯定还是有差距的。


// 筹码分布的简化算法


不过有的行情软件就没那么讲究了,会进一步偷懒。


什么意思呢?我们之前讲的算法是用逐笔数据近似的,数据量非常大。


有的行情软件为了偷懒,把一整天的交易数据合并成一笔交易数据,即当日的均价和总成交量。然后仅仅用这一笔数据,来计算筹码分布。


这样算出来的数据,是近似的近似,失真程度大家可以自己想象。


合并成一笔



04

用Python计算筹码分布


根据之前讲的原理,其实我们已经可以自己用python画出筹码分布了。


下图是我用python实现计算筹码分布的代码:





     筹码分布代码




代码就不逐行讲解了,如果有看不懂的地方欢迎扫描下方二维码或加我微信xbx783沟通。




我用浦发银行的数据作为案例计算其筹码分布的结果:


第一行数据代表,以126的价格(已经复权)成交的股票,占到所有股份的0.38%。


依据这张表画出来的图,能直观地表现出浦发银行的筹码分布:



上图中可以非常清楚地看到在116元附近分布了很多筹码,这个价格可能是一个重要的支撑或者阻力位。


如果你对上面的代码和数据感兴趣的话,可以扫描下方二维码或加我微信xbx783,都是可以直接发给你的。



如果很多人感兴趣,之后也会讲一下基于筹码分布数据开发的量化策略,感兴趣的朋友可以直接留言。



05

后记


文章的最后,和大家分享一点量化投资的心得


很多人问我小白如何开始学习量化投资,有什么可以书单推荐


我的建议是千万不要直接找本书来看。


你找本编程书看,那跟着敲完“Hello World”就结束了;你找本数学书看,那看到第七页的公式就睡着了。



更好的学习方式是做实际的项目,在实践中学习量化策略。


研报就是很好的量化实践项目。


一篇研报就是一个策略,作者都是年薪百万的高学历券商分析师,你要做的就是读懂策略研报,并用代码实现。


在此期间什么不会学什么,哪里不会点哪里,抱着解决问题的心态去学习,事半功倍。


熟读唐诗三百首,不会作诗也会吟。


那么哪里可以获取研报呢?


你可以扫描下方二维码或加我的微信xbx783,我这里有分门别类几万份研报,还会实时更新



我会区分难度,精选之后发给你。



加我微信xbx783后,也可以交流量化投资相关问题,我比较忙,回复的比较慢,但是看到的都会回复。


聊的开心,聊得有缘,很多量化的数据、资料都是可以送给你的。


也可以翻翻我朋友圈的内容,很多量化干货。一些不会公开发的内容,都会在朋友圈说。




联系作者

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135796