Classify2-CpuVersion
This commit is contained in:
BIN
main/factor/__pycache__/concept_factor.cpython-313.pyc
Normal file
BIN
main/factor/__pycache__/concept_factor.cpython-313.pyc
Normal file
Binary file not shown.
82
main/factor/concept_factor.py
Normal file
82
main/factor/concept_factor.py
Normal 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
|
||||
@@ -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
|
||||
|
Reference in New Issue
Block a user