Classify2-CpuVersion

This commit is contained in:
2025-06-06 17:04:01 +08:00
parent c5ad56a9e8
commit 15f327b8ae
13 changed files with 4681 additions and 7214 deletions

Binary file not shown.

View File

@@ -0,0 +1,82 @@
import pandas as pd
import numpy as np
from tqdm import tqdm
def _prepare_concept_df(concept_dict: dict) -> pd.DataFrame:
"""将 concept_dict 转换为长格式的 DataFrame。"""
records = []
for date_str, inner_dict in concept_dict.items():
trade_date = pd.to_datetime(date_str, format='%Y%m%d')
for concept_name, stock_list in inner_dict.items():
for ts_code in stock_list:
records.append((trade_date, concept_name, ts_code))
if not records:
return pd.DataFrame(columns=['trade_date', 'concept_name', 'ts_code'])
concept_df = pd.DataFrame(records, columns=['trade_date', 'concept_name', 'ts_code'])
concept_df = concept_df.drop_duplicates(subset=["trade_date", "ts_code"], keep="first")
return concept_df
def generate_concept_factors(df: pd.DataFrame, concept_dict: dict) -> pd.DataFrame:
"""
基于热门概念数据生成因子。
Args:
df (pd.DataFrame): 所有股票所有日期的数据,需包含 'ts_code', 'trade_date'
以及用于聚合的列 (如 'pct_chg', 'turnover_rate')。
concept_dict (dict): 每日热门概念及其股票列表的字典。
Returns:
pd.DataFrame: 添加了概念相关因子的原始 DataFrame。
"""
print("开始生成概念相关因子...")
# 0. 准备工作创建副本以避免修改原始df
df = df.copy()
df['trade_date'] = pd.to_datetime(df['trade_date'])
# 1. 将 concept_dict 转换为适合合并的 DataFrame
concept_df = _prepare_concept_df(concept_dict).sort_values(by=['trade_date'])
if concept_df.empty:
print("警告: concept_dict 为空或格式不正确,无法生成概念因子。")
return df
# 2. 将概念信息合并到主数据 df
df = pd.merge(df, concept_df, on=['trade_date', 'ts_code'], how='left')
# --- 因子计算 ---
# 因子 1: 是否属于当日热门概念
df['cat_hot_concept_stock'] = df['concept_name'].notna().astype(np.int8)
# 因子 2 & 3: 概念内的截面排序因子
# 创建一个掩码,只对热门概念股进行后续计算,以提高效率
hot_mask = df['concept_name'].notna()
# 定义需要在概念内部进行截面排序的特征列表
# 确保这些列存在于你的 df 中
features_to_rank = ['pct_chg', 'turnover_rate', 'volume_ratio']
# 筛选出 df 中实际存在的特征列
existing_features_to_rank = [f for f in features_to_rank if f in df.columns]
if not existing_features_to_rank:
print("警告: df 中缺少用于概念内排序的特征列,跳过相关因子计算。")
else:
print(f"开始计算概念内截面排序因子,基于: {existing_features_to_rank}")
# 使用 groupby().rank() 高效计算截面排名
grouped = df[hot_mask].groupby(['trade_date', 'concept_name'])
for feature in tqdm(existing_features_to_rank, desc="Ranking Features in Concepts"):
# 计算百分比排名 (0到1之间),值越大表示排名越靠前
rank_col_name = f'concept_rank_{feature}'
df[rank_col_name] = grouped[feature].rank(pct=True)
# --- 清理 & 返回 ---
# `concept_name` 列包含了有用的信息,可以选择保留或删除
# 这里我们选择保留,以便后续分析。如果不需要,可以取消下面这行注释。
df.drop(columns=['concept_name'], inplace=True)
print("概念相关因子生成完毕。")
return df

View File

@@ -1,63 +0,0 @@
序号 因子名称 (Factor Name / Column Name) 因子类别 (Factor Category) 简要说明
1 pe_ttm 价值类因子 (Value) 市盈率 TTM
2 return_5, return_20 动量类因子 (Momentum) 过去5日/20日收益率
3 act_factor1 to act_factor4 动量类 / 技术类因子 (Momentum / Technical) 基于不同周期EMA斜率计算的动量/趋势因子
4 std_return_5, std_return_90, std_return_90_2 波动率类因子 (Volatility) 不同窗口期或延迟窗口期的滚动收益率标准差
5 upside_vol, downside_vol 波动率类因子 (Volatility) N日滚动上/下行波动率
6 vol_ratio 波动率类因子 (Volatility) 上行波动率 / 下行波动率
7 std_return_5 / std_return_90 波动率类因子 (Volatility) 短期波动率 / 长期波动率 比率
8 std_return_90 - std_return_90_2 波动率类因子 (Volatility) 长期波动率与其10日前值的差值波动变化
9 volatility (来自指数计算) 波动率类 / 市场因子 (Volatility / Market) 指数或个股的20日滚动收益率标准差
10 log(circ_mv) (或 log_circ_mv) 市值类因子 (Size) 流通市值的对数值
11 cs_rank_size 市值类因子 (Size) 对数流通市值的截面排序
12 vol 流动性类因子 (Liquidity) 成交量 (通常需要与其他指标结合或处理)
13 turnover_rate 流动性类因子 (Liquidity) 换手率
14 volume_ratio 流动性类因子 (Liquidity) 量比
15 turnover_deviation 流动性类因子 (Liquidity) 换手率与其3日滚动均值的标准差倍数偏离
16 cat_turnover_spike 流动性类 / 分类因子 (Liquidity / Categorical) 换手率是否显著高于近期均值
17 volume_change_rate 流动性类因子 (Liquidity) 短期滚动成交量均值 / 长期滚动成交量均值 - 1
18 cat_volume_breakout 流动性类 / 分类因子 (Liquidity / Categorical) 当日成交量是否大于过去5日最大成交量
19 avg_volume_ratio 流动性类因子 (Liquidity) 3日滚动量比均值
20 cat_volume_ratio_breakout 流动性类 / 分类因子 (Liquidity / Categorical) 当日量比是否大于过去5日最大量比
21 vol_spike (Rolling Mean Vol) 流动性类因子 (Liquidity) 20日滚动成交量均值
22 vol_std_5 流动性类 / 波动率因子 (Liquidity / Volatility) 成交量日变化率的5日滚动标准差
23 volume_growth 流动性类因子 (Liquidity) 20日成交量变化率
24 turnover_std 流动性类 / 波动率因子 (Liquidity / Volatility) 换手率的20日滚动标准差
25 flow_lg_elg_intensity 资金流 / 流动性类因子 (Money Flow / Liquidity) (大单+超大单)净买入量 / 总成交量
26 flow_divergence_diff, flow_divergence_ratio 资金流 / 情绪类因子 (Money Flow / Sentiment) 散户与主力资金流的差异或比率
27 lg_elg_buy_prop 资金流 / 流动性类因子 (Money Flow / Liquidity) (大单+超大单)买入量 / 总买入量
28 flow_struct_buy_change 资金流 / 流动性类因子 (Money Flow / Liquidity) 主力买入占比的日变化
29 flow_lg_elg_accel 资金流 / 动量类因子 (Money Flow / Momentum) 主力资金流加速度
30 active_buy_volume_large/big/small 资金流 / 流动性类因子 (Money Flow / Liquidity) 不同规模主动买入量 / 净流入量
31 buy_lg/elg_vol_minus_sell_lg/elg_vol 资金流 / 流动性类因子 (Money Flow / Liquidity) 不同规模净买入量 / 总净流入量
32 cs_rank_net_lg_flow_val, cs_rank_elg_buy_ratio, cs_rank_lg_sm_flow_diverge, cs_rank_elg_buy_sell_sm_ratio 资金流 / 复合因子 (截面排序) 各种资金流指标的截面排序
33 cs_rank_ind_adj_lg_flow 资金流 / 复合因子 (行业调整+截面排序) 行业调整后的大单净流入截面排序
34 chip_concentration_range, chip_skewness, cost_support_15pct_change, weight_roc5, cost_stability, ctrl_strength, low_cost_dev, asymmetry, cost_conc_std_N, profit_pressure, underwater_resistance, cs_rank_rel_profit_margin, cs_rank_cost_breadth, cs_rank_dist_to_upper_cost 定位类因子 (Positioning) / 技术类 基于持仓成本分布 (cost_*, weight_avg) 计算的各种指标及其截面排序
35 winner_rate, cs_rank_winner_rate 定位类因子 (Positioning) / 技术类 获利盘比例及其截面排序
36 floating_chip_proxy, price_cost_divergence, high_cost_break_days, liquidity_risk, lock_factor, cost_atr_adj, smallcap_concentration, cat_golden_resonance 定位类因子 (Positioning) / 复合因子 结合持仓成本与其他信息(价格、成交、波动率、市值)的复合指标
37 cat_winner_price_zone 定位类 / 分类因子 (Positioning / Categorical) 基于成本和获利盘划分的区域类别
38 flow_chip_consistency, profit_taking_vs_absorb, vol_amp_loss, vol_drop_profit_cnt, cost_break_confirm_cnt, vol_wgt_hist_pos, cs_rank_vol_x_profit_margin, cs_rank_cost_dist_vol_ratio 定位类因子 (Positioning) / 复合因子 进一步结合定位、资金流、量价的复杂交互因子
39 return_skew, return_kurtosis 技术类 / 统计特征 (Technical / Stats) 滚动收益率的偏度与峰度
40 rsi_3 技术类 / 动量类因子 (Technical / Momentum) 3日相对强弱指数
41 obv, maobv_6, obv-maobv_6 技术类 / 量价因子 (Technical / Volume) 能量潮及其均线、差离
42 atr_14, atr_6 技术类 / 波动率类因子 (Technical / Volatility) 平均真实波幅
43 log_close 技术类 / 量价因子 (Technical / Price) 收盘价对数
44 up, down 技术类 / 量价因子 (Technical / Price Action) 标准化上影线、下影线长度
45 alpha_22_improved, alpha_003, alpha_007, alpha_013 技术类 / Alpha因子 (Technical / Alpha) WorldQuant Alpha 因子实现
46 atr_norm_channel_pos 技术类 / 量价因子 (Technical / Price Action) ATR 标准化的价格通道位置
47 turnover_diff_skew 技术类 / 流动性类 (Technical / Liquidity) 换手率变化率的偏度
48 pullback_strong_N_M 技术类 / 动量类因子 (Technical / Momentum) 近期强势股的回调幅度
49 vol_adj_roc 技术类 / 复合因子 (动量+波动率) 波动率调整后的 N 日变化率
50 ar, br, arbr 情绪类 / 技术类因子 (Sentiment / Technical) ARBR 人气意愿指标
51 up_ratio_20d (来自指数计算) 情绪类 / 市场因子 (Sentiment / Market) 指数或个股过去20天上涨天数比例
52 cat_up_limit, cat_down_limit, up_limit_count_10d, down_limit_count_10d, consecutive_up_limit 事件驱动 / 市场状态因子 (Event / Market State) 涨跌停相关状态和计数
53 momentum_factor, resonance_factor 复合因子 (量价) (Composite - P/V) 基于量、价、换手率等的简单复合
54 cat_af2, cat_af3, cat_af4 复合因子 / 分类因子 (Composite / Cat.) act_factor 之间的比较
55 act_factor5, act_factor6 复合因子 (技术类) (Composite - Technical) act_factor 1-4 的组合
56 mv_volatility, mv_growth, mv_turnover_ratio, mv_adjusted_volume, mv_weighted_turnover, nonlinear_mv_volume, mv_volume_ratio, mv_momentum 复合因子 (市值+流动性/量价) 考虑了市值影响的量价、流动性或动量指标
57 cap_neutral_cost_metric (占位符) 复合因子 / Alpha因子 (占位符) 市值行业中性化的成本指标(需实现)
58 hurst_exponent_flow (占位符) 资金流 / 统计因子 (占位符) 资金流的 Hurst 指数(需实现)
59 intraday_lg_flow_corr_N (占位符) 复合因子 (价格行为+资金流) (占位符) 日内趋势与大单流相关性(需实现)
60 industry_* (来自 industry_df) 行业因子 (Industry) 对应行业的各种指标(如行业收益率、行业动量等)
61 *_deviation (来自 create_deviation_within_dates) 复合因子 (相对行业) 个股因子相对于行业均值的偏离
62 complex_factor_gplearn_1 复合因子 (GP生成) DEAP/GP 找到的因子表达式 1
1 序号 因子名称 (Factor Name / Column Name) 因子类别 (Factor Category) 简要说明
2 1 pe_ttm 价值类因子 (Value) 市盈率 TTM
3 2 return_5, return_20 动量类因子 (Momentum) 过去5日/20日收益率
4 3 act_factor1 to act_factor4 动量类 / 技术类因子 (Momentum / Technical) 基于不同周期EMA斜率计算的动量/趋势因子
5 4 std_return_5, std_return_90, std_return_90_2 波动率类因子 (Volatility) 不同窗口期或延迟窗口期的滚动收益率标准差
6 5 upside_vol, downside_vol 波动率类因子 (Volatility) N日滚动上/下行波动率
7 6 vol_ratio 波动率类因子 (Volatility) 上行波动率 / 下行波动率
8 7 std_return_5 / std_return_90 波动率类因子 (Volatility) 短期波动率 / 长期波动率 比率
9 8 std_return_90 - std_return_90_2 波动率类因子 (Volatility) 长期波动率与其10日前值的差值(波动变化)
10 9 volatility (来自指数计算) 波动率类 / 市场因子 (Volatility / Market) 指数(或个股)的20日滚动收益率标准差
11 10 log(circ_mv) (或 log_circ_mv) 市值类因子 (Size) 流通市值的对数值
12 11 cs_rank_size 市值类因子 (Size) 对数流通市值的截面排序
13 12 vol 流动性类因子 (Liquidity) 成交量 (通常需要与其他指标结合或处理)
14 13 turnover_rate 流动性类因子 (Liquidity) 换手率
15 14 volume_ratio 流动性类因子 (Liquidity) 量比
16 15 turnover_deviation 流动性类因子 (Liquidity) 换手率与其3日滚动均值的标准差倍数偏离
17 16 cat_turnover_spike 流动性类 / 分类因子 (Liquidity / Categorical) 换手率是否显著高于近期均值
18 17 volume_change_rate 流动性类因子 (Liquidity) 短期滚动成交量均值 / 长期滚动成交量均值 - 1
19 18 cat_volume_breakout 流动性类 / 分类因子 (Liquidity / Categorical) 当日成交量是否大于过去5日最大成交量
20 19 avg_volume_ratio 流动性类因子 (Liquidity) 3日滚动量比均值
21 20 cat_volume_ratio_breakout 流动性类 / 分类因子 (Liquidity / Categorical) 当日量比是否大于过去5日最大量比
22 21 vol_spike (Rolling Mean Vol) 流动性类因子 (Liquidity) 20日滚动成交量均值
23 22 vol_std_5 流动性类 / 波动率因子 (Liquidity / Volatility) 成交量日变化率的5日滚动标准差
24 23 volume_growth 流动性类因子 (Liquidity) 20日成交量变化率
25 24 turnover_std 流动性类 / 波动率因子 (Liquidity / Volatility) 换手率的20日滚动标准差
26 25 flow_lg_elg_intensity 资金流 / 流动性类因子 (Money Flow / Liquidity) (大单+超大单)净买入量 / 总成交量
27 26 flow_divergence_diff, flow_divergence_ratio 资金流 / 情绪类因子 (Money Flow / Sentiment) 散户与主力资金流的差异或比率
28 27 lg_elg_buy_prop 资金流 / 流动性类因子 (Money Flow / Liquidity) (大单+超大单)买入量 / 总买入量
29 28 flow_struct_buy_change 资金流 / 流动性类因子 (Money Flow / Liquidity) 主力买入占比的日变化
30 29 flow_lg_elg_accel 资金流 / 动量类因子 (Money Flow / Momentum) 主力资金流加速度
31 30 active_buy_volume_large/big/small 资金流 / 流动性类因子 (Money Flow / Liquidity) 不同规模主动买入量 / 净流入量
32 31 buy_lg/elg_vol_minus_sell_lg/elg_vol 资金流 / 流动性类因子 (Money Flow / Liquidity) 不同规模净买入量 / 总净流入量
33 32 cs_rank_net_lg_flow_val, cs_rank_elg_buy_ratio, cs_rank_lg_sm_flow_diverge, cs_rank_elg_buy_sell_sm_ratio 资金流 / 复合因子 (截面排序) 各种资金流指标的截面排序
34 33 cs_rank_ind_adj_lg_flow 资金流 / 复合因子 (行业调整+截面排序) 行业调整后的大单净流入截面排序
35 34 chip_concentration_range, chip_skewness, cost_support_15pct_change, weight_roc5, cost_stability, ctrl_strength, low_cost_dev, asymmetry, cost_conc_std_N, profit_pressure, underwater_resistance, cs_rank_rel_profit_margin, cs_rank_cost_breadth, cs_rank_dist_to_upper_cost 定位类因子 (Positioning) / 技术类 基于持仓成本分布 (cost_*, weight_avg) 计算的各种指标及其截面排序
36 35 winner_rate, cs_rank_winner_rate 定位类因子 (Positioning) / 技术类 获利盘比例及其截面排序
37 36 floating_chip_proxy, price_cost_divergence, high_cost_break_days, liquidity_risk, lock_factor, cost_atr_adj, smallcap_concentration, cat_golden_resonance 定位类因子 (Positioning) / 复合因子 结合持仓成本与其他信息(价格、成交、波动率、市值)的复合指标
38 37 cat_winner_price_zone 定位类 / 分类因子 (Positioning / Categorical) 基于成本和获利盘划分的区域类别
39 38 flow_chip_consistency, profit_taking_vs_absorb, vol_amp_loss, vol_drop_profit_cnt, cost_break_confirm_cnt, vol_wgt_hist_pos, cs_rank_vol_x_profit_margin, cs_rank_cost_dist_vol_ratio 定位类因子 (Positioning) / 复合因子 进一步结合定位、资金流、量价的复杂交互因子
40 39 return_skew, return_kurtosis 技术类 / 统计特征 (Technical / Stats) 滚动收益率的偏度与峰度
41 40 rsi_3 技术类 / 动量类因子 (Technical / Momentum) 3日相对强弱指数
42 41 obv, maobv_6, obv-maobv_6 技术类 / 量价因子 (Technical / Volume) 能量潮及其均线、差离
43 42 atr_14, atr_6 技术类 / 波动率类因子 (Technical / Volatility) 平均真实波幅
44 43 log_close 技术类 / 量价因子 (Technical / Price) 收盘价对数
45 44 up, down 技术类 / 量价因子 (Technical / Price Action) 标准化上影线、下影线长度
46 45 alpha_22_improved, alpha_003, alpha_007, alpha_013 技术类 / Alpha因子 (Technical / Alpha) WorldQuant Alpha 因子实现
47 46 atr_norm_channel_pos 技术类 / 量价因子 (Technical / Price Action) ATR 标准化的价格通道位置
48 47 turnover_diff_skew 技术类 / 流动性类 (Technical / Liquidity) 换手率变化率的偏度
49 48 pullback_strong_N_M 技术类 / 动量类因子 (Technical / Momentum) 近期强势股的回调幅度
50 49 vol_adj_roc 技术类 / 复合因子 (动量+波动率) 波动率调整后的 N 日变化率
51 50 ar, br, arbr 情绪类 / 技术类因子 (Sentiment / Technical) ARBR 人气意愿指标
52 51 up_ratio_20d (来自指数计算) 情绪类 / 市场因子 (Sentiment / Market) 指数(或个股)过去20天上涨天数比例
53 52 cat_up_limit, cat_down_limit, up_limit_count_10d, down_limit_count_10d, consecutive_up_limit 事件驱动 / 市场状态因子 (Event / Market State) 涨跌停相关状态和计数
54 53 momentum_factor, resonance_factor 复合因子 (量价) (Composite - P/V) 基于量、价、换手率等的简单复合
55 54 cat_af2, cat_af3, cat_af4 复合因子 / 分类因子 (Composite / Cat.) act_factor 之间的比较
56 55 act_factor5, act_factor6 复合因子 (技术类) (Composite - Technical) act_factor 1-4 的组合
57 56 mv_volatility, mv_growth, mv_turnover_ratio, mv_adjusted_volume, mv_weighted_turnover, nonlinear_mv_volume, mv_volume_ratio, mv_momentum 复合因子 (市值+流动性/量价) 考虑了市值影响的量价、流动性或动量指标
58 57 cap_neutral_cost_metric (占位符) 复合因子 / Alpha因子 (占位符) 市值行业中性化的成本指标(需实现)
59 58 hurst_exponent_flow (占位符) 资金流 / 统计因子 (占位符) 资金流的 Hurst 指数(需实现)
60 59 intraday_lg_flow_corr_N (占位符) 复合因子 (价格行为+资金流) (占位符) 日内趋势与大单流相关性(需实现)
61 60 industry_* (来自 industry_df) 行业因子 (Industry) 对应行业的各种指标(如行业收益率、行业动量等)
62 61 *_deviation (来自 create_deviation_within_dates) 复合因子 (相对行业) 个股因子相对于行业均值的偏离
63 62 complex_factor_gplearn_1 复合因子 (GP生成) DEAP/GP 找到的因子表达式 1