问题描述
调用get_money_flow()函数,根据定义
net_pct_s 表示小单净占比(%)
net_pct_m 表示中单净占比(%)
net_pct_l 表示大单净占比(%)
net_pct_xl 表示超大单净占比(%)
net_pct_main 表示主力净占比(%)
但是返回的数据为net_pct_xl=net_pct_l+net_pct_m + net_pct_s。这小单、中单、大单、超大单有什么关系呢????????所有单加起来不应该为100%吗?????请高手赐教,感谢!!!!
解决方案
您好!关于 get_money_flow() 函数返回的资金流向数据,很多初学者都会有类似的疑问。要理解这个问题,我们需要先弄清楚**“净额”和“净占比”**的概念。
1. 什么是“净额”和“净占比”?
在资金流向统计中:
- 净额 (Net Amount) = 主动买入金额 - 主动卖出金额。
- 净占比 (Net Percentage) = 净额 / 总成交额。
2. 为什么所有单的净占比加起来不是 100%?
在股票交易中,买卖是双向的,有买必有卖。整个市场的总买入金额永远等于总卖出金额。因此,如果我们把所有级别的订单(超大单、大单、中单、小单)的净额加在一起,其总和必然为 0。
即:
超大单净额 + 大单净额 + 中单净额 + 小单净额 = 0
由于“净占比”是净额除以总成交额,所以:
超大单净占比 + 大单净占比 + 中单净占比 + 小单净占比 = 0
这就是为什么它们加起来不是 100% 的原因。如果是“买入占比”或“卖出占比”,所有级别加起来才会是 100%。
3. 为什么会出现 net_pct_xl = net_pct_l + net_pct_m + net_pct_s?
根据上面的公式:
net_pct_xl + net_pct_l + net_pct_m + net_pct_s = 0
移项后可以得到:
net_pct_xl = - (net_pct_l + net_pct_m + net_pct_s)
您观察到的现象,很可能是忽略了正负号。超大单的净占比,在数值上等于大单、中单、小单净占比之和的相反数。例如,如果超大单是净流入(正数),那么大单、中单、小单的净额之和必然是净流出(负数),且绝对值相等。
4. 各个字段的具体定义
根据 JoinQuant API 文档,各字段的划分标准如下:
- 超大单 (xl):大于等于 50 万股或者 100 万元的成交单。
- 大单 (l):大于等于 10 万股或者 20 万元,且小于 50 万股或者 100 万元的成交单。
- 中单 (m):大于等于 2 万股或者 4 万元,且小于 10 万股或者 20 万元的成交单。
- 小单 (s):小于 2 万股或者 4 万元的成交单。
- 主力 (main):主力净额 = 超大单净额 + 大单净额。
希望这个解释能帮您理清资金流向数据的逻辑!在编写量化策略时,通常我们会关注主力净占比 (net_pct_main),以此来判断大资金的动向。