威科夫与高频因子
要筛选与威科夫操盘逻辑类似的因子,需先锚定威科夫核心原理:聚焦供求关系(吸筹 / 派发)、因果关系(蓄势→趋势)、努力与结果(量价匹配)、主力资金(Smart Money)行为、趋势与反转、盘口供需深度六大核心逻辑,再从文档中的高频因子中匹配契合度高的因子。以下为具体分类及因子罗列:
一、直接契合 “吸筹 / 派发” 核心逻辑的因子
威科夫的核心是识别主力资金的吸筹(Accumulation) 与派发(Distribution) 过程,以下因子直接围绕这一核心设计:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
收集派发指标(ACD) | 高频技术因子(文档 1) | 直接计算市场 “收集(吸筹)” 与 “派发” 的净力量,通过 ACD 线与股价背离发出反转信号(如 ACD 涨股价跌 = 吸筹→买入),与威科夫吸筹 / 派发模型完全对应。 |
累积 / 派发线(AD) | 高频技术因子(文档 1) | 以日内分钟成交量的价格加权累计值反映量能动量,识别主力吸筹时的量能累积、派发时的量能分散,契合威科夫 “量能先于价格” 的判断。 |
二、匹配 “供求关系(买卖力量失衡)” 的因子
威科夫强调通过盘口、订单流、资金流向量化买卖供需失衡,以下因子聚焦这一逻辑:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
逐档订单失衡率(SOIR) | 流动性类(文档 1) | 综合衡量盘口各档位买卖委托量不均衡程度,直接量化盘口供需压力,与威科夫 “盘口供需决定短期价格” 的分析逻辑一致。 |
订单流因子(Delta) | 订单流因子(文档 3) | 计算 “主动买入 - 主动卖出”,即时反映市场供需力量对比,对应威科夫 2.0 中 “订单流是供需最直接信号” 的核心观点。 |
资金流向(MFI) | 高频技术因子(文档 1) | 通过日内价量计算买卖压力(MFI 接近 0 = 卖压主导,100 = 买压主导),量化资金层面的供需失衡,契合威科夫 “资金流向主导供需” 的判断。 |
修正的净流入率 | 资金流类(文档 1) | 剥离反转因素提纯主力资金流,识别具有定价权的主力供需行为,对应威科夫对 “Smart Money(主力)主导供需” 的关注。 |
多层订单失衡 | 流动性类(文档 1) | 加权累计不同档位的订单失衡,精准量化供需对股价的短期 / 长期影响,符合威科夫 “多档位供需共同决定市场结构” 的逻辑。 |
三、契合 “努力与结果(量价匹配)” 的因子
威科夫 “努力与结果原则” 核心是:成交量(努力)需与价格变动(结果)匹配,背离则为反转信号(如放量滞涨 = 派发),以下因子直接围绕这一逻辑:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
成交量 “潮汐” 的价格变动速率 | 量价相关性类(文档 1) | 衡量成交量激增(努力)时的价格变动速率(结果),若量价不同步(如价跌量增但价速慢)则为过度反应,对应威科夫 “努力无果 = 趋势反转”(如放量滞跌 = 吸筹)。 |
成交量异常分类(volume_anomaly_type) | 成交分布类(文档 3) | 通过 “均值 + 标准差” 识别异常放量(努力),结合价格涨跌判断 “努力有果”(量涨价涨)或 “努力无果”(量涨价滞),直接落地威科夫努力与结果原则。 |
量价相关性(期货高频因子) | 期货 - 高频因子(文档 1) | 衡量期货成交量与价格的同步性(如量涨价涨 = 多头主导),若量价背离(如量涨价跌)则为供需反转信号,契合威科夫量价匹配逻辑。 |
加权偏度 | 收益分布类(文档 1) | 以成交量加权计算价格分布偏离,负偏态(成交集中于高位)= 量价背离(努力无果),对应威科夫 “放量滞涨 = 高估 / 派发” 的判断。 |
四、对应 “因果关系(蓄势→趋势)” 的因子
威科夫 “因果关系原则”:蓄势(横盘 / 支撑阻力)是因,趋势(涨跌)是果,以下因子聚焦 “蓄势” 与 “趋势” 的关联:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
趋势强度(期货高频因子) | 期货 - 高频因子(文档 1) | 以 “日内价格位移 / 路程” 刻画趋势强弱(果),回看期 1 天收益最高,对应威科夫 “吸筹蓄势(因)→趋势上涨(果)” 的逻辑。 |
阿隆指标(AROON) | 高频技术因子(文档 1) | 计算价格达近期高低点的期间数,识别 “蓄势后的趋势启动”(如 AROON_UP 突破 50 = 趋势开始),契合因果关系中 “蓄势→趋势” 的传导。 |
成交量支撑区域下限与收盘价差异 | 成交分布类(文档 1) | 确定成交量支撑区域(蓄势形成的公允价),收盘价偏离支撑区域(果)则未来回归,符合 “蓄势(支撑)→价格回归(果)” 逻辑。 |
b 型 /p 型成交量分布 | 成交分布类(文档 1) | 通过同价成交量确定支撑区域(蓄势),b 型(接近最低价)预期上涨、p 型(接近最高价)预期下跌,对应威科夫 “蓄势区域决定趋势方向”。 |
五、聚焦 “主力资金(Smart Money)行为” 的因子
威科夫核心假设是 “主力资金主导市场”,以下因子专门跟踪主力 / 知情资金的行为:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
知情交易概率(PIN/DPIN) | 资金流类(文档 1) | 衡量知情交易者(主力)订单占比,PIN 越高 = 信息不对称越强(主力主导),对应威科夫对 “Smart Money 利用信息吸筹 / 派发” 的关注。 |
大单影响力 | 期货 - 高频因子(文档 1) | 统计大额成交后 100 笔快照收益率,跟踪大资金(主力)持仓方向,符合威科夫 “主力资金行为决定趋势” 的核心观点。 |
买单集中度 | 资金流类(文档 1) | 刻画日内买单成交金额分布均匀度,集中度高 = 主力集中买盘,对应威科夫 “主力吸筹时买单集中” 的行为特征。 |
K 线类型(多开 / 空开) | 成交分布类(文档 3) | 通过 “持仓量 + 价格变动” 判断主力开仓 / 平仓行为(如多开 = 主力主动买),直接识别主力建仓 / 出货动作。 |
六、辅助 “趋势与反转” 判断的因子
威科夫重视趋势强弱与反转信号,以下因子用于识别趋势拐点:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
极端收益反转 | 动量反转类(文档 1) | 日内极端收益后呈反转特性,切割出强反转因子,对应威科夫 “过度反应后的反转”(如恐慌抛售 = 吸筹信号)。 |
价格拐点 | 期货 - 高频因子(文档 1) | 衡量期货品种交易分歧度,分歧大(拐点多)= 趋势反转,契合威科夫 “趋势拐点 = 多空力量切换” 的判断。 |
日内跳跃度 / 跳跃强度 | 波动跳跃类(文档 1) | 衡量价格在消息 / 主力冲击下的跳跃程度,跳跃后易反转,对应威科夫 “突发价格变动 = 趋势拐点” 的逻辑。 |
修正的振幅(翻转振幅) | 波动跳跃类(文档 1) | 根据日跳跃度修正振幅,增强低波动异象,识别 “振幅收窄 = 蓄势→反转”,符合威科夫趋势转折逻辑。 |
七、关联 “盘口供需深度” 的因子
威科夫通过盘口深度、价差判断供需充足度,以下因子聚焦盘口流动性与供需:
因子名称 | 所属分类(文档来源) | 对应威科夫逻辑 |
---|---|---|
有效深度 | 流动性类(文档 1) | 取最优买卖单挂单量最小值,衡量市场实际供需深度,深度大 = 流动性充足(主力可大规模建仓),符合威科夫 “吸筹需充足流动性” 的逻辑。 |
盘口平均深度 | 流动性类(文档 1) | 反映整体市场挂单量(供需深度),深度大 = 供需充足,对应威科夫 “盘口深度决定主力操作空间” 的判断。 |
盘口价差 | 流动性类(文档 1) | 衡量卖一 - 买一价差(供需成本),价差大 = 流动性差(供需不均衡),契合威科夫 “价差扩大 = 买卖力量失衡” 的逻辑。 |
在文档提及的所有因子中,收集派发指标(ACD) 是最贴合威科夫操盘法 “派发” 与 “累积” 核心逻辑的因子,其他部分高频量价因子可作为辅助验证指标。以下结合威科夫操盘法的核心逻辑与因子特性展开分析:
一、核心匹配因子:收集派发指标(ACD)—— 直接对应威科夫 “累积 / 派发” 逻辑
威科夫操盘法的核心是通过分析市场 “供需力量变化” 识别主力资金的累积(吸筹) 与派发(出货) 行为:
- 累积阶段:主力暗中吸筹,市场表现为 “价格震荡但买方力量逐步占优”,最终突破区间上涨;
- 派发阶段:主力暗中出货,市场表现为 “价格震荡但卖方力量逐步占优”,最终突破区间下跌。
而文档中的收集派发指标(ACD) 正是通过量化 “净收集力量” 直接刻画供需博弈,与威科夫逻辑完全契合,具体对应关系如下:
威科夫操盘法核心逻辑 | 收集派发指标(ACD)的计算与解读 | 直接匹配点 |
---|---|---|
累积(吸筹) (买方力量>卖方力量) | 1. 计算逻辑:若当日收盘价>昨日收盘价,“收集力量”= 收盘价 -“真实低位”(当日低位与昨日收盘价的较低值); 2. ACD 线特征:ACD 线持续上升(净收集力量为正且递增),说明买方主导,资金在累积。 | ACD 线上升→对应威科夫 “累积阶段”,此时价格若未大幅上涨,大概率是主力吸筹,后续易突破上涨。 |
派发(出货) (卖方力量>买方力量) | 1. 计算逻辑:若当日收盘价<昨日收盘价,“派发力量”= 收盘价 -“真实高位”(当日高位与昨日收盘价的较高值,结果为负); 2. ACD 线特征:ACD 线持续下降(净收集力量为负且递减),说明卖方主导,资金在派发。 | ACD 线下降→对应威科夫 “派发阶段”,此时价格若未大幅下跌,大概率是主力出货,后续易突破下跌。 |
信号验证 (趋势与指标背离) | 文档明确说明 ACD 的关键信号: - ACD 线下降但股价上升→卖方力量隐现,是 “派发完成” 的卖出信号; - ACD 线上升但股价下降→买方力量隐现,是 “累积完成” 的买入信号。 | 完全匹配威科夫 “背离验证” 逻辑(如 “价格创新高但买方力量减弱”= 派发信号,“价格创新低但卖方力量减弱”= 累积信号)。 |
二、辅助验证因子:高频量价因子 —— 补充威科夫 “量价配合” 逻辑
威科夫操盘法强调 “量价同步”(如累积阶段需 “价稳量增”,派发阶段需 “价稳量减”),文档中部分高频量价因子可作为 ACD 指标的辅助,验证 “累积 / 派发” 的有效性:
1. 成交量比率(VR)—— 验证 “量能与供需的匹配度”
- 因子逻辑:日内 “股价上升分钟成交量 / 股价下跌分钟成交量”,衡量买卖力量对比;
- 威科夫辅助作用:
- 若 ACD 线上升(累积信号)+ VR 值持续高于阈值(如 1.2)→ 说明 “买方力量强且有量能支撑”,累积信号更可靠;
- 若 ACD 线下降(派发信号)+ VR 值持续低于阈值(如 0.8)→ 说明 “卖方力量强且有量能支撑”,派发信号更可靠。
2. 动态买卖气指标(ADTM)—— 验证 “趋势方向与供需的一致性”
- 因子逻辑:通过日内开盘价的涨跌幅度计算 “市场人气”,取值范围 - 1~1(正 = 看涨,负 = 看跌);
- 威科夫辅助作用:
- 累积阶段:ACD 线上升 + ADTM 为正且递增→ 确认 “买方人气持续升温”,累积后的上涨趋势更明确;
- 派发阶段:ACD 线下降 + ADTM 为负且递减→ 确认 “卖方人气持续升温”,派发后的下跌趋势更明确。
3. 买入意愿因子 —— 验证 “短期资金的供需倾斜”
- 因子逻辑:日内 “买一>卖一的快照数量 / 总快照数量”,衡量短期买入意愿强度;
- 威科夫辅助作用:
- 累积阶段末期:ACD 线上升 + 买入意愿因子突然跳升→ 说明短期买方集中进场,可能是累积完成的 “突破信号”;
- 派发阶段末期:ACD 线下降 + 买入意愿因子突然跳水→ 说明短期卖方集中离场,可能是派发完成的 “破位信号”。
三、其他因子的适配性排除
文档中提及的 “凸显性收益 / 波动率”“动量反转类因子”“CTA 策略因子(如期限结构、基本面因子)” 等,因核心逻辑与威科夫 “供需博弈、主力行为” 无关,难以直接作为 “累积 / 派发” 的状态判断因子:
- 例如 “凸显性收益(STR)” 聚焦 “投资者对高收益的过度关注”,“耀眼波动率” 聚焦 “成交量激增后的价格波动”,均不涉及 “主力资金的吸筹 / 出货行为”,与威科夫逻辑匹配度极低;
- CTA 策略中的 “趋势跟踪 / 反转因子” 仅关注价格趋势,未刻画 “供需力量的隐性变化”(如威科夫强调的 “量价背离下的主力行为”),无法替代 ACD 指标的核心作用。
结论:符合威科夫 “派发 / 累积” 逻辑的状态因子组合
- 核心因子(必选):收集派发指标(ACD) —— 直接量化 “净收集 / 派发力量”,是识别威科夫 “累积 / 派发” 状态的核心依据;
- 辅助因子(可选):
- 成交量比率(VR):验证量能与供需的匹配度,避免 “无量假突破”;
- 动态买卖气指标(ADTM):验证人气趋势与供需的一致性,确认阶段延续性;
- 买入意愿因子:捕捉短期资金异动,辅助判断 “累积 / 派发的完成时点”。
通过 “ACD 指标定方向(累积 / 派发)+ VR/ADTM/ 买入意愿因子做验证”,可完整贴合威科夫操盘法的逻辑,构建有效的市场状态判断体系。
基于《可用的状态.docx》中对收集派发指标(ACD) 的定义(日内高频因子,核心是计算 “净收集力量”,需通过收盘价、最高价、最低价等分钟级数据推导日度指标,再通过时间衰减加权降频为月度因子),以下是完整的 Python 复现步骤,包含数据准备、因子计算、降频处理及结果验证,严格贴合文档逻辑:
一、复现前的核心逻辑回顾(基于文档定义)
文档中 ACD 指标的计算规则需明确 3 个关键环节,这是 Python 复现的核心依据:
- 日度 ACD 基础计算(DIF 与 AC)
- 首先计算每日的 “净收集 / 派发力量(DIF)”:
- 若当日收盘价(Close_t)>昨日收盘价(Close_t-1):DIF = Close_t - 真实低位(当日最低价 Low_t 与昨日收盘价 Close_t-1 的较小值);
- 若当日收盘价(Close_t)<昨日收盘价(Close_t-1):DIF = Close_t - 真实高位(当日最高价 High_t 与昨日收盘价 Close_t-1 的较大值);
- 若收盘价相等:文档未明确说明,默认 DIF=0(供需平衡)。
- 再计算 “累计收集力量(AC)”:AC 为过去 N 个交易日的 DIF 累加(文档未指定 N,通常取 20 日,与其他因子降频周期一致)。
- 首先计算每日的 “净收集 / 派发力量(DIF)”:
- 因子降频规则:将过去 20 个交易日的日度 ACD 指标(AC 值)进行 “时间衰减加权”,得到月度因子(时间衰减加权默认采用 “近期权重更高” 的指数衰减,贴合高频因子降频的常见逻辑)。
- 数据要求:需剔除开盘 / 收盘数据(文档中高频因子通用规则),仅使用日内分钟级的收盘价、最高价、最低价,最终聚合为日度数据后计算。
二、Python 复现完整代码(分步骤实现)
1. 环境准备与数据模拟(若无真实数据,可生成测试数据)
首先导入所需库,若有真实的分钟级数据(如 tushare、Wind 接口获取的期货 / 股票分钟数据),可替换模拟数据部分。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# --------------------------
# 步骤1:模拟日内分钟级数据(贴合文档“剔除开盘/收盘数据”规则)
# 假设数据维度:日期(date)、时间(time)、标的代码(code)、收盘价(close)、最高价(high)、最低价(low)
# 模拟2个标的(code1、code2),共60个交易日(覆盖3个月度周期,用于降频验证)
# --------------------------
# 生成日期范围(60个交易日,跳过周末)
date_range = pd.date_range(start="2024-01-01", end="2024-03-31", freq="B")[:60]
# 生成日内时间(剔除开盘30分钟和收盘30分钟,假设交易日时间9:30-15:00,取10:00-14:30的分钟数据)
intraday_time = pd.date_range(start="10:00:00", end="14:30:00", freq="T").time
# 构建模拟数据
data_list = []
for code in ["code1", "code2"]:for date in date_range:for time in intraday_time:# 模拟价格:close在100-120波动,high≥close≥lowclose = np.random.uniform(100, 120)high = np.random.uniform(close, close + 2)low = np.random.uniform(close - 2, close)data_list.append([date, time, code, close, high, low])# 转为DataFrame并预处理
df_minute = pd.DataFrame(data_list,columns=["date", "time", "code", "close", "high", "low"]
)
# 聚合为日度数据(文档中ACD需先从分钟数据提取日度核心指标:日收盘价、日最高价、日最低价)
df_daily = df_minute.groupby(["date", "code"]).agg(close=("close", "last"), # 日收盘价=当日最后一分钟收盘价high=("high", "max"), # 日最高价=当日分钟最高价的最大值low=("low", "min") # 日最低价=当日分钟最低价的最小值
).reset_index()# 查看日度数据结构(前5行)
print("日度数据预览:")
print(df_daily.head())
2. 计算日度 ACD 核心指标(DIF 与 AC)
根据文档规则计算每日的 “净收集 / 派发力量(DIF)”,再累加得到 “累计收集力量(AC)”:
# --------------------------
# 步骤2:计算日度DIF(净收集/派发力量)
# --------------------------
# 按标的分组,计算每个标的的昨日收盘价(shift(1))
df_daily = df_daily.sort_values(["code", "date"]).reset_index(drop=True)
df_daily["close_prev"] = df_daily.groupby("code")["close"].shift(1) # close_t-1# 定义DIF计算逻辑(严格匹配文档)
def calculate_dif(row):close_t = row["close"]close_t_1 = row["close_prev"]high_t = row["high"]low_t = row["low"]if pd.isna(close_t_1): # 首个交易日无昨日数据,DIF=0return 0elif close_t > close_t_1: # 收集阶段:DIF=收盘价-真实低位(low_t与close_t_1的较小值)true_low = min(low_t, close_t_1)return close_t - true_lowelif close_t < close_t_1: # 派发阶段:DIF=收盘价-真实高位(high_t与close_t_1的较大值)true_high = max(high_t, close_t_1)return close_t - true_highelse: # 收盘价相等,供需平衡,DIF=0return 0# 应用函数计算日度DIF
df_daily["dif"] = df_daily.apply(calculate_dif, axis=1)# --------------------------
# 步骤3:计算日度AC(累计收集力量,文档默认20日窗口)
# --------------------------
df_daily["ac"] = df_daily.groupby("code")["dif"].rolling(window=20, min_periods=1).sum().reset_index(drop=True)# 查看日度ACD结果(前10行,code1)
print("\n日度ACD(DIF+AC)结果预览(code1):")
print(df_daily[df_daily["code"] == "code1"][["date", "close", "close_prev", "dif", "ac"]].head(10))
3. 月度因子降频(时间衰减加权)
文档要求 “将过去 20 个交易日的日度 ACD 指标进行时间衰减加权,得到月度因子”。时间衰减加权采用指数衰减法(近期数据权重更高,衰减系数 λ=0.9,可根据需求调整):
# --------------------------
# 步骤4:时间衰减加权(指数衰减)
# 公式:权重w_i = λ^(n-i),其中n=20(窗口长度),i=1~20(越近i越大,权重越高)
# --------------------------
def time_decay_weighted_ac(ac_series, decay_factor=0.9):"""计算时间衰减加权的AC值(月度因子)ac_series:过去20个交易日的AC序列(按日期升序,前1天→第20天)decay_factor:衰减系数(默认0.9,越小衰减越快)"""window = len(ac_series)if window < 1:return np.nan# 生成权重:第1天(最早)权重=decay_factor^(window-1),第window天(最新)权重=1weights = np.array([decay_factor ** (window - i - 1) for i in range(window)])# 归一化权重(避免权重和不为1导致的偏差)weights_normalized = weights / weights.sum()# 加权计算月度AC因子monthly_ac = np.dot(ac_series.values, weights_normalized)return monthly_ac# --------------------------
# 步骤5:按“年月”分组,计算月度ACD因子
# --------------------------
# 添加“年月”列(用于分组)
df_daily["year_month"] = df_daily["date"].dt.to_period("M")# 按标的+年月分组,对每个组的AC序列应用时间衰减加权
df_monthly = df_daily.groupby(["code", "year_month"]).apply(lambda x: pd.Series({"monthly_ac": time_decay_weighted_ac(x["ac"].reset_index(drop=True)),"date_end": x["date"].max() # 月度因子对应的结束日期})
).reset_index()# 查看月度ACD因子结果
print("\n月度ACD因子结果:")
print(df_monthly[["code", "year_month", "date_end", "monthly_ac"]])
4. 结果可视化与验证(贴合文档 “信号逻辑”)
文档提到 ACD 的核心信号:“ACD 线下降但股价上升→卖出信号;ACD 线上升但股价下降→买入信号”。通过可视化验证因子与价格的联动关系:
# --------------------------
# 步骤6:可视化验证(以code1为例,查看AC与收盘价的关系)
# --------------------------
df_code1 = df_daily[df_daily["code"] == "code1"].copy()fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), sharex=True)# 子图1:收盘价走势
ax1.plot(df_code1["date"], df_code1["close"], label="收盘价", color="blue")
ax1.set_title("code1 收盘价走势", fontsize=12)
ax1.set_ylabel("收盘价", fontsize=10)
ax1.legend()
ax1.grid(True, alpha=0.3)# 子图2:日度AC走势(ACD线)
ax2.plot(df_code1["date"], df_code1["ac"], label="AC(累计收集力量)", color="red")
ax2.axhline(y=0, color="black", linestyle="--", alpha=0.5, label="供需平衡线(AC=0)")
ax2.set_title("code1 日度AC(收集派发指标)走势", fontsize=12)
ax2.set_xlabel("日期", fontsize=10)
ax2.set_ylabel("AC值", fontsize=10)
ax2.legend()
ax2.grid(True, alpha=0.3)# 旋转x轴日期标签
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()# 验证文档信号:查找“AC上升但收盘价下降”的买入信号候选点
df_code1["ac_prev"] = df_code1["ac"].shift(1)
df_code1["close_prev"] = df_code1["close"].shift(1)
buy_signals = df_code1[(df_code1["ac"] > df_code1["ac_prev"]) & (df_code1["close"] < df_code1["close_prev"])]print(f"\ncode1 买入信号候选点数量:{len(buy_signals)}")
print("买入信号候选点(前5个):")
print(buy_signals[["date", "close", "close_prev", "ac", "ac_prev"]].head())
三、关键注意事项(贴合文档细节)
- 数据清洗:必须剔除开盘 / 收盘数据(文档高频因子通用规则),代码中通过筛选 “10:00-14:30” 的分钟数据实现,若真实数据有明确开盘 / 收盘标记,需对应调整时间范围。
- 参数选择:
- AC 的计算窗口(文档默认 20 日):若需调整,可修改
rolling(window=20)
中的window
参数; - 时间衰减系数(默认 0.9):若希望近期数据权重更高,可减小系数(如 0.8),反之增大(如 0.95)。
- AC 的计算窗口(文档默认 20 日):若需调整,可修改
- 结果解读:
- AC>0:整体处于 “收集阶段”,买方力量占优;
- AC<0:整体处于 “派发阶段”,卖方力量占优;
- 月度因子
monthly_ac
可用于跨标的排序(如筛选 AC 最高的前 20% 标的,判断为强收集状态)。
通过以上代码,可完全复现《可用的状态.docx》中定义的收集派发指标(ACD),从分钟级数据到日度基础指标,再到月度因子,全程贴合文档逻辑,且包含结果验证环节,确保因子有效性。