筹码分布(分钟级) (cn_stock_chips_distribution_min)

数据描述: 分钟级别的筹码分布,计算规则见“文档”。

文档
数据简介

## 一、数据简介 股票的筹码分布数据是一种反映不同价位上投资者持仓成本的统计分析工具,主要用于分析市场参与者的平均持仓价格分布情况。它通过图表形式展示在特定时间点,持有某只股票的投资者在不同价格区间的筹码(股票数量或比例)积累情况,帮助判断支撑位、压力位以及主力资金的动向。 注意:该表是按照 **单只股票单月** 进行数据存储,因此适合读取 **单只股票多周期** 的数据。若需要读取多只股票,请读取 cn_stock_chips_distribution_min_c(尚未上线,敬请期待)。 * 数据起始时间:2019-01-01 * 数据更新频率:每个交易日 * 表主键如下: | 关键字 | 释意 | | --- | --- | | date | 日期 | | instrument | 股票代码 | | price | 筹码价格 | ## 筹码分布计算规则 如果把上市公司发行的股票理解成筹码,发行一股股票就代表一份筹码,发行100万股股票就代表100万份筹码。你以什么价格买入该股票,就会标记为你持有的筹码是什么价格。 1. 现在假设某股票最初以10元发行了1000股。则最初的筹码分布如下,在10元的地方有1000股的股票,其他价格上的股票数量都为0。 | 筹码价格 | 筹码量 | | --- | --- | | 10.5 | 0 | | 10.3 | 0 | | 10.0 | 1000 | 2. 当股票开始交易后,假设第一笔交易以10.3的价格成交了300股。此时的筹码分布比较清晰,如下所示。 | 筹码价格 | 筹码量 | | --- | --- | | 10.5 | 0 | | 10.3 | 300 | | 10.0 | 700 | 3. 再看第二笔交易,假设以10.5的价格又成交了200股,此时筹码分布又该如何变化?我们需要在10.5的价格上增加200股,在10.3和10元处共需减少200股。此时,计算筹码分布会出现一个,即但这200股中,有多少持有成本是10元,又有多少是10.3元呢?这个数据除非我们能获取市场上所有交易账户的买卖记录,否则我们也无法精确得知。因此,在计算筹码分布时,我们干脆一刀切,10.5元成交了200股,占总股本的20%,就意味着这笔交易的换手率就是20%。我们就根据换手率默认10.3元和10元处的股票都卖出了20%。此时的筹码分布如下所示。 | 筹码价格 | 筹码量 | | --- | --- | | 10.5 | 200 | | 10.3 | 240 | | 10.0 | 560 | 4. 按上述逻辑即可在每笔交易后,不断画出新的筹码分布图。 以上就是计算筹码分布的一个简单清晰的例子。**简而言之,计算筹码分布的核心步骤如下**: 1. 找到 **初始化筹码分布**,一般以上市时的 **IPO价格** 和 **自由流通股本** 作为初始筹码分布。 2. 计算 **当前分钟换手率**,以该换手率更新上一分钟的筹码分布作为当前分钟的筹码分布。 3. 增加 **当前分钟价格的筹码量**,计算该分钟的平均价格作为筹码价格,该价格的筹码量增加。 4. 减少 **其他筹码价格的筹码量**,按照换手率减少该筹码价格的筹码量。 ## 该数据表的注意事项 虽然给出了筹码分布的核心计算逻辑,但在实际构建上还会遇到很多细节问题。这里,我们罗列出比较重要的点: 1. 如何获取初始化筹码分布? 正如前文说明,我们希望以上市时的“IPO价格”和“自由流通股本”作为初始筹码分布。但由于“历史数据缺失“和”计算资源消耗”两个原因,我们无法获取到2015年之前的分钟行情数据。因此,我们 **以2019-01-01作为起始原点**,按照以下规则获取 **初始筹码分布** 数据: * 2019-01-01 之前上市的股票,以2019-01-01之前最后一个交易日的收盘价和自由流通股本作为初始筹码分布。 * 2019-01-01 之后上市的股票,以上市时的“IPO价格”和“自由流通股本”作为初始筹码分布。 2. 是否需要固定间隔距离筹码价格? 如果以每分钟的平均价作为筹码价格,会使其筹码价格数量过多,导致**数据计算和存储的代价过大**。因此,按照**一定的价格区间统计该区间的筹码量**,每个交易日最多不超过**500个价格区间**。 3. 如何处理等比例减少导致的筹码量指数衰减的问题? * 正如前文介绍的,我们会按照当前分钟的换手率减少其他筹码价格的筹码量,但这样会导致一个问题!比如:假设换手率为10%,若该价格的筹码量为1000股,则减少量为100股;但若该价格筹码量为10股,则减少量为1股。这种**指数衰减**的状况会使得该价格的筹码量随着时间的推移,减少速度越来越慢,计算长期不在该价格上进行交易,该价格上始终会有筹码。显然,这是不符合预期的! * 因此,我们按照当日**自由流通股本的0.001%**作为截断值,当筹码量少于这个数值时,则把该价格剔除,并把其剩余筹码量等比例分配给其他价格上,保证**股本不变**。 ## 指标说明 计算完筹码分布数据后,我们可以统计一些简单的指标: * 平均筹码(avg_cost):当前分钟下的筹码分布中,按照筹码量加权平均价格。 * 筹码占比(chips_ratio):当前分钟下的筹码分布中,每个筹码价格的筹码占比。 * 获利比例(win_percent):当前分钟下的筹码分布中,计算小于当前分州收盘价的筹码占比总和。 * 区间成本(upper/lower_n):当前分钟下的筹码分布中,计算 n% 分位数上的筹码价格。 * 集中度(concentration):当前分钟下的筹码分布中,计算 90% 分位数的集中程度=(upper_90 - lower_90) / (upper_90 + lower_90) ## 筹码分布数据可视化 如果你想查看某只股票某一分钟的筹码分布图,可以运用下面的代码。其他筹码分布图和第三方的具有一定的可比性。 ```python import dai import pandas as pd import matplotlib.pyplot as plt df = dai.query(""" SELECT price, chips FROM cn_stock_chips_distribution_min """, filters={ "instrument": ["000002.SZ"], "date": ["2025-06-23 14:57:00", "2025-06-23 14:57:00"] }).df() # 按price排序以确保折线连续 df = df.sort_values('price') # 创建水平柱状图 plt.figure(figsize=(10, 6)) plt.barh(df['price'], df['chips'], height=0.1, color='skyblue') plt.xlabel('Chips') # x轴标签 plt.ylabel('Price') # y轴标签 plt.title('Price vs Chips (Horizontal Bar Chart)') plt.grid(axis='x', linestyle='--', alpha=0.7) plt.tight_layout() plt.show() ```

用例
表结构
字段 字段类型 字段描述
avg_cost double 平均成本
lower_70 double 70%筹码成本下限
date timestamp[ns] 日期
upper_70 double 70%筹码成本上限
upper_90 double 90%筹码成本上限
chips_ratio double 筹码占比
concentration double 筹码集中度
price double 筹码价格
instrument string 证券代码
__PARTITION__ int64 -
win_percent double 获利比率
lower_90 double 90%筹码成本下限
chips int64 筹码数量

表名cn_stock_chips_distribution_min

起始时间:

最近更新时间: