Files
NewStock/main/train/Classify3.ipynb
liaozhaorun a4b05bb62f Classify2
2025-05-13 15:30:06 +08:00

2472 lines
470 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "79a7758178bafdd3",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:46:06.987506Z",
"start_time": "2025-04-03T12:46:06.259551Z"
},
"jupyter": {
"source_hidden": true
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"e:\\PyProject\\NewStock\\main\\train\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
"import gc\n",
"import os\n",
"import sys\n",
"sys.path.append('../../')\n",
"print(os.getcwd())\n",
"import pandas as pd\n",
"from main.factor.factor import get_rolling_factor, get_simple_factor\n",
"from main.utils.factor import read_industry_data\n",
"from main.utils.factor_processor import calculate_score\n",
"from main.utils.utils import read_and_merge_h5_data, merge_with_industry_data\n",
"\n",
"import warnings\n",
"\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a79cafb06a7e0e43",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:00.212859Z",
"start_time": "2025-04-03T12:46:06.998047Z"
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"daily data\n",
"daily basic\n",
"inner merge on ['ts_code', 'trade_date']\n",
"stk limit\n",
"left merge on ['ts_code', 'trade_date']\n",
"money flow\n",
"left merge on ['ts_code', 'trade_date']\n",
"cyq perf\n",
"left merge on ['ts_code', 'trade_date']\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 8606490 entries, 0 to 8606489\n",
"Data columns (total 32 columns):\n",
" # Column Dtype \n",
"--- ------ ----- \n",
" 0 ts_code object \n",
" 1 trade_date datetime64[ns]\n",
" 2 open float64 \n",
" 3 close float64 \n",
" 4 high float64 \n",
" 5 low float64 \n",
" 6 vol float64 \n",
" 7 pct_chg float64 \n",
" 8 turnover_rate float64 \n",
" 9 pe_ttm float64 \n",
" 10 circ_mv float64 \n",
" 11 total_mv float64 \n",
" 12 volume_ratio float64 \n",
" 13 is_st bool \n",
" 14 up_limit float64 \n",
" 15 down_limit float64 \n",
" 16 buy_sm_vol float64 \n",
" 17 sell_sm_vol float64 \n",
" 18 buy_lg_vol float64 \n",
" 19 sell_lg_vol float64 \n",
" 20 buy_elg_vol float64 \n",
" 21 sell_elg_vol float64 \n",
" 22 net_mf_vol float64 \n",
" 23 his_low float64 \n",
" 24 his_high float64 \n",
" 25 cost_5pct float64 \n",
" 26 cost_15pct float64 \n",
" 27 cost_50pct float64 \n",
" 28 cost_85pct float64 \n",
" 29 cost_95pct float64 \n",
" 30 weight_avg float64 \n",
" 31 winner_rate float64 \n",
"dtypes: bool(1), datetime64[ns](1), float64(29), object(1)\n",
"memory usage: 2.0+ GB\n",
"None\n"
]
}
],
"source": [
"from main.utils.utils import read_and_merge_h5_data\n",
"\n",
"print('daily data')\n",
"df = read_and_merge_h5_data('../../data/daily_data.h5', key='daily_data',\n",
" columns=['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol', 'pct_chg'],\n",
" df=None)\n",
"\n",
"print('daily basic')\n",
"df = read_and_merge_h5_data('../../data/daily_basic.h5', key='daily_basic',\n",
" columns=['ts_code', 'trade_date', 'turnover_rate', 'pe_ttm', 'circ_mv', 'total_mv', 'volume_ratio',\n",
" 'is_st'], df=df, join='inner')\n",
"\n",
"print('stk limit')\n",
"df = read_and_merge_h5_data('../../data/stk_limit.h5', key='stk_limit',\n",
" columns=['ts_code', 'trade_date', 'pre_close', 'up_limit', 'down_limit'],\n",
" df=df)\n",
"print('money flow')\n",
"df = read_and_merge_h5_data('../../data/money_flow.h5', key='money_flow',\n",
" columns=['ts_code', 'trade_date', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol',\n",
" 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol'],\n",
" df=df)\n",
"print('cyq perf')\n",
"df = read_and_merge_h5_data('../../data/cyq_perf.h5', key='cyq_perf',\n",
" columns=['ts_code', 'trade_date', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct',\n",
" 'cost_50pct',\n",
" 'cost_85pct', 'cost_95pct', 'weight_avg', 'winner_rate'],\n",
" df=df)\n",
"print(df.info())"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "cac01788dac10678",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:10.527104Z",
"start_time": "2025-04-03T12:47:00.488715Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"industry\n"
]
}
],
"source": [
"print('industry')\n",
"industry_df = read_and_merge_h5_data('../../data/industry_data.h5', key='industry_data',\n",
" columns=['ts_code', 'l2_code', 'in_date'],\n",
" df=None, on=['ts_code'], join='left')\n",
"\n",
"\n",
"def merge_with_industry_data(df, industry_df):\n",
" # 确保日期字段是 datetime 类型\n",
" df['trade_date'] = pd.to_datetime(df['trade_date'])\n",
" industry_df['in_date'] = pd.to_datetime(industry_df['in_date'])\n",
"\n",
" # 对 industry_df 按 ts_code 和 in_date 排序\n",
" industry_df_sorted = industry_df.sort_values(['in_date', 'ts_code'])\n",
"\n",
" # 对原始 df 按 ts_code 和 trade_date 排序\n",
" df_sorted = df.sort_values(['trade_date', 'ts_code'])\n",
"\n",
" # 使用 merge_asof 进行向后合并\n",
" merged = pd.merge_asof(\n",
" df_sorted,\n",
" industry_df_sorted,\n",
" by='ts_code', # 按 ts_code 分组\n",
" left_on='trade_date',\n",
" right_on='in_date',\n",
" direction='backward'\n",
" )\n",
"\n",
" # 获取每个 ts_code 的最早 in_date 记录\n",
" min_in_date_per_ts = (industry_df_sorted\n",
" .groupby('ts_code')\n",
" .first()\n",
" .reset_index()[['ts_code', 'l2_code']])\n",
"\n",
" # 填充未匹配到的记录trade_date 早于所有 in_date 的情况)\n",
" merged['l2_code'] = merged['l2_code'].fillna(\n",
" merged['ts_code'].map(min_in_date_per_ts.set_index('ts_code')['l2_code'])\n",
" )\n",
"\n",
" # 保留需要的列并重置索引\n",
" result = merged.reset_index(drop=True)\n",
" return result\n",
"\n",
"\n",
"# 使用示例\n",
"df = merge_with_industry_data(df, industry_df)\n",
"# print(mdf[mdf['ts_code'] == '600751.SH'][['ts_code', 'trade_date', 'l2_code']])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "c4e9e1d31da6dba6",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:10.719252Z",
"start_time": "2025-04-03T12:47:10.541247Z"
},
"jupyter": {
"source_hidden": true
}
},
"outputs": [],
"source": [
"def calculate_indicators(df):\n",
" \"\"\"\n",
" 计算四个指标当日涨跌幅、5日移动平均、RSI、MACD。\n",
" \"\"\"\n",
" df = df.sort_values('trade_date')\n",
" df['daily_return'] = (df['close'] - df['pre_close']) / df['pre_close'] * 100\n",
" # df['5_day_ma'] = df['close'].rolling(window=5).mean()\n",
" delta = df['close'].diff()\n",
" gain = delta.where(delta > 0, 0)\n",
" loss = -delta.where(delta < 0, 0)\n",
" avg_gain = gain.rolling(window=14).mean()\n",
" avg_loss = loss.rolling(window=14).mean()\n",
" rs = avg_gain / avg_loss\n",
" df['RSI'] = 100 - (100 / (1 + rs))\n",
"\n",
" # 计算MACD\n",
" ema12 = df['close'].ewm(span=12, adjust=False).mean()\n",
" ema26 = df['close'].ewm(span=26, adjust=False).mean()\n",
" df['MACD'] = ema12 - ema26\n",
" df['Signal_line'] = df['MACD'].ewm(span=9, adjust=False).mean()\n",
" df['MACD_hist'] = df['MACD'] - df['Signal_line']\n",
"\n",
" # 4. 情绪因子1市场上涨比例Up Ratio\n",
" df['up_ratio'] = df['daily_return'].apply(lambda x: 1 if x > 0 else 0)\n",
" df['up_ratio_20d'] = df['up_ratio'].rolling(window=20).mean() # 过去20天上涨比例\n",
"\n",
" # 5. 情绪因子2成交量变化率Volume Change Rate\n",
" df['volume_mean'] = df['vol'].rolling(window=20).mean() # 过去20天的平均成交量\n",
" df['volume_change_rate'] = (df['vol'] - df['volume_mean']) / df['volume_mean'] * 100 # 成交量变化率\n",
"\n",
" # 6. 情绪因子3波动率Volatility\n",
" df['volatility'] = df['daily_return'].rolling(window=20).std() # 过去20天的日收益率标准差\n",
"\n",
" # 7. 情绪因子4成交额变化率Amount Change Rate\n",
" df['amount_mean'] = df['amount'].rolling(window=20).mean() # 过去20天的平均成交额\n",
" df['amount_change_rate'] = (df['amount'] - df['amount_mean']) / df['amount_mean'] * 100 # 成交额变化率\n",
"\n",
" return df\n",
"\n",
"\n",
"def generate_index_indicators(h5_filename):\n",
" df = pd.read_hdf(h5_filename, key='index_data')\n",
" df['trade_date'] = pd.to_datetime(df['trade_date'], format='%Y%m%d')\n",
" df = df.sort_values('trade_date')\n",
"\n",
" # 计算每个ts_code的相关指标\n",
" df_indicators = []\n",
" for ts_code in df['ts_code'].unique():\n",
" df_index = df[df['ts_code'] == ts_code].copy()\n",
" df_index = calculate_indicators(df_index)\n",
" df_indicators.append(df_index)\n",
"\n",
" # 合并所有指数的结果\n",
" df_all_indicators = pd.concat(df_indicators, ignore_index=True)\n",
"\n",
" # 保留trade_date列并将同一天的数据按ts_code合并成一行\n",
" df_final = df_all_indicators.pivot_table(\n",
" index='trade_date',\n",
" columns='ts_code',\n",
" values=['daily_return', 'RSI', 'MACD', 'Signal_line',\n",
" 'MACD_hist', 'up_ratio_20d', 'volume_change_rate', 'volatility',\n",
" 'amount_change_rate', 'amount_mean'],\n",
" aggfunc='last'\n",
" )\n",
"\n",
" df_final.columns = [f\"{col[1]}_{col[0]}\" for col in df_final.columns]\n",
" df_final = df_final.reset_index()\n",
"\n",
" return df_final\n",
"\n",
"\n",
"# 使用函数\n",
"h5_filename = '../../data/index_data.h5'\n",
"index_data = generate_index_indicators(h5_filename)\n",
"index_data = index_data.dropna()\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a735bc02ceb4d872",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:10.821169Z",
"start_time": "2025-04-03T12:47:10.751831Z"
}
},
"outputs": [],
"source": [
"import talib\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "53f86ddc0677a6d7",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:15.944254Z",
"start_time": "2025-04-03T12:47:10.826179Z"
},
"jupyter": {
"source_hidden": true
},
"scrolled": true
},
"outputs": [],
"source": [
"from main.utils.factor import get_act_factor\n",
"\n",
"\n",
"def read_industry_data(h5_filename):\n",
" # 读取 H5 文件中所有的行业数据\n",
" industry_data = pd.read_hdf(h5_filename, key='sw_daily', columns=[\n",
" 'ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'pe', 'pb', 'vol'\n",
" ]) # 假设 H5 文件的键是 'industry_data'\n",
" industry_data = industry_data.sort_values(by=['ts_code', 'trade_date'])\n",
" industry_data = industry_data.reindex()\n",
" industry_data['trade_date'] = pd.to_datetime(industry_data['trade_date'], format='%Y%m%d')\n",
"\n",
" grouped = industry_data.groupby('ts_code', group_keys=False)\n",
" industry_data['obv'] = grouped.apply(\n",
" lambda x: pd.Series(talib.OBV(x['close'].values, x['vol'].values), index=x.index)\n",
" )\n",
" industry_data['return_5'] = grouped['close'].apply(lambda x: x / x.shift(5) - 1)\n",
" industry_data['return_20'] = grouped['close'].apply(lambda x: x / x.shift(20) - 1)\n",
"\n",
" industry_data = get_act_factor(industry_data, cat=False)\n",
" industry_data = industry_data.sort_values(by=['trade_date', 'ts_code'])\n",
"\n",
" # # 计算每天每个 ts_code 的因子和当天所有 ts_code 的中位数的偏差\n",
" # factor_columns = ['obv', 'return_5', 'return_20', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4'] # 因子列\n",
" # \n",
" # for factor in factor_columns:\n",
" # if factor in industry_data.columns:\n",
" # # 计算每天每个 ts_code 的因子值与当天所有 ts_code 的中位数的偏差\n",
" # industry_data[f'{factor}_deviation'] = industry_data.groupby('trade_date')[factor].transform(\n",
" # lambda x: x - x.mean())\n",
"\n",
" industry_data['return_5_percentile'] = industry_data.groupby('trade_date')['return_5'].transform(\n",
" lambda x: x.rank(pct=True))\n",
" industry_data['return_20_percentile'] = industry_data.groupby('trade_date')['return_20'].transform(\n",
" lambda x: x.rank(pct=True))\n",
" industry_data = industry_data.drop(columns=['open', 'close', 'high', 'low', 'pe', 'pb', 'vol'])\n",
"\n",
" industry_data = industry_data.rename(\n",
" columns={col: f'industry_{col}' for col in industry_data.columns if col not in ['ts_code', 'trade_date']})\n",
"\n",
" industry_data = industry_data.rename(columns={'ts_code': 'cat_l2_code'})\n",
" return industry_data\n",
"\n",
"\n",
"industry_df = read_industry_data('../../data/sw_daily.h5')\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "dbe2fd8021b9417f",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:15.969344Z",
"start_time": "2025-04-03T12:47:15.963327Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['ts_code', 'open', 'close', 'high', 'low', 'circ_mv', 'total_mv', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg', 'in_date']\n"
]
}
],
"source": [
"origin_columns = df.columns.tolist()\n",
"origin_columns = [col for col in origin_columns if\n",
" col not in ['turnover_rate', 'pe_ttm', 'volume_ratio', 'vol', 'pct_chg', 'l2_code', 'winner_rate']]\n",
"origin_columns = [col for col in origin_columns if col not in index_data.columns]\n",
"origin_columns = [col for col in origin_columns if 'cyq' not in col]\n",
"print(origin_columns)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "85c3e3d0235ffffa",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T12:47:16.089879Z",
"start_time": "2025-04-03T12:47:15.990101Z"
}
},
"outputs": [],
"source": [
"fina_indicator_df = read_and_merge_h5_data('../../data/fina_indicator.h5', key='fina_indicator',\n",
" columns=['ts_code', 'ann_date', 'undist_profit_ps', 'ocfps', 'bps'],\n",
" df=None)\n",
"cashflow_df = read_and_merge_h5_data('../../data/cashflow.h5', key='cashflow',\n",
" columns=['ts_code', 'ann_date', 'n_cashflow_act'],\n",
" df=None)\n",
"balancesheet_df = read_and_merge_h5_data('../../data/balancesheet.h5', key='balancesheet',\n",
" columns=['ts_code', 'ann_date', 'money_cap', 'total_liab'],\n",
" df=None)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "92d84ce15a562ec6",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T13:08:01.612695Z",
"start_time": "2025-04-03T12:47:16.121802Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"使用 'ann_date' 作为财务数据生效日期。\n",
"警告: 从 financial_data_subset 中移除了 366 行,因为其 'ts_code' 或 'ann_date' 列存在空值。\n",
"使用 'ann_date' 作为财务数据生效日期。\n",
"警告: 从 financial_data_subset 中移除了 366 行,因为其 'ts_code' 或 'ann_date' 列存在空值。\n",
"开始计算因子: AR, BR (原地修改)...\n",
"因子 AR, BR 计算成功。\n",
"因子 AR, BR 计算流程结束。\n",
"使用 'ann_date' 作为财务数据生效日期。\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"使用 'ann_date' 作为财务数据生效日期。\n",
"使用 'ann_date' 作为财务数据生效日期。\n",
"使用 'ann_date' 作为财务数据生效日期。\n",
"警告: 从 financial_data_subset 中移除了 366 行,因为其 'ts_code' 或 'ann_date' 列存在空值。\n",
"计算 BBI...\n",
"--- 计算日级别偏离度 (使用 pct_chg) ---\n",
"--- 计算日级别动量基准 (使用 pct_chg) ---\n",
"日级别动量基准计算完成 (使用 pct_chg)。\n",
"日级别偏离度计算完成 (使用 pct_chg)。\n",
"--- 计算日级别行业偏离度 (使用 pct_chg 和行业基准) ---\n",
"--- 计算日级别行业动量基准 (使用 pct_chg 和 cat_l2_code) ---\n",
"错误: 计算日级别行业动量基准需要以下列: ['pct_chg', 'cat_l2_code', 'trade_date', 'ts_code']。\n",
"错误: 计算日级别行业偏离度需要以下列: ['pct_chg', 'daily_industry_positive_benchmark', 'daily_industry_negative_benchmark']。请先运行 daily_industry_momentum_benchmark(df)。\n",
"Index(['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol',\n",
" 'pct_chg', 'turnover_rate', 'pe_ttm', 'circ_mv', 'total_mv',\n",
" 'volume_ratio', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol',\n",
" 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol',\n",
" 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct',\n",
" 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg',\n",
" 'winner_rate', 'l2_code', 'undist_profit_ps', 'ocfps', 'AR', 'BR',\n",
" 'AR_BR', 'log_circ_mv', 'cashflow_to_ev_factor', 'book_to_price_ratio',\n",
" 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor',\n",
" 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity',\n",
" 'sm_net_buy_vol', 'flow_divergence_diff', 'flow_divergence_ratio',\n",
" 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change',\n",
" 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel',\n",
" 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy',\n",
" 'cost_support_15pct_change', 'cat_winner_price_zone',\n",
" 'flow_chip_consistency', 'profit_taking_vs_absorb', '_is_positive',\n",
" '_is_negative', 'cat_is_positive', '_pos_returns', '_neg_returns',\n",
" '_pos_returns_sq', '_neg_returns_sq', 'upside_vol', 'downside_vol',\n",
" 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate',\n",
" 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike',\n",
" 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike',\n",
" 'vol_std_5', 'atr_14', 'atr_6', 'obv'],\n",
" dtype='object')\n",
"Calculating lg_flow_mom_corr_20_60...\n",
"Finished lg_flow_mom_corr_20_60.\n",
"Calculating lg_flow_accel...\n",
"Finished lg_flow_accel.\n",
"Calculating profit_pressure...\n",
"Finished profit_pressure.\n",
"Calculating underwater_resistance...\n",
"Finished underwater_resistance.\n",
"Calculating cost_conc_std_20...\n",
"Finished cost_conc_std_20.\n",
"Calculating profit_decay_20...\n",
"Finished profit_decay_20.\n",
"Calculating vol_amp_loss_20...\n",
"Finished vol_amp_loss_20.\n",
"Calculating vol_drop_profit_cnt_5...\n",
"Finished vol_drop_profit_cnt_5.\n",
"Calculating lg_flow_vol_interact_20...\n",
"Finished lg_flow_vol_interact_20.\n",
"Calculating cost_break_confirm_cnt_5...\n",
"Finished cost_break_confirm_cnt_5.\n",
"Calculating atr_norm_channel_pos_14...\n",
"Finished atr_norm_channel_pos_14.\n",
"Calculating turnover_diff_skew_20...\n",
"Finished turnover_diff_skew_20.\n",
"Calculating lg_sm_flow_diverge_20...\n",
"Finished lg_sm_flow_diverge_20.\n",
"Calculating pullback_strong_20_20...\n",
"Finished pullback_strong_20_20.\n",
"Calculating vol_wgt_hist_pos_20...\n",
"Finished vol_wgt_hist_pos_20.\n",
"Calculating vol_adj_roc_20...\n",
"Finished vol_adj_roc_20.\n",
"Calculating cs_rank_net_lg_flow_val...\n",
"Finished cs_rank_net_lg_flow_val.\n",
"Calculating cs_rank_flow_divergence...\n",
"Finished cs_rank_flow_divergence.\n",
"Calculating cs_rank_ind_adj_lg_flow...\n",
"Error calculating cs_rank_ind_adj_lg_flow: Missing 'cat_l2_code' column. Assigning NaN.\n",
"Calculating cs_rank_elg_buy_ratio...\n",
"Finished cs_rank_elg_buy_ratio.\n",
"Calculating cs_rank_rel_profit_margin...\n",
"Finished cs_rank_rel_profit_margin.\n",
"Calculating cs_rank_cost_breadth...\n",
"Finished cs_rank_cost_breadth.\n",
"Calculating cs_rank_dist_to_upper_cost...\n",
"Finished cs_rank_dist_to_upper_cost.\n",
"Calculating cs_rank_winner_rate...\n",
"Finished cs_rank_winner_rate.\n",
"Calculating cs_rank_intraday_range...\n",
"Finished cs_rank_intraday_range.\n",
"Calculating cs_rank_close_pos_in_range...\n",
"Finished cs_rank_close_pos_in_range.\n",
"Calculating cs_rank_opening_gap...\n",
"Error calculating cs_rank_opening_gap: Missing 'pre_close' column. Assigning NaN.\n",
"Calculating cs_rank_pos_in_hist_range...\n",
"Finished cs_rank_pos_in_hist_range.\n",
"Calculating cs_rank_vol_x_profit_margin...\n",
"Finished cs_rank_vol_x_profit_margin.\n",
"Calculating cs_rank_lg_flow_price_concordance...\n",
"Finished cs_rank_lg_flow_price_concordance.\n",
"Calculating cs_rank_turnover_per_winner...\n",
"Finished cs_rank_turnover_per_winner.\n",
"Calculating cs_rank_ind_cap_neutral_pe (Placeholder - requires statsmodels)...\n",
"Finished cs_rank_ind_cap_neutral_pe (Placeholder).\n",
"Calculating cs_rank_volume_ratio...\n",
"Finished cs_rank_volume_ratio.\n",
"Calculating cs_rank_elg_buy_sell_sm_ratio...\n",
"Finished cs_rank_elg_buy_sell_sm_ratio.\n",
"Calculating cs_rank_cost_dist_vol_ratio...\n",
"Finished cs_rank_cost_dist_vol_ratio.\n",
"Calculating cs_rank_size...\n",
"Finished cs_rank_size.\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 4506576 entries, 0 to 4506575\n",
"Columns: 178 entries, ts_code to cs_rank_size\n",
"dtypes: bool(10), datetime64[ns](1), float64(162), int32(3), object(2)\n",
"memory usage: 5.6+ GB\n",
"None\n",
"['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol', 'pct_chg', 'turnover_rate', 'pe_ttm', 'circ_mv', 'total_mv', 'volume_ratio', 'is_st', 'up_limit', 'down_limit', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol', 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol', 'his_low', 'his_high', 'cost_5pct', 'cost_15pct', 'cost_50pct', 'cost_85pct', 'cost_95pct', 'weight_avg', 'winner_rate', 'cat_l2_code', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'log_circ_mv', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'flow_divergence_diff', 'flow_divergence_ratio', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'price_cost_divergence', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_flow_divergence', 'cs_rank_ind_adj_lg_flow', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_opening_gap', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_ind_cap_neutral_pe', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size']\n"
]
}
],
"source": [
"\n",
"import numpy as np\n",
"from main.factor.factor import *\n",
"\n",
"def filter_data(df):\n",
" # df = df.groupby('trade_date').apply(lambda x: x.nlargest(1000, 'act_factor1'))\n",
" df = df[~df['is_st']]\n",
" df = df[~df['ts_code'].str.endswith('BJ')]\n",
" df = df[~df['ts_code'].str.startswith('30')]\n",
" df = df[~df['ts_code'].str.startswith('68')]\n",
" df = df[~df['ts_code'].str.startswith('8')]\n",
" df = df[df['trade_date'] >= '2019-01-01']\n",
" if 'in_date' in df.columns:\n",
" df = df.drop(columns=['in_date'])\n",
" df = df.reset_index(drop=True)\n",
" return df\n",
"\n",
"gc.collect()\n",
"\n",
"df = filter_data(df)\n",
"df = df.sort_values(by=['ts_code', 'trade_date'])\n",
"df = add_financial_factor(df, fina_indicator_df, factor_value_col='undist_profit_ps')\n",
"df = add_financial_factor(df, fina_indicator_df, factor_value_col='ocfps')\n",
"calculate_arbr(df, N=26)\n",
"df['log_circ_mv'] = np.log(df['circ_mv'])\n",
"df = calculate_cashflow_to_ev_factor(df, cashflow_df, balancesheet_df)\n",
"df = caculate_book_to_price_ratio(df, fina_indicator_df)\n",
"df = turnover_rate_n(df, n=5)\n",
"df = variance_n(df, n=20)\n",
"df = bbi_ratio_factor(df)\n",
"df = daily_deviation(df)\n",
"df = daily_industry_deviation(df)\n",
"df, _ = get_rolling_factor(df)\n",
"df, _ = get_simple_factor(df)\n",
"\n",
"lg_flow_mom_corr(df, N=20, M=60)\n",
"lg_flow_accel(df)\n",
"profit_pressure(df)\n",
"underwater_resistance(df)\n",
"cost_conc_std(df, N=20)\n",
"profit_decay(df, N=20)\n",
"vol_amp_loss(df, N=20)\n",
"vol_drop_profit_cnt(df, N=20, M=5)\n",
"lg_flow_vol_interact(df, N=20)\n",
"cost_break_confirm_cnt(df, M=5)\n",
"atr_norm_channel_pos(df, N=14)\n",
"turnover_diff_skew(df, N=20)\n",
"lg_sm_flow_diverge(df, N=20)\n",
"pullback_strong(df, N=20, M=20)\n",
"vol_wgt_hist_pos(df, N=20)\n",
"vol_adj_roc(df, N=20)\n",
"\n",
"cs_rank_net_lg_flow_val(df)\n",
"cs_rank_flow_divergence(df)\n",
"cs_rank_industry_adj_lg_flow(df) # Needs cat_l2_code\n",
"cs_rank_elg_buy_ratio(df)\n",
"cs_rank_rel_profit_margin(df)\n",
"cs_rank_cost_breadth(df)\n",
"cs_rank_dist_to_upper_cost(df)\n",
"cs_rank_winner_rate(df)\n",
"cs_rank_intraday_range(df)\n",
"cs_rank_close_pos_in_range(df)\n",
"cs_rank_opening_gap(df) # Needs pre_close\n",
"cs_rank_pos_in_hist_range(df) # Needs his_low, his_high\n",
"cs_rank_vol_x_profit_margin(df)\n",
"cs_rank_lg_flow_price_concordance(df)\n",
"cs_rank_turnover_per_winner(df)\n",
"cs_rank_ind_cap_neutral_pe(df) # Placeholder - needs external libraries\n",
"cs_rank_volume_ratio(df) # Needs volume_ratio\n",
"cs_rank_elg_buy_sell_sm_ratio(df)\n",
"cs_rank_cost_dist_vol_ratio(df) # Needs volume_ratio\n",
"cs_rank_size(df) # Needs circ_mv\n",
"\n",
"df = df.rename(columns={'l1_code': 'cat_l1_code'})\n",
"df = df.rename(columns={'l2_code': 'cat_l2_code'})\n",
"\n",
"# df = df.merge(index_data, on='trade_date', how='left')\n",
"\n",
"print(df.info())\n",
"print(df.columns.tolist())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "b87b938028afa206",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T13:08:03.658725Z",
"start_time": "2025-04-03T13:08:02.469611Z"
}
},
"outputs": [],
"source": [
"from scipy.stats import ks_2samp, wasserstein_distance\n",
"\n",
"\n",
"def remove_shifted_features(train_data, test_data, feature_columns, ks_threshold=0.05, wasserstein_threshold=0.1,\n",
" importance_threshold=0.05):\n",
" dropped_features = []\n",
"\n",
" # **统计数据漂移**\n",
" numeric_columns = train_data.select_dtypes(include=['float64', 'int64']).columns\n",
" numeric_columns = [col for col in numeric_columns if col in feature_columns]\n",
" for feature in numeric_columns:\n",
" ks_stat, p_value = ks_2samp(train_data[feature], test_data[feature])\n",
" wasserstein_dist = wasserstein_distance(train_data[feature], test_data[feature])\n",
"\n",
" if p_value < ks_threshold or wasserstein_dist > wasserstein_threshold:\n",
" dropped_features.append(feature)\n",
"\n",
" print(f\"检测到 {len(dropped_features)} 个可能漂移的特征: {dropped_features}\")\n",
"\n",
" # **应用阈值进行最终筛选**\n",
" filtered_features = [f for f in feature_columns if f not in dropped_features]\n",
"\n",
" return filtered_features, dropped_features\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f4f16d63ad18d1bc",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T13:08:03.670700Z",
"start_time": "2025-04-03T13:08:03.665739Z"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import statsmodels.api as sm # 用于中性化回归\n",
"from tqdm import tqdm # 可选,用于显示进度条\n",
"\n",
"# --- 常量 ---\n",
"epsilon = 1e-10 # 防止除零\n",
"\n",
"# --- 1. 中位数去极值 (MAD) ---\n",
"\n",
"def cs_mad_filter(df: pd.DataFrame,\n",
" features: list,\n",
" k: float = 3.0,\n",
" scale_factor: float = 1.4826):\n",
" \"\"\"\n",
" 对指定特征列进行截面 MAD 去极值处理 (原地修改)。\n",
"\n",
" 方法: 对每日截面数据,计算 median 和 MAD\n",
" 将超出 [median - k * scale * MAD, median + k * scale * MAD] 范围的值\n",
" 替换为边界值 (Winsorization)。\n",
" scale_factor=1.4826 使得 MAD 约等于正态分布的标准差。\n",
"\n",
" Args:\n",
" df (pd.DataFrame): 输入 DataFrame需包含 'trade_date' 和 features 列。\n",
" features (list): 需要处理的特征列名列表。\n",
" k (float): MAD 的倍数,用于确定边界。默认为 3.0。\n",
" scale_factor (float): MAD 的缩放因子。默认为 1.4826。\n",
"\n",
" WARNING: 此函数会原地修改输入的 DataFrame 'df'。\n",
" \"\"\"\n",
" print(f\"开始截面 MAD 去极值处理 (k={k})...\")\n",
" if not all(col in df.columns for col in features):\n",
" missing = [col for col in features if col not in df.columns]\n",
" print(f\"错误: DataFrame 中缺少以下特征列: {missing}。跳过去极值处理。\")\n",
" return\n",
"\n",
" grouped = df.groupby('trade_date')\n",
"\n",
" for col in tqdm(features, desc=\"MAD Filtering\"):\n",
" try:\n",
" # 计算截面中位数\n",
" median = grouped[col].transform('median')\n",
" # 计算截面 MAD (Median Absolute Deviation from Median)\n",
" mad = (df[col] - median).abs().groupby(df['trade_date']).transform('median')\n",
"\n",
" # 计算上下边界\n",
" lower_bound = median - k * scale_factor * mad\n",
" upper_bound = median + k * scale_factor * mad\n",
"\n",
" # 原地应用 clip\n",
" df[col] = np.clip(df[col], lower_bound, upper_bound)\n",
"\n",
" except KeyError:\n",
" print(f\"警告: 列 '{col}' 可能不存在或在分组中出错,跳过此列的 MAD 处理。\")\n",
" except Exception as e:\n",
" print(f\"警告: 处理列 '{col}' 时发生错误: {e},跳过此列的 MAD 处理。\")\n",
"\n",
" print(\"截面 MAD 去极值处理完成。\")\n",
"\n",
"\n",
"# --- 2. 行业市值中性化 ---\n",
"\n",
"def cs_neutralize_industry_cap(df: pd.DataFrame,\n",
" features: list,\n",
" industry_col: str = 'cat_l2_code',\n",
" market_cap_col: str = 'circ_mv'):\n",
" \"\"\"\n",
" 对指定特征列进行截面行业和对数市值中性化 (原地修改)。\n",
" 使用 OLS 回归: feature ~ 1 + log(market_cap) + C(industry)\n",
" 将回归残差写回原特征列。\n",
"\n",
" Args:\n",
" df (pd.DataFrame): 输入 DataFrame需包含 'trade_date', features 列,\n",
" industry_col, market_cap_col。\n",
" features (list): 需要处理的特征列名列表。\n",
" industry_col (str): 行业分类列名。\n",
" market_cap_col (str): 流通市值列名。\n",
"\n",
" WARNING: 此函数会原地修改输入的 DataFrame 'df' 的 features 列。\n",
" 计算量较大,可能耗时较长。\n",
" 需要安装 statsmodels 库 (pip install statsmodels)。\n",
" \"\"\"\n",
" print(\"开始截面行业市值中性化...\")\n",
" required_cols = features + ['trade_date', industry_col, market_cap_col]\n",
" if not all(col in df.columns for col in required_cols):\n",
" missing = [col for col in required_cols if col not in df.columns]\n",
" print(f\"错误: DataFrame 中缺少必需列: {missing}。无法进行中性化。\")\n",
" return\n",
"\n",
" # 预处理:计算 log 市值,处理 industry code 可能的 NaN\n",
" log_cap_col = '_log_market_cap'\n",
" df[log_cap_col] = np.log1p(df[market_cap_col]) # log1p 处理 0 值\n",
" # df[industry_col] = df[industry_col].cat.add_categories('UnknownIndustry')\n",
" # df[industry_col] = df[industry_col].fillna('UnknownIndustry') # 填充行业 NaN\n",
" # df[industry_col] = df[industry_col].astype('category') # 转为类别ols 会自动处理\n",
"\n",
" dates = df['trade_date'].unique()\n",
" all_residuals = [] # 用于收集所有日期的残差\n",
"\n",
" for date in tqdm(dates, desc=\"Neutralizing\"):\n",
" daily_data = df.loc[df['trade_date'] == date, features + [log_cap_col, industry_col]].copy() # 使用 .loc 获取副本\n",
"\n",
" # 准备自变量 X (常数项 + log市值 + 行业哑变量)\n",
" X = daily_data[[log_cap_col]]\n",
" X = sm.add_constant(X, prepend=True) # 添加常数项\n",
" # 创建行业哑变量 (drop_first=True 避免共线性)\n",
" industry_dummies = pd.get_dummies(daily_data[industry_col], prefix=industry_col, drop_first=True)\n",
" industry_dummies = industry_dummies.astype(int)\n",
" X = pd.concat([X, industry_dummies], axis=1)\n",
"\n",
" daily_residuals = daily_data[[col for col in features]].copy() # 创建用于存储残差的df\n",
"\n",
" for col in features:\n",
" Y = daily_data[col]\n",
"\n",
" # 处理 NaN 值,确保 X 和 Y 在相同位置有有效值\n",
" valid_mask = Y.notna() & X.notna().all(axis=1)\n",
" if valid_mask.sum() < (X.shape[1] + 1): # 数据点不足以估计模型\n",
" print(f\"警告: 日期 {date}, 特征 {col} 有效数据不足 ({valid_mask.sum()}个),无法中性化,填充 NaN。\")\n",
" daily_residuals[col] = np.nan\n",
" continue\n",
"\n",
" Y_valid = Y[valid_mask]\n",
" X_valid = X[valid_mask]\n",
"\n",
" # 执行 OLS 回归\n",
" try:\n",
" model = sm.OLS(Y_valid.to_numpy(), X_valid.to_numpy())\n",
" results = model.fit()\n",
" # 将残差填回对应位置\n",
" daily_residuals.loc[valid_mask, col] = results.resid\n",
" daily_residuals.loc[~valid_mask, col] = np.nan # 原本无效的位置填充 NaN\n",
" except Exception as e:\n",
" print(f\"警告: 日期 {date}, 特征 {col} 回归失败: {e},填充 NaN。\")\n",
" daily_residuals[col] = np.nan\n",
" break\n",
"\n",
" all_residuals.append(daily_residuals)\n",
"\n",
" # 合并所有日期的残差结果\n",
" if all_residuals:\n",
" residuals_df = pd.concat(all_residuals)\n",
" # 将残差结果更新回原始 df (原地修改)\n",
" # 使用 update 比 merge 更适合基于索引的原地更新\n",
" # 确保 residuals_df 的索引与 df 中对应部分一致\n",
" df.update(residuals_df)\n",
" else:\n",
" print(\"没有有效的残差结果可以合并。\")\n",
"\n",
"\n",
" # 清理临时列\n",
" df.drop(columns=[log_cap_col], inplace=True)\n",
" print(\"截面行业市值中性化完成。\")\n",
"\n",
"\n",
"# --- 3. Z-Score 标准化 ---\n",
"\n",
"def cs_zscore_standardize(df: pd.DataFrame, features: list, epsilon: float = 1e-10):\n",
" \"\"\"\n",
" 对指定特征列进行截面 Z-Score 标准化 (原地修改)。\n",
" 方法: Z = (value - cross_sectional_mean) / (cross_sectional_std + epsilon)\n",
"\n",
" Args:\n",
" df (pd.DataFrame): 输入 DataFrame需包含 'trade_date' 和 features 列。\n",
" features (list): 需要处理的特征列名列表。\n",
" epsilon (float): 防止除以零的小常数。\n",
"\n",
" WARNING: 此函数会原地修改输入的 DataFrame 'df'。\n",
" \"\"\"\n",
" print(\"开始截面 Z-Score 标准化...\")\n",
" if not all(col in df.columns for col in features):\n",
" missing = [col for col in features if col not in df.columns]\n",
" print(f\"错误: DataFrame 中缺少以下特征列: {missing}。跳过标准化处理。\")\n",
" return\n",
"\n",
" grouped = df.groupby('trade_date')\n",
"\n",
" for col in tqdm(features, desc=\"Standardizing\"):\n",
" try:\n",
" # 使用 transform 计算截面均值和标准差\n",
" mean = grouped[col].transform('mean')\n",
" std = grouped[col].transform('std')\n",
"\n",
" # 计算 Z-Score 并原地赋值\n",
" df[col] = (df[col] - mean) / (std + epsilon)\n",
"\n",
" except KeyError:\n",
" print(f\"警告: 列 '{col}' 可能不存在或在分组中出错,跳过此列的标准化处理。\")\n",
" except Exception as e:\n",
" print(f\"警告: 处理列 '{col}' 时发生错误: {e},跳过此列的标准化处理。\")\n",
"\n",
" print(\"截面 Z-Score 标准化完成。\")\n",
"\n",
"def fill_nan_with_daily_median(df: pd.DataFrame, feature_columns: list[str]) -> pd.DataFrame:\n",
" \"\"\"\n",
" 对指定特征列进行每日截面中位数填充缺失值 (NaN)。\n",
"\n",
" 参数:\n",
" df (pd.DataFrame): 包含多日数据的DataFrame需要包含 'trade_date' 和 feature_columns 中的列。\n",
" feature_columns (list[str]): 需要进行缺失值填充的特征列名称列表。\n",
"\n",
" 返回:\n",
" pd.DataFrame: 包含缺失值填充后特征列的DataFrame。在输入DataFrame的副本上操作。\n",
" \"\"\"\n",
" processed_df = df.copy() # 在副本上操作,保留原始数据\n",
"\n",
" # 确保 trade_date 是 datetime 类型以便正确分组\n",
" processed_df['trade_date'] = pd.to_datetime(processed_df['trade_date'])\n",
"\n",
" def _fill_daily_nan(group):\n",
" # group 是某一个交易日的 DataFrame\n",
"\n",
" # 遍历指定的特征列\n",
" for feature_col in feature_columns:\n",
" # 检查列是否存在于当前分组中\n",
" if feature_col in group.columns:\n",
" # 计算当日该特征的中位数\n",
" median_val = group[feature_col].median()\n",
"\n",
" # 使用当日中位数填充该特征列的 NaN 值\n",
" # inplace=True 会直接修改 group DataFrame\n",
" group[feature_col].fillna(median_val, inplace=True)\n",
" # else:\n",
" # print(f\"Warning: Feature column '{feature_col}' not found in daily group for {group['trade_date'].iloc[0]}. Skipping.\")\n",
"\n",
" return group\n",
"\n",
" # 按交易日期分组,并应用每日填充函数\n",
" # group_keys=False 避免将分组键添加到结果索引中\n",
" filled_df = processed_df.groupby('trade_date', group_keys=False).apply(_fill_daily_nan)\n",
"\n",
" return filled_df"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "40e6b68a91b30c79",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T13:08:04.694262Z",
"start_time": "2025-04-03T13:08:03.694904Z"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"\n",
"def remove_outliers_label_percentile(label: pd.Series, lower_percentile: float = 0.01, upper_percentile: float = 0.99,\n",
" log=True):\n",
" if not (0 <= lower_percentile < upper_percentile <= 1):\n",
" raise ValueError(\"Percentile values must satisfy 0 <= lower_percentile < upper_percentile <= 1.\")\n",
"\n",
" # Calculate lower and upper bounds based on percentiles\n",
" lower_bound = label.quantile(lower_percentile)\n",
" upper_bound = label.quantile(upper_percentile)\n",
"\n",
" # Filter out values outside the bounds\n",
" filtered_label = label[(label >= lower_bound) & (label <= upper_bound)]\n",
"\n",
" # Print the number of removed outliers\n",
" if log:\n",
" print(f\"Removed {len(label) - len(filtered_label)} outliers.\")\n",
" return filtered_label\n",
"\n",
"\n",
"def calculate_risk_adjusted_target(df, days=5):\n",
" df = df.sort_values(by=['ts_code', 'trade_date'])\n",
"\n",
" df['future_close'] = df.groupby('ts_code')['close'].shift(-days)\n",
" df['future_open'] = df.groupby('ts_code')['open'].shift(-1)\n",
" df['future_return'] = (df['future_close'] - df['future_open']) / df['future_open']\n",
"\n",
" df['future_volatility'] = df.groupby('ts_code')['future_return'].rolling(days, min_periods=1).std().reset_index(\n",
" level=0, drop=True)\n",
" sharpe_ratio = df['future_return'] * df['future_volatility']\n",
" sharpe_ratio.replace([np.inf, -np.inf], np.nan, inplace=True)\n",
"\n",
" return sharpe_ratio\n",
"\n",
"\n",
"def calculate_score(df, days=5, lambda_param=1.0):\n",
" def calculate_max_drawdown(prices):\n",
" peak = prices.iloc[0] # 初始化峰值\n",
" max_drawdown = 0 # 初始化最大回撤\n",
"\n",
" for price in prices:\n",
" if price > peak:\n",
" peak = price # 更新峰值\n",
" else:\n",
" drawdown = (peak - price) / peak # 计算当前回撤\n",
" max_drawdown = max(max_drawdown, drawdown) # 更新最大回撤\n",
"\n",
" return max_drawdown\n",
"\n",
" def compute_stock_score(stock_df):\n",
" stock_df = stock_df.sort_values(by=['trade_date'])\n",
" future_return = stock_df['future_return']\n",
" # 使用已有的 pct_chg 字段计算波动率\n",
" volatility = stock_df['pct_chg'].rolling(days).std().shift(-days)\n",
" max_drawdown = stock_df['close'].rolling(days).apply(calculate_max_drawdown, raw=False).shift(-days)\n",
" score = future_return - lambda_param * max_drawdown\n",
" return score\n",
"\n",
" # # 确保 DataFrame 按照股票代码和交易日期排序\n",
" # df = df.sort_values(by=['ts_code', 'trade_date'])\n",
"\n",
" # 对每个股票分别计算 score\n",
" df['score'] = df.groupby('ts_code').apply(compute_stock_score).reset_index(level=0, drop=True)\n",
"\n",
" return df['score']\n",
"\n",
"\n",
"def remove_highly_correlated_features(df, feature_columns, threshold=0.9):\n",
" numeric_features = df[feature_columns].select_dtypes(include=[np.number]).columns.tolist()\n",
" if not numeric_features:\n",
" raise ValueError(\"No numeric features found in the provided data.\")\n",
"\n",
" corr_matrix = df[numeric_features].corr().abs()\n",
" upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool))\n",
" to_drop = [column for column in upper.columns if any(upper[column] > threshold)]\n",
" remaining_features = [col for col in feature_columns if col not in to_drop\n",
" or 'act' in col or 'af' in col]\n",
" return remaining_features\n",
"\n",
"\n",
"def cross_sectional_standardization(df, features):\n",
" df_sorted = df.sort_values(by='trade_date') # 按时间排序\n",
" df_standardized = df_sorted.copy()\n",
"\n",
" for date in df_sorted['trade_date'].unique():\n",
" # 获取当前时间点的数据\n",
" current_data = df_standardized[df_standardized['trade_date'] == date]\n",
"\n",
" # 只对指定特征进行标准化\n",
" scaler = StandardScaler()\n",
" standardized_values = scaler.fit_transform(current_data[features])\n",
"\n",
" # 将标准化结果重新赋值回去\n",
" df_standardized.loc[df_standardized['trade_date'] == date, features] = standardized_values\n",
"\n",
" return df_standardized\n",
"\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"\n",
"def neutralize_manual_revised(df: pd.DataFrame, features: list, industry_col: str, mkt_cap_col: str) -> pd.DataFrame:\n",
" \"\"\"\n",
" 手动实现简单回归以提升速度,通过构建 Series 确保索引对齐。\n",
" 对特征在行业内部进行市值中性化。\n",
"\n",
" Args:\n",
" df: 输入的 DataFrame包含特征、行业分类和市值列。\n",
" features: 需要进行中性化的特征列名列表。\n",
" industry_col: 行业分类列的列名。\n",
" mkt_cap_col: 市值列的列名。\n",
"\n",
" Returns:\n",
" 中性化后的 DataFrame。\n",
" \"\"\"\n",
"\n",
" df[mkt_cap_col] = pd.to_numeric(df[mkt_cap_col], errors='coerce')\n",
" df_cleaned = df.dropna(subset=[mkt_cap_col]).copy()\n",
" df_cleaned = df_cleaned[df_cleaned[mkt_cap_col] > 0].copy()\n",
"\n",
" if df_cleaned.empty:\n",
" print(\"警告: 清理市值异常值后 DataFrame 为空。\")\n",
" return df # 返回原始或空df取决于清理前的状态\n",
"\n",
" processed_df = df\n",
"\n",
" for col in features:\n",
" if col not in df_cleaned.columns:\n",
" print(f\"警告: 特征列 '{col}' 不存在于清理后的 DataFrame 中,已跳过。\")\n",
" # 对于原始 df 中该列不存在的,在结果 df 中也保持原样可能全是NaN\n",
" processed_df[col] = df[col] if col in df.columns else np.nan\n",
" continue\n",
"\n",
" # 跳过对控制变量本身进行中性化\n",
" if col == mkt_cap_col or col == industry_col:\n",
" print(f\"警告: 特征列 '{col}' 是控制变量或内部使用的列,跳过中性化。\")\n",
" # 在结果 df 中也保持原样\n",
" processed_df[col] = df[col] if col in df.columns else np.nan\n",
" continue\n",
"\n",
" residual_series = pd.Series(index=df_cleaned.index, dtype=float)\n",
"\n",
" # 在分组前处理特征列的 NaN只对有因子值的行进行回归计算\n",
" df_subset_factor = df_cleaned.dropna(subset=[col]).copy()\n",
"\n",
" if not df_subset_factor.empty:\n",
" for industry, group in df_subset_factor.groupby(industry_col):\n",
" x = group[mkt_cap_col] # 市值对数\n",
" y = group[col] # 因子值\n",
"\n",
" # 确保有足够的数据点 (>1) 且市值对数有方差 (>0) 进行回归计算\n",
" # 检查 np.var > 一个很小的正数,避免浮点数误差导致的零方差判断问题\n",
" if len(group) > 1 and np.var(x) > 1e-9:\n",
" try:\n",
" beta = np.cov(y, x)[0, 1] / np.var(x)\n",
" alpha = np.mean(y) - beta * np.mean(x)\n",
"\n",
" # 计算残差\n",
" resid = y - (alpha + beta * x)\n",
"\n",
" # 将计算出的残差存储到 residual_series 中,通过索引自动对齐\n",
" residual_series.loc[resid.index] = resid\n",
"\n",
" except Exception as e:\n",
" # 捕获可能的计算异常例如np.cov或np.var因为极端数据报错\n",
" print(f\"警告: 在行业 {industry} 计算回归时发生错误: {e}。该组残差将设为原始值或 NaN。\")\n",
" # 此时该组的残差会保持 residual_series 初始化时的 NaN 或后续处理\n",
" # 也可以选择保留原始值residual_series.loc[group.index] = group[col]\n",
"\n",
" else:\n",
" residual_series.loc[group.index] = group[col] # 保留原始因子值\n",
" processed_df.loc[residual_series.index, col] = residual_series\n",
"\n",
"\n",
" else:\n",
" processed_df[col] = np.nan # 或 df[col] if col in df.columns else np.nan\n",
"\n",
" return processed_df\n",
"\n",
"\n",
"import gc\n",
"\n",
"gc.collect()\n",
"\n",
"\n",
"def mad_filter(df, features, n=3):\n",
" for col in features:\n",
" median = df[col].median()\n",
" mad = np.median(np.abs(df[col] - median))\n",
" upper = median + n * mad\n",
" lower = median - n * mad\n",
" df[col] = np.clip(df[col], lower, upper) # 截断极值\n",
" return df\n",
"\n",
"\n",
"def percentile_filter(df, features, lower_percentile=0.01, upper_percentile=0.99):\n",
" for col in features:\n",
" # 按日期分组计算上下百分位数\n",
" lower_bound = df.groupby('trade_date')[col].transform(\n",
" lambda x: x.quantile(lower_percentile)\n",
" )\n",
" upper_bound = df.groupby('trade_date')[col].transform(\n",
" lambda x: x.quantile(upper_percentile)\n",
" )\n",
" # 截断超出范围的值\n",
" df[col] = np.clip(df[col], lower_bound, upper_bound)\n",
" return df\n",
"\n",
"\n",
"from scipy.stats import iqr\n",
"\n",
"\n",
"def iqr_filter(df, features):\n",
" for col in features:\n",
" df[col] = df.groupby('trade_date')[col].transform(\n",
" lambda x: (x - x.median()) / iqr(x) if iqr(x) != 0 else x\n",
" )\n",
" return df\n",
"\n",
"\n",
"def quantile_filter(df, features, lower_quantile=0.01, upper_quantile=0.99, window=60):\n",
" df = df.copy()\n",
" for col in features:\n",
" # 计算 rolling 统计量,需要按日期进行 groupby\n",
" rolling_lower = df.groupby('trade_date')[col].transform(lambda x: x.rolling(window=min(len(x), window)).quantile(lower_quantile))\n",
" rolling_upper = df.groupby('trade_date')[col].transform(lambda x: x.rolling(window=min(len(x), window)).quantile(upper_quantile))\n",
"\n",
" # 对数据进行裁剪\n",
" df[col] = np.clip(df[col], rolling_lower, rolling_upper)\n",
" \n",
" return df\n",
"\n",
"def select_top_features_by_rankic(df: pd.DataFrame, feature_columns: list, n: int, target_column: str = 'future_return') -> list:\n",
" \"\"\"\n",
" 计算给定特征与目标列的 RankIC并返回 RankIC 绝对值最高的 n 个特征。\n",
"\n",
" Args:\n",
" df: 包含特征列和目标列的 Pandas DataFrame。\n",
" feature_columns: 包含所有待评估特征列名的列表。\n",
" n: 希望选取的 RankIC 绝对值最高的特征数量。\n",
" target_column: 目标列的名称,用于计算 RankIC。默认为 'future_return'。\n",
"\n",
" Returns:\n",
" 包含 RankIC 绝对值最高的 n 个特征列名的列表。\n",
" \"\"\"\n",
" numeric_columns = df.select_dtypes(include=['float64', 'int64']).columns\n",
" numeric_columns = [col for col in numeric_columns if col in feature_columns]\n",
" if target_column not in df.columns:\n",
" raise ValueError(f\"目标列 '{target_column}' 不存在于 DataFrame 中。\")\n",
"\n",
" rankic_scores = {}\n",
" for feature in numeric_columns:\n",
" if feature not in df.columns:\n",
" print(f\"警告: 特征列 '{feature}' 不存在于 DataFrame 中,已跳过。\")\n",
" continue\n",
"\n",
" # 计算特征与目标列的 RankIC (斯皮尔曼相关系数)\n",
" # dropna() 是为了处理缺失值,确保相关性计算不失败\n",
" valid_data = df[[feature, target_column]].dropna()\n",
" if len(valid_data) > 1: # 确保有足够的数据点进行相关性计算\n",
" # 计算斯皮尔曼相关性\n",
" correlation = valid_data[feature].corr(valid_data[target_column], method='spearman')\n",
" rankic_scores[feature] = abs(correlation) # 使用绝对值来衡量相关性强度\n",
" else:\n",
" rankic_scores[feature] = 0 # 数据不足RankIC设为0或跳过\n",
"\n",
" # 将 RankIC 分数转换为 Series 便于排序\n",
" rankic_series = pd.Series(rankic_scores)\n",
"\n",
" # 按 RankIC 绝对值降序排序,选取前 n 个特征\n",
" # handle case where n might be larger than available features\n",
" n_actual = min(n, len(rankic_series))\n",
" top_features = rankic_series.sort_values(ascending=False).head(n_actual).index.tolist()\n",
" top_features = [col for col in feature_columns if col in top_features or col not in numeric_columns]\n",
" return top_features\n",
"\n",
"def create_deviation_within_dates(df, feature_columns):\n",
" groupby_col = 'cat_l2_code' # 使用 trade_date 进行分组\n",
" new_columns = {}\n",
" ret_feature_columns = feature_columns[:]\n",
"\n",
" # 自动选择所有数值型特征\n",
" num_features = [col for col in feature_columns if 'cat' not in col and 'index' not in col]\n",
"\n",
" # num_features = ['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'cat_vol_spike', 'obv', 'maobv_6', 'return_5', 'return_10', 'return_20', 'std_return_5', 'std_return_15', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'act_factor5', 'act_factor6', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'alpha_022', 'alpha_003', 'alpha_007', 'alpha_013']\n",
" num_features = [col for col in num_features if 'cat' not in col and 'industry' not in col]\n",
" num_features = [col for col in num_features if 'limit' not in col]\n",
" num_features = [col for col in num_features if 'cyq' not in col]\n",
"\n",
" # 遍历所有数值型特征\n",
" for feature in num_features:\n",
" if feature == 'trade_date': # 不需要对 'trade_date' 计算偏差\n",
" continue\n",
"\n",
" # grouped_mean = df.groupby(['trade_date'])[feature].transform('mean')\n",
" # deviation_col_name = f'deviation_mean_{feature}'\n",
" # new_columns[deviation_col_name] = df[feature] - grouped_mean\n",
" # ret_feature_columns.append(deviation_col_name)\n",
"\n",
" grouped_mean = df.groupby(['trade_date', groupby_col])[feature].transform('mean')\n",
" deviation_col_name = f'deviation_mean_{feature}'\n",
" new_columns[deviation_col_name] = df[feature] - grouped_mean\n",
" ret_feature_columns.append(deviation_col_name)\n",
"\n",
" # 将新计算的偏差特征与原始 DataFrame 合并\n",
" df = pd.concat([df, pd.DataFrame(new_columns)], axis=1)\n",
"\n",
" # for feature in ['obv', 'return_20', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4']:\n",
" # df[f'deviation_industry_{feature}'] = df[feature] - df[f'industry_{feature}']\n",
"\n",
" return df, ret_feature_columns\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "47c12bb34062ae7a",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T14:57:50.841165Z",
"start_time": "2025-04-03T14:49:25.889057Z"
}
},
"outputs": [],
"source": [
"days = 5\n",
"validation_days = 120\n",
"\n",
"import gc\n",
"\n",
"gc.collect()\n",
"\n",
"df = df.sort_values(by=['ts_code', 'trade_date'])\n",
"df['future_return'] = df.groupby('ts_code', group_keys=False)['close'].apply(lambda x: x.shift(-days) / x - 1)\n",
"# df['future_return'] = (df.groupby('ts_code')['close'].shift(-days) - df.groupby('ts_code')['open'].shift(-1)) / \\\n",
"# df.groupby('ts_code')['open'].shift(-1)\n",
"\n",
"df['cat_up_limit'] = df['pct_chg'] > 5\n",
"df['label'] = df.groupby('ts_code')['cat_up_limit'].rolling(window=5, min_periods=1).max().shift(-5).fillna(0).astype(int).reset_index(level=0, drop=True)\n",
"\n",
"filter_index = df['future_return'].between(df['future_return'].quantile(0.01), df['future_return'].quantile(0.99))\n",
"\n",
"# for col in [col for col in df.columns]:\n",
"# train_data[col] = train_data[col].astype('str')\n",
"# test_data[col] = test_data[col].astype('str')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "29221dde",
"metadata": {},
"outputs": [],
"source": [
"feature_columns = [col for col in df.head(10).merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left').merge(index_data, on='trade_date', how='left').columns]\n",
"feature_columns = [col for col in feature_columns if col not in ['trade_date',\n",
" 'ts_code',\n",
" 'label']]\n",
"feature_columns = [col for col in feature_columns if 'future' not in col]\n",
"feature_columns = [col for col in feature_columns if 'label' not in col]\n",
"feature_columns = [col for col in feature_columns if 'score' not in col]\n",
"feature_columns = [col for col in feature_columns if 'gen' not in col]\n",
"feature_columns = [col for col in feature_columns if 'is_st' not in col]\n",
"feature_columns = [col for col in feature_columns if 'pe_ttm' not in col]\n",
"# feature_columns = [col for col in feature_columns if 'volatility' not in col]\n",
"feature_columns = [col for col in feature_columns if 'circ_mv' not in col]\n",
"feature_columns = [col for col in feature_columns if 'code' not in col]\n",
"feature_columns = [col for col in feature_columns if col not in origin_columns]\n",
"feature_columns = [col for col in feature_columns if not col.startswith('_')]\n",
"# feature_columns = [col for col in feature_columns if col not in ['ts_code', 'trade_date', 'vol_std_5', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_007', 'consecutive_up_limit', 'mv_volatility', 'volume_growth', 'mv_growth', 'arbr']]\n",
"feature_columns = [col for col in feature_columns if col not in ['intraday_lg_flow_corr_20', \n",
" 'cap_neutral_cost_metric', \n",
" 'hurst_net_mf_vol_60', \n",
" 'complex_factor_deap_1', \n",
" 'lg_buy_consolidation_20',\n",
" 'cs_rank_ind_cap_neutral_pe',\n",
" 'cs_rank_opening_gap',\n",
" 'cs_rank_ind_adj_lg_flow']]\n",
"\n",
"# df = fill_nan_with_daily_median(df, feature_columns)\n",
"for feature_col in [col for col in feature_columns if col in df.columns]:\n",
" median_val = df[feature_col].median()\n",
" df[feature_col].fillna(0, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "b76ea08a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ts_code trade_date log_circ_mv\n",
"0 000001.SZ 2019-01-02 16.574219\n",
"1 000001.SZ 2019-01-03 16.583965\n",
"2 000001.SZ 2019-01-04 16.633371\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n",
"去除极值\n",
"开始截面 MAD 去极值处理 (k=3.0)...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"MAD Filtering: 100%|██████████| 131/131 [00:28<00:00, 4.67it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"截面 MAD 去极值处理完成。\n",
"开始截面 MAD 去极值处理 (k=3.0)...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"MAD Filtering: 100%|██████████| 131/131 [00:23<00:00, 5.67it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"截面 MAD 去极值处理完成。\n",
"开始截面 MAD 去极值处理 (k=3.0)...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"MAD Filtering: 0it [00:00, ?it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"截面 MAD 去极值处理完成。\n",
"开始截面 MAD 去极值处理 (k=3.0)...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"MAD Filtering: 0it [00:00, ?it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"截面 MAD 去极值处理完成。\n",
"feature_columns: ['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate']\n",
"df最小日期: 2019-01-02\n",
"df最大日期: 2025-05-08\n",
"2057680\n",
"train_data最小日期: 2020-01-02\n",
"train_data最大日期: 2022-12-30\n",
"1733637\n",
"test_data最小日期: 2023-01-03\n",
"test_data最大日期: 2025-05-08\n",
" ts_code trade_date log_circ_mv\n",
"0 000001.SZ 2019-01-02 16.574219\n",
"1 000001.SZ 2019-01-03 16.583965\n",
"2 000001.SZ 2019-01-04 16.633371\n"
]
}
],
"source": [
"train_data = df[filter_index & (df['trade_date'] <= '2023-01-01') & (df['trade_date'] >= '2020-01-01')]\n",
"test_data = df[(df['trade_date'] >= '2023-01-01')]\n",
"\n",
"print(df[['ts_code', 'trade_date', 'log_circ_mv']].head(3))\n",
"\n",
"industry_df = industry_df.sort_values(by=['trade_date'])\n",
"index_data = index_data.sort_values(by=['trade_date'])\n",
"\n",
"# train_data = train_data.merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n",
"# train_data = train_data.merge(index_data, on='trade_date', how='left')\n",
"# test_data = test_data.merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n",
"# test_data = test_data.merge(index_data, on='trade_date', how='left')\n",
"\n",
"train_data, test_data = train_data.replace([np.inf, -np.inf], np.nan), test_data.replace([np.inf, -np.inf], np.nan)\n",
"\n",
"# feature_columns_new = feature_columns[:]\n",
"# train_data, _ = create_deviation_within_dates(train_data, [col for col in feature_columns if col in train_data.columns])\n",
"# test_data, _ = create_deviation_within_dates(test_data, [col for col in feature_columns if col in train_data.columns])\n",
"\n",
"# feature_columns = [\n",
"# 'undist_profit_ps', \n",
"# 'AR_BR',\n",
"# 'pe_ttm',\n",
"# 'alpha_22_improved', \n",
"# 'alpha_003', \n",
"# 'alpha_007', \n",
"# 'alpha_013', \n",
"# 'cat_up_limit', \n",
"# 'cat_down_limit', \n",
"# 'up_limit_count_10d', \n",
"# 'down_limit_count_10d', \n",
"# 'consecutive_up_limit', \n",
"# 'vol_break', \n",
"# 'weight_roc5', \n",
"# 'price_cost_divergence', \n",
"# 'smallcap_concentration', \n",
"# 'cost_stability', \n",
"# 'high_cost_break_days', \n",
"# 'liquidity_risk', \n",
"# 'turnover_std', \n",
"# 'mv_volatility', \n",
"# 'volume_growth', \n",
"# 'mv_growth', \n",
"# 'lg_flow_mom_corr_20_60', \n",
"# 'lg_flow_accel', \n",
"# 'profit_pressure', \n",
"# 'underwater_resistance', \n",
"# 'cost_conc_std_20', \n",
"# 'profit_decay_20', \n",
"# 'vol_amp_loss_20', \n",
"# 'vol_drop_profit_cnt_5', \n",
"# 'lg_flow_vol_interact_20', \n",
"# 'cost_break_confirm_cnt_5', \n",
"# 'atr_norm_channel_pos_14', \n",
"# 'turnover_diff_skew_20', \n",
"# 'lg_sm_flow_diverge_20', \n",
"# 'pullback_strong_20_20', \n",
"# 'vol_wgt_hist_pos_20', \n",
"# 'vol_adj_roc_20',\n",
"# 'cashflow_to_ev_factor',\n",
"# 'ocfps',\n",
"# 'book_to_price_ratio',\n",
"# 'turnover_rate_mean_5',\n",
"# 'variance_20',\n",
"# 'bbi_ratio_factor'\n",
"# ]\n",
"# feature_columns = [col for col in feature_columns if col in train_data.columns]\n",
"# feature_columns = [col for col in feature_columns if not col.startswith('_')]\n",
"\n",
"numeric_columns = df.select_dtypes(include=['float64', 'int64']).columns\n",
"numeric_columns = [col for col in numeric_columns if col in feature_columns]\n",
"# feature_columns = select_top_features_by_rankic(df, numeric_columns, n=10)\n",
"print(feature_columns)\n",
"\n",
"# train_data = fill_nan_with_daily_median(train_data, feature_columns)\n",
"# test_data = fill_nan_with_daily_median(test_data, feature_columns)\n",
"\n",
"train_data = train_data.dropna(subset=[col for col in feature_columns if col in train_data.columns])\n",
"train_data = train_data.dropna(subset=['label'])\n",
"train_data = train_data.reset_index(drop=True)\n",
"# print(test_data.tail())\n",
"test_data = test_data.dropna(subset=[col for col in feature_columns if col in train_data.columns])\n",
"# test_data = test_data.dropna(subset=['label'])\n",
"test_data = test_data.reset_index(drop=True)\n",
"\n",
"transform_feature_columns = feature_columns\n",
"transform_feature_columns = [col for col in transform_feature_columns if col in feature_columns and not col.startswith('cat') and col in train_data.columns]\n",
"# transform_feature_columns.remove('undist_profit_ps')\n",
"print('去除极值')\n",
"cs_mad_filter(train_data, transform_feature_columns)\n",
"# print('中性化')\n",
"# cs_neutralize_industry_cap(train_data, transform_feature_columns)\n",
"# print('标准化')\n",
"# cs_zscore_standardize(train_data, transform_feature_columns)\n",
"\n",
"cs_mad_filter(test_data, transform_feature_columns)\n",
"# cs_neutralize_industry_cap(test_data, transform_feature_columns)\n",
"# cs_zscore_standardize(test_data, transform_feature_columns)\n",
"\n",
"mad_filter_feature_columns = [col for col in feature_columns if col not in transform_feature_columns and not col.startswith('cat') and col in train_data.columns]\n",
"cs_mad_filter(train_data, mad_filter_feature_columns)\n",
"cs_mad_filter(test_data, mad_filter_feature_columns)\n",
"\n",
"\n",
"print(f'feature_columns: {feature_columns}')\n",
"\n",
"\n",
"print(f\"df最小日期: {df['trade_date'].min().strftime('%Y-%m-%d')}\")\n",
"print(f\"df最大日期: {df['trade_date'].max().strftime('%Y-%m-%d')}\")\n",
"print(len(train_data))\n",
"print(f\"train_data最小日期: {train_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n",
"print(f\"train_data最大日期: {train_data['trade_date'].max().strftime('%Y-%m-%d')}\")\n",
"print(len(test_data))\n",
"print(f\"test_data最小日期: {test_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n",
"print(f\"test_data最大日期: {test_data['trade_date'].max().strftime('%Y-%m-%d')}\")\n",
"\n",
"cat_columns = [col for col in feature_columns if col.startswith('cat')]\n",
"for col in cat_columns:\n",
" train_data[col] = train_data[col].astype('category')\n",
" test_data[col] = test_data[col].astype('category')\n",
"\n",
"print(df[['ts_code', 'trade_date', 'log_circ_mv']].head(3))\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "3ff2d1c5",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.linear_model import LogisticRegression\n",
"import matplotlib.pyplot as plt # 保持 matplotlib 导入尽管LightGBM的绘图功能已移除\n",
"from sklearn.decomposition import PCA\n",
"import pandas as pd\n",
"import numpy as np\n",
"import datetime # 用于日期计算\n",
"from catboost import CatBoostClassifier\n",
"from catboost import Pool\n",
"import lightgbm as lgb\n",
"\n",
"def train_model(train_data_df, feature_columns,\n",
" print_info=True, # 调整参数名,更通用\n",
" validation_days=180, use_pca=False, split_date=None,\n",
" target_column='label', type='light'): # 增加目标列参数\n",
"\n",
" print('train data size: ', len(train_data_df))\n",
" print(train_data_df[['ts_code', 'trade_date', 'log_circ_mv']])\n",
" # 确保数据按时间排序\n",
" train_data_df = train_data_df.sort_values(by='trade_date')\n",
"\n",
" # 识别数值型特征列\n",
" numeric_feature_columns = train_data_df[feature_columns].select_dtypes(include=['float64', 'int64']).columns.tolist()\n",
"\n",
" # 去除标签为空的样本\n",
" initial_len = len(train_data_df)\n",
" train_data_df = train_data_df.dropna(subset=[target_column])\n",
"\n",
" if print_info:\n",
" print(f'原始样本数: {initial_len}, 去除标签为空后样本数: {len(train_data_df)}')\n",
"\n",
" # 提取特征和标签,只取数值型特征用于线性回归\n",
" \n",
" if split_date is None:\n",
" all_dates = train_data_df['trade_date'].unique() # 获取所有唯一的 trade_date\n",
" split_date = all_dates[-validation_days] # 划分点为倒数第 validation_days 天\n",
" train_data_split = train_data_df[train_data_df['trade_date'] < split_date] # 训练集\n",
" val_data_split = train_data_df[train_data_df['trade_date'] >= split_date] # 验证集\n",
" \n",
" X_train = train_data_split[feature_columns]\n",
" y_train = train_data_split[target_column]\n",
" \n",
" X_val = val_data_split[feature_columns]\n",
" y_val = val_data_split['label']\n",
"\n",
"\n",
" # # 标准化数值特征 (使用 StandardScaler 对训练集fit并transform, 对验证集只transform)\n",
" scaler = StandardScaler()\n",
" # X_train = scaler.fit_transform(X_train)\n",
"\n",
" # 训练线性回归模型\n",
" # model = LogisticRegression(random_state=42)\n",
" \n",
" # # 使用处理后的特征和样本权重进行训练\n",
" # model.fit(X_train, y_train)\n",
"\n",
"\n",
" if type == 'cat':\n",
" params = {\n",
" 'loss_function': 'Logloss', # 适用于二分类\n",
" 'eval_metric': 'Logloss', # 评估指标\n",
" 'iterations': 1500,\n",
" 'learning_rate': 0.01,\n",
" 'depth': 10, # 控制模型复杂度\n",
" 'l2_leaf_reg': 50, # L2 正则化\n",
" 'verbose': 5000,\n",
" 'early_stopping_rounds': 3000,\n",
" 'one_hot_max_size': 50,\n",
" 'class_weights': [0.6, 1.2],\n",
" 'task_type': 'GPU',\n",
" 'has_time': True,\n",
" 'random_seed': 7\n",
" }\n",
" cat_features = [i for i, col in enumerate(feature_columns) if col.startswith('cat')]\n",
" train_pool = Pool(data=X_train, label=y_train, cat_features=cat_features)\n",
" val_pool = Pool(data=X_val, label=y_val, cat_features=cat_features)\n",
"\n",
"\n",
" model = CatBoostClassifier(**params)\n",
" model.fit(train_pool,\n",
" eval_set=val_pool, \n",
" plot=True, \n",
" use_best_model=True\n",
" )\n",
" elif type == 'light':\n",
" params = {\n",
" 'objective': 'binary',\n",
" 'metric': 'average_precision',\n",
" 'learning_rate': 0.01,\n",
" 'is_unbalance': True,\n",
" 'num_leaves': 2048,\n",
" 'min_data_in_leaf': 1024,\n",
" 'max_depth': 32,\n",
" 'max_bin': 1024,\n",
" 'feature_fraction': 0.5,\n",
" 'bagging_fraction': 0.5,\n",
" 'bagging_freq': 1,\n",
" 'lambda_l1': 50,\n",
" 'lambda_l2': 50,\n",
" 'verbosity': -1,\n",
" 'num_threads' : 8\n",
" }\n",
" categorical_feature = [col for col in feature_columns if 'cat' in col]\n",
" train_dataset = lgb.Dataset(\n",
" X_train, label=y_train,\n",
" categorical_feature=categorical_feature\n",
" )\n",
" val_dataset = lgb.Dataset(\n",
" X_val, label=y_val,\n",
" categorical_feature=categorical_feature\n",
" )\n",
"\n",
" evals = {}\n",
" callbacks = [lgb.log_evaluation(period=1000),\n",
" lgb.callback.record_evaluation(evals),\n",
" lgb.early_stopping(100, first_metric_only=True)\n",
" ]\n",
" # 训练模型\n",
" model = lgb.train(\n",
" params, train_dataset, num_boost_round=1000,\n",
" valid_sets=[train_dataset, val_dataset], valid_names=['train', 'valid'],\n",
" callbacks=callbacks\n",
" )\n",
"\n",
" # 打印特征重要性(如果需要)\n",
" if True:\n",
" lgb.plot_metric(evals)\n",
" lgb.plot_importance(model, importance_type='split', max_num_features=20)\n",
" plt.show()\n",
"\n",
"\n",
" return model, scaler, None # 返回训练好的模型、scaler 和 pca 对象"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "c6eb5cd4-e714-420a-ac48-39af3e11ee81",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T15:03:18.426481Z",
"start_time": "2025-04-03T15:02:19.926352Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train data size: 218400\n",
" ts_code trade_date log_circ_mv\n",
"0 600306.SH 2020-01-02 11.552040\n",
"1 603269.SH 2020-01-02 11.324801\n",
"2 002633.SZ 2020-01-02 11.759023\n",
"3 603991.SH 2020-01-02 11.181150\n",
"4 000691.SZ 2020-01-02 11.677910\n",
"... ... ... ...\n",
"218395 001207.SZ 2022-12-30 11.385045\n",
"218396 002377.SZ 2022-12-30 12.425814\n",
"218397 600714.SH 2022-12-30 12.427457\n",
"218398 002521.SZ 2022-12-30 12.223073\n",
"218399 600322.SH 2022-12-30 12.428769\n",
"\n",
"[218400 rows x 3 columns]\n",
"原始样本数: 218400, 去除标签为空后样本数: 218400\n",
"Training until validation scores don't improve for 100 rounds\n",
"Early stopping, best iteration is:\n",
"[620]\ttrain's average_precision: 0.379234\tvalid's average_precision: 0.304848\n",
"Evaluated only: average_precision\n"
]
},
{
"data": {
"image/png": "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IpEIy2b2b/5tMk0jlEoFJOKWTcdhy20yhUJh/iWVSuHp6Wm1TW5uLn788UerqUceeOABPPjgg9DpdDh69Cj0ej1OnTrV5PdWq9V49dVXkZiYCADo0qULCgsLm9V+WzAMERERXUcikQhKRdO/bg0GEWDUQymXttq5ye66667LzsF26tQpvPLKKygsLETXrl0hFothNBqbfFxPT09069bN/Foul0MQWtZvqil4m4yIiIisiESiKwaRK83B9swzz6B///7Yt28fPvzwQ/MVnqby8PBodjvtgWGIiIiIrERERCA7OxunTp3C2bNncfDgwWvuU1dXB71ej9LSUnz77bf48ssvb8iVnZZiGCIiIiIrI0eOxNixYzFx4kSMGTMGO3fuvOY+r7zyCrZt24ZRo0Zhx44duPfee3Hy5Emo1eob0GLbiYSbIbI5WEZGBrRaLeLj4694adCZqNVqZGVlsR6XYE2ssSbWWBNrbaUmGo0GeXl56NSpE5RKZYuOZTAYoNFooFQqW22foRvtSjW5Vt0zMjIAAAkJCVc9Pq8MERERkVNjGCIiIiKnxjBERERETo1hiIiIiJwawxARERE5NYYhIiIicmoMQ0REROTUGIaIiIjIqTEMERERkVNjGCIiIiK7eu655/Dcc89dcX1sbCz27dt31WMUFBQgNjYWBQUF9m6eFel1fwciIiKiS6Smpraq6VcYhoiIiK4jQRAg6BqbvL3RYICga4RRDIhaODeZSKaASCRq0TGuB09PT0c3wYJDw1B5eTlefvll7N27F506dcLixYsRFxfXrGPk5eXhzjvvxJYtWxAWFgYASE9PxyuvvIJTp06hX79+WLhwIby9va/DGRAREV2ZIAgoXPcCGgtyHPL+irA4hDywsFmBaPfu3Xj22WexZ88e86SoixYtQlFREVauXInPP/8cH374ISoqKhAZGYkFCxagW7duzWpXbGws1q1bhz59+piXGY1GrFy5El9//TUAYMqUKc06Zks4rM+QIAiYOXMmKisrsX79ekyZMgUzZsxAfX19k49hMBgwf/58NDQ0mJeVl5dj6tSpSEhIwPfff4+AgAC8+OKL1+MUiIiImqD1XZm5mn79+kEikeDAgQPmZTt27MDYsWOxf/9+vPbaa3jxxRexfft29OnTB88//7xd3ve7777D2rVrsWzZMqxbtw7/+9//7HLcpnDY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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"train data size: 218400\n",
" ts_code trade_date log_circ_mv\n",
"0 600306.SH 2020-01-02 11.552040\n",
"1 603269.SH 2020-01-02 11.324801\n",
"2 002633.SZ 2020-01-02 11.759023\n",
"3 603991.SH 2020-01-02 11.181150\n",
"4 000691.SZ 2020-01-02 11.677910\n",
"... ... ... ...\n",
"218395 001207.SZ 2022-12-30 11.385045\n",
"218396 002377.SZ 2022-12-30 12.425814\n",
"218397 600714.SH 2022-12-30 12.427457\n",
"218398 002521.SZ 2022-12-30 12.223073\n",
"218399 600322.SH 2022-12-30 12.428769\n",
"\n",
"[218400 rows x 3 columns]\n",
"原始样本数: 218400, 去除标签为空后样本数: 218400\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cc452ab5227045d1944aa8d8ed650f4a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"MetricVisualizer(layout=Layout(align_self='stretch', height='500px'))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0:\tlearn: 0.6890710\ttest: 0.6898147\tbest: 0.6898147 (0)\ttotal: 54.1ms\tremaining: 1m 21s\n",
"1499:\tlearn: 0.3800534\ttest: 0.5434508\tbest: 0.5419956 (767)\ttotal: 57.4s\tremaining: 0us\n",
"bestTest = 0.5419955563\n",
"bestIteration = 767\n",
"Shrink model to first 768 iterations.\n"
]
}
],
"source": [
"\n",
"gc.collect()\n",
"feature_columns.remove('score1')\n",
"feature_columns.remove('score2')\n",
"\n",
"use_pca = False\n",
"# feature_contri = [2 if feat.startswith('act_factor') or 'buy' in feat or 'sell' in feat else 1 for feat in feature_columns]\n",
"# light_params['feature_contri'] = feature_contri\n",
"# print(f'feature_contri: {feature_contri}')\n",
"model1, scaler, pca = train_model(train_data\n",
" .dropna(subset=['label']).groupby('trade_date', group_keys=False)\n",
" .apply(lambda x: x.nsmallest(300, 'total_mv'))\n",
" .merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n",
" .merge(index_data, on='trade_date', how='left'), feature_columns)\n",
"\n",
"model2, scaler, pca = train_model(train_data\n",
" .dropna(subset=['label']).groupby('trade_date', group_keys=False)\n",
" .apply(lambda x: x.nsmallest(300, 'total_mv'))\n",
" .merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n",
" .merge(index_data, on='trade_date', how='left'), feature_columns, type='cat')\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "e82213f0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train data size: 218400\n",
" ts_code trade_date log_circ_mv\n",
"0 600306.SH 2020-01-02 11.552040\n",
"1 603269.SH 2020-01-02 11.324801\n",
"2 002633.SZ 2020-01-02 11.759023\n",
"3 603991.SH 2020-01-02 11.181150\n",
"4 000691.SZ 2020-01-02 11.677910\n",
"... ... ... ...\n",
"218395 001207.SZ 2022-12-30 11.385045\n",
"218396 002377.SZ 2022-12-30 12.425814\n",
"218397 600714.SH 2022-12-30 12.427457\n",
"218398 002521.SZ 2022-12-30 12.223073\n",
"218399 600322.SH 2022-12-30 12.428769\n",
"\n",
"[218400 rows x 3 columns]\n",
"原始样本数: 218400, 去除标签为空后样本数: 218400\n",
"Training until validation scores don't improve for 100 rounds\n",
"Early stopping, best iteration is:\n",
"[125]\ttrain's average_precision: 0.5023\tvalid's average_precision: 0.291157\n",
"Evaluated only: average_precision\n"
]
},
{
"data": {
"image/png": "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oKDKMq1We93useLiYuj1eowcOdKxLCwsDK1bt67V9V2IiIiIrsRj4Sg+Ph6ZmZkoKytzLDt27BgiIiKuuV5ISEi1Hiaj0YjLly+jZcuW9VYvERERNQ8eC0edOnVCx44dsXTpUthsNqSmpuLHH3/EyJEjYbPZUFZWdsVR9XK5HOPGjcPSpUuRmpqK8+fPY/HixVAqlRg1apQHWkJERERNiUcngVyyZAl27tyJQYMG4Z577sG4ceMwdOhQ5Obmol+/fjh58uQV13vhhRcwaNAgzJo1C7fffjtOnz6NxMREr7mgHRERkTdbuHAhFi5ceNX74+LisHfv3mtuIycnB3FxccjJyXF3eXXm0cuHdO3aFdu3b0dKSgqCg4MdV/eNiopCRkbGVddTKpVYsGDBFacsJyIiIs9KSUnx6kH7Hr+2mo+PD4YNG+bpMoiIiFwiiiJEs2fmEBLkjfP0/ICAAE+XUCceD0dERETeShRF5K5dBGPO1Y921CdlVGdEPvh6rQLSL7/8gueeew579uxxnNr/xhtvIC8vDytWrMD69evxySefoLCwENHR0XjppZfQq1evWtUVFxeHtWvXYsCAAY5lNpsNK1aswDfffAMAmDp1aq222ZA8OuaIiIjI+zW+nptrGTx4MKRSKfbv3+9YtnPnTowbNw779u3Da6+9hhdeeAE7duzAgAED8Pzzz7vleb/99lusWbMGb7/9NtauXYv//e9/btlufWDPERERkYsEQUDkg6971WE1mUyGMWPGOMJPeno6NBoNhg8fDqvVij179kClUiEtLQ0ajcZtcwhu27YNd9xxB2688UYAwFNPPYWZM2e6ZdvuxnBERERUB4IgQFB4z+VEAGDcuHH4xz/+gUWLFmHHjh247bbboFAokJ+fjxdffBEpKSmIiYlBq1atrnjBV1dcunQJgwcPdtz++yXEGhMeViMiImpmevbsCblcjrS0NMchNQB47733UF5ejuTkZHzzzTeYOHGi256zRYsWuHTpkuP2hQsX3LZtd2M4IiIiaobuuOMOrFmzBqWlpejbty8A+2W8bDYbiouL8ccff+D1118HYB94XlejR4/Gli1bkJycjKysLCxbtqzO26wvDEdERETN0Pjx4/Hdd99h7NixjnFLc+fOhcFgwK233or33nsPDz/8MAD75b3q6t5778XkyZMxf/58PPLIIxgyZEid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YQonIiKiJs1jx5JOnDiByMhIxMTEOJYlJCTgyJEjGD9+/FXXCwgIwHvvvVdlWWZmJjp27FjnmvR6fZ230dhUtolt8y5sm3dqym0Dmnb72DbvJIpivYwX9lg40mg0aNu2bZVlgYGBSEtLq9V20tPT8f3332PNmjV1rik7O7vO22is2DbvxLZ5p6bcNqBpt49t8z4KhcLt2/RYOJLJZFAqlVWWqVQq6HS6Gm9Dr9dj/vz5mDRpEvr161fnmtq3bw+1Wl3n7TQmer0e2dnZbJuXYdu8U1NuG9C028e2eafMzMx62a7HwlFwcDAKCgqqLNNqtTVOgKIoYsGCBVCpVHjxxRfdUpNarYaPj49bttXYsG3eiW3zTk25bUDTbh/b5l3qawoejw3Ijo+PR2ZmJsrKyhzLjh07hoiIiBqt/8477+DIkSP44IMPqvVAEREREbnKY+GoU6dO6NixI5YuXQqbzYbU1FT8+OOPGDlyJGw2G8rKymC1Wq+47scff4yvv/4a//73v+Hn54fy8vIaTQFAREREdD0enflwyZIlePzxx/HDDz9Ao9Fg/PjxGDp0KHJycjBq1Chs2rQJXbp0qbZeYmIidDod7r333irLMzIyGqp0IiIiaqI8Go66du2K7du3IyUlBcHBwejZsycAICoq6ppBZ9++fQ1VIhERETUzHr9mho+PD4YNG+bpMoiIiIgA8MKzRERERFUwHBERERE5YTgiIiIicsJwREREROSE4YiIiIjICcMRERERkROGIyIiIiInDEdEREREThiOiIiIiJwwHBERERE5YTgiIiIicsJwREREROSE4YiIiIjICcMRERERkROGIyIiIiInDEdEREREThiOiIiIiJwwHBERERE5YTgiIiIicsJwREREROSE4YiIiIjICcMRERERkROGIyIiIiInDEdEREREThiOiIiIiJwwHBERERE5YTgiIiIicsJwREREROSE4YiIiIjICcMRERERkROGIyIiIiInDEdEREREThiOiIiIiJwwHBERERE5YTgiIiIicsJwREREROSE4YiIiIjICcMRERERkRNBFEXR00V42sGDByGKIuRyOQRB8HQ5biWKIsxmM9vmZdg279SU2wY07faxbd7JZDJBEAT07t3brduVuXVrXqryj6Wp/dEA9jYpFApPl1Ev2DbvxLZ5r6bcPrbNOwmCUC/v3ew5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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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RIyRSqXCwsIir8N450meDUPybBiSZ8Mw1jyrVKpM/b9bRqiFEEIIIYTIBplDLYQQQgghRDZIQS2EEEIIIUQ2SEEthBBCCCFENkhBLYQQQgghRDZIQS2EEEIIIUQ2SEEthBBCCCFENkhBLYQQQgghRDZIQS2EEEIIIUQ2SEEthBBCCCFENkhBLYQQQgghRDZIQS2EEEIIIUQ2SEEthBBCCCFENkhBLYQQQuQBjUbDmTNnuHDhAjqdLq/DEUJkgxTUQuSiW7du8dVXX1G9enXat29PdHR0Xodk1LRaLT4+PixevFhv++HDh2nZsiVubm588803PHz4UGnLyMhg1qxZ1K5dm8aNG7Nnzx5Dh21UoqKi6NSpEx999BFubm7MmjULrVYLSJ5z0pkzZ2jcuDHffPMN3t7efPHFF9y/fx+QPOeGHTt24OHhobzevn07Hh4e1K5dm7lz5yq/4wCpqamMHTsWd3d3WrRowZ9//pkXIRuNDRs2oFar9b7WrVsHPPk9//zzz6levTqDBw/m7t27eseuXLmSTz75hHr16inHGC2dECJXaLVaXadOnXSdOnXSxcTE6EJCQnSNGzfWpaSk5HVoRik9PV03atQoXcWKFXWLFi1StkdHR+uqVKmi++6773SXL1/WDR48WDdjxgylPSAgQFenTh3d0aNHdSdPntTVq1dPd/bs2by4hLdecnKyrl69erq5c+fqkpKSdL/88ovO1dVVt3XrVslzDnr8+LGuSZMmum3btul0Op0uJSVF99lnn+mWLl0qec4F165d07m7u+saN26s0+l0usOHD+ucnZ11mzdv1sXFxek6deqkCwoKUvb39fXVNWvWTHfu3Dndzz//rKtbt67u2rVreRX+W8/X11e3aNEi3b1795Svhw8f6m7evKlzd3fXTZ48WXf58mWdv7+/7uuvv1aO27hxo65q1aq6n376SXfhwgVds2bNdOHh4Xl4JdkjBbUQueTEiRO6ihUr6i5evKhs6927ty40NDQPozJeY8eO1Y0fP17XqVMnvYJ6woQJui+++EJ5ff36dV316tV16enpuocPH+qqVaumCw4OVtqXL1+uGz9+vEFjNxanTp3SzZw5U29br169dBMnTpQ856A7d+7oFXA6nU43aNAg3cyZMyXPOUyr1ep69uypa926tVJQ9+zZUzd06FBln1OnTumaNm2q0+me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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"score_df = train_data.dropna(subset=['label']).groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(300, 'total_mv')).merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left').merge(index_data, on='trade_date', how='left')\n",
"score_df['score1'] = model1.predict(score_df[feature_columns])\n",
"score_df['score2'] = model2.predict_proba(score_df[feature_columns])[:, 1]\n",
"\n",
"if 'score1' not in feature_columns:\n",
" feature_columns.append('score1')\n",
"if 'score2' not in feature_columns:\n",
" feature_columns.append('score2')\n",
"\n",
"model3, scaler, pca = train_model(score_df, feature_columns)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "5d1522a7538db91b",
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-03T15:04:39.656944Z",
"start_time": "2025-04-03T15:04:39.298483Z"
}
},
"outputs": [],
"source": [
"# train_data = train_data.sort_values(by='trade_date')\n",
"# all_dates = train_data['trade_date'].unique() # 获取所有唯一的 trade_date\n",
"# split_date = all_dates[-120] # 划分点为倒数第 validation_days 天\n",
"# print(split_date)\n",
"# print(all_dates)\n",
"# val_data_split = train_data[train_data['trade_date'] >= split_date] # 验证集\n",
"\n",
"feature_columns.remove('score1')\n",
"feature_columns.remove('score2')\n",
"\n",
"score_df = test_data.groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(500, 'total_mv'))\n",
"# score_df = score_df[score_df['pe_ttm'] > 0]\n",
"score_df = score_df.merge(industry_df, on=['cat_l2_code', 'trade_date'], how='left')\n",
"score_df = score_df.merge(index_data, on='trade_date', how='left')\n",
"numeric_columns = score_df.select_dtypes(include=['float64', 'int64']).columns\n",
"numeric_columns = [col for col in feature_columns if col in numeric_columns]\n",
"score_df['score1'] = model1.predict(score_df[feature_columns])\n",
"score_df['score2'] = model2.predict_proba(score_df[feature_columns])[:, 1]\n",
"\n",
"# score_df['score1'] = score_df.groupby('trade_date', group_keys=False)['score1'].rank(\n",
"# ascending=True,\n",
"# na_option='keep'\n",
"# )\n",
"# score_df['score2'] = score_df.groupby('trade_date', group_keys=False)['score2'].rank(\n",
"# ascending=True,\n",
"# na_option='keep'\n",
"# )\n",
"# score_df['score'] = score_df['score1'] + score_df['score2'] * 1.15\n",
"if 'score1' not in feature_columns:\n",
" feature_columns.append('score1')\n",
"if 'score2' not in feature_columns:\n",
" feature_columns.append('score2')\n",
"score_df['score'] = model3.predict(score_df[feature_columns])\n",
"\n",
"score_df = score_df.groupby('trade_date', group_keys=False).apply(\n",
" lambda x: x[x['score'] >= x['score'].quantile(0.90)] # 计算90%分位数作为阈值,筛选分数>=阈值的行\n",
").reset_index(drop=True) # drop=True 避免添加旧索引列\n",
"# save_df = score_df.groupby('trade_date', group_keys=False).apply(lambda x: x.nlargest(1, 'score')).reset_index()\n",
"save_df = score_df.groupby('trade_date', group_keys=False).apply(lambda x: x.nsmallest(1, 'total_mv')).reset_index()\n",
"save_df = save_df.sort_values(['trade_date', 'score'])\n",
"save_df[['trade_date', 'score', 'ts_code']].to_csv('predictions_test.tsv', index=False)\n"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "09b1799e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"193\n",
"['vol', 'pct_chg', 'turnover_rate', 'volume_ratio', 'winner_rate', 'undist_profit_ps', 'ocfps', 'AR', 'BR', 'AR_BR', 'cashflow_to_ev_factor', 'book_to_price_ratio', 'turnover_rate_mean_5', 'variance_20', 'bbi_ratio_factor', 'daily_deviation', 'lg_elg_net_buy_vol', 'flow_lg_elg_intensity', 'sm_net_buy_vol', 'total_buy_vol', 'lg_elg_buy_prop', 'flow_struct_buy_change', 'lg_elg_net_buy_vol_change', 'flow_lg_elg_accel', 'chip_concentration_range', 'chip_skewness', 'floating_chip_proxy', 'cost_support_15pct_change', 'cat_winner_price_zone', 'flow_chip_consistency', 'profit_taking_vs_absorb', 'cat_is_positive', 'upside_vol', 'downside_vol', 'vol_ratio', 'return_skew', 'return_kurtosis', 'volume_change_rate', 'cat_volume_breakout', 'turnover_deviation', 'cat_turnover_spike', 'avg_volume_ratio', 'cat_volume_ratio_breakout', 'vol_spike', 'vol_std_5', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'rsi_3', 'return_5', 'return_20', 'std_return_5', 'std_return_90', 'std_return_90_2', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'cov', 'delta_cov', 'alpha_22_improved', 'alpha_003', 'alpha_007', 'alpha_013', 'vol_break', 'weight_roc5', 'smallcap_concentration', 'cost_stability', 'high_cost_break_days', 'liquidity_risk', 'turnover_std', 'mv_volatility', 'volume_growth', 'mv_growth', 'momentum_factor', 'resonance_factor', 'log_close', 'cat_vol_spike', 'up', 'down', 'obv_maobv_6', 'std_return_5_over_std_return_90', 'std_return_90_minus_std_return_90_2', 'cat_af2', 'cat_af3', 'cat_af4', 'act_factor5', 'act_factor6', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'ctrl_strength', 'low_cost_dev', 'asymmetry', 'lock_factor', 'cat_vol_break', 'cost_atr_adj', 'cat_golden_resonance', 'mv_turnover_ratio', 'mv_adjusted_volume', 'mv_weighted_turnover', 'nonlinear_mv_volume', 'mv_volume_ratio', 'mv_momentum', 'lg_flow_mom_corr_20_60', 'lg_flow_accel', 'profit_pressure', 'underwater_resistance', 'cost_conc_std_20', 'profit_decay_20', 'vol_amp_loss_20', 'vol_drop_profit_cnt_5', 'lg_flow_vol_interact_20', 'cost_break_confirm_cnt_5', 'atr_norm_channel_pos_14', 'turnover_diff_skew_20', 'lg_sm_flow_diverge_20', 'pullback_strong_20_20', 'vol_wgt_hist_pos_20', 'vol_adj_roc_20', 'cs_rank_net_lg_flow_val', 'cs_rank_elg_buy_ratio', 'cs_rank_rel_profit_margin', 'cs_rank_cost_breadth', 'cs_rank_dist_to_upper_cost', 'cs_rank_winner_rate', 'cs_rank_intraday_range', 'cs_rank_close_pos_in_range', 'cs_rank_pos_in_hist_range', 'cs_rank_vol_x_profit_margin', 'cs_rank_lg_flow_price_concordance', 'cs_rank_turnover_per_winner', 'cs_rank_volume_ratio', 'cs_rank_elg_buy_sell_sm_ratio', 'cs_rank_cost_dist_vol_ratio', 'cs_rank_size', 'cat_up_limit', 'industry_obv', 'industry_return_5', 'industry_return_20', 'industry__ema_5', 'industry__ema_13', 'industry__ema_20', 'industry__ema_60', 'industry_act_factor1', 'industry_act_factor2', 'industry_act_factor3', 'industry_act_factor4', 'industry_act_factor5', 'industry_act_factor6', 'industry_rank_act_factor1', 'industry_rank_act_factor2', 'industry_rank_act_factor3', 'industry_return_5_percentile', 'industry_return_20_percentile', '000852.SH_MACD', '000905.SH_MACD', '399006.SZ_MACD', '000852.SH_MACD_hist', '000905.SH_MACD_hist', '399006.SZ_MACD_hist', '000852.SH_RSI', '000905.SH_RSI', '399006.SZ_RSI', '000852.SH_Signal_line', '000905.SH_Signal_line', '399006.SZ_Signal_line', '000852.SH_amount_change_rate', '000905.SH_amount_change_rate', '399006.SZ_amount_change_rate', '000852.SH_amount_mean', '000905.SH_amount_mean', '399006.SZ_amount_mean', '000852.SH_daily_return', '000905.SH_daily_return', '399006.SZ_daily_return', '000852.SH_up_ratio_20d', '000905.SH_up_ratio_20d', '399006.SZ_up_ratio_20d', '000852.SH_volatility', '000905.SH_volatility', '399006.SZ_volatility', '000852.SH_volume_change_rate', '000905.SH_volume_change_rate', '399006.SZ_volume_change_rate', 'score1', 'score2']\n"
]
}
],
"source": [
"print(len(feature_columns))\n",
"print(feature_columns)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "7e9023cc",
"metadata": {},
"outputs": [],
"source": [
"def analyze_factors(\n",
" df: pd.DataFrame,\n",
" feature_columns: list[str],\n",
" target_column: str = 'target', # 假设目标列默认为 'target'\n",
" trade_date_col: str = 'trade_date', # 假设日期列默认为 'trade_date'\n",
" mcap_col: str = 'total_mv', # 新增: 市值列名称\n",
" mcap_bins: int = 5 # 新增: 市值分位数的数量 (例如 5 表示五分位数)\n",
") -> pd.DataFrame:\n",
" \"\"\"\n",
" 分析DataFrame中指定特征列的各种指标包括基本统计、相关性、日间IC、ICIR以及在不同市值分位数上的IC。\n",
"\n",
" Args:\n",
" df (pd.DataFrame): 包含日期、目标列、特征列和市值列的DataFrame。\n",
" 需要包含 trade_date_col, target_column, feature_columns 和 mcap_col 中的所有列。\n",
" feature_columns (list[str]): 需要分析的特征列名称列表。\n",
" target_column (str): 目标变量列的名称。\n",
" trade_date_col (str): 交易日期列的名称。\n",
" mcap_col (str): 市值列的名称。\n",
" mcap_bins (int): 市值分位数的数量 (例如 5 表示五分位数)。\n",
"\n",
" Returns:\n",
" pd.DataFrame: 包含各个因子分析指标的汇总DataFrame。\n",
" 同时打印因子在不同市值分位数上的平均IC表格。\n",
" 如果输入数据或列有问题可能返回空或包含NaN的DataFrame。\n",
" \"\"\"\n",
"\n",
" # --- 数据校验 ---\n",
" required_cols = [trade_date_col, target_column, mcap_col] + feature_columns\n",
" if not all(col in df.columns for col in required_cols):\n",
" missing = [col for col in required_cols if col not in df.columns]\n",
" print(f\"错误: 输入DataFrame缺少必需的列: {missing}\")\n",
" return pd.DataFrame() # 返回空DataFrame\n",
"\n",
" # 确保日期列是 datetime 类型\n",
" df = df.copy() # 在副本上操作\n",
" df[trade_date_col] = pd.to_datetime(df[trade_date_col], errors='coerce')\n",
" df.dropna(subset=[trade_date_col], inplace=True) # 移除日期转换失败的行\n",
"\n",
" # 过滤掉那些在 feature_columns, target_column, mcap_col 上有 NaN 的行,以确保后续计算是在完整数据上\n",
" # 直接在 df 副本上进行清洗\n",
" initial_rows_before_clean = len(df)\n",
" df.dropna(subset=feature_columns + [target_column, mcap_col], inplace=True)\n",
" rows_dropped_clean = initial_rows_before_clean - len(df)\n",
" if rows_dropped_clean > 0:\n",
" print(f\"警告: 移除了 {rows_dropped_clean} 行,因为其特征、目标或市值列存在空值。\")\n",
"\n",
" if df.empty:\n",
" print(\"错误: 清理缺失值后数据为空,无法进行因子分析。\")\n",
" return pd.DataFrame() # 返回空DataFrame\n",
"\n",
"\n",
" print(f\"开始分析 {len(feature_columns)} 个因子指标...\")\n",
"\n",
" # --- 1. 基本因子统计量 ---\n",
" basic_stats = df[feature_columns].describe().T\n",
"\n",
" print(\"\\n--- 基本因子统计量 ---\")\n",
" print(basic_stats)\n",
"\n",
" # --- 2. 因子与目标变量的整体相关性 ---\n",
" overall_correlation = {}\n",
" for feature in feature_columns:\n",
" # 在清理后的 df 上计算相关性\n",
" if df[[feature, target_column]].dropna().shape[0] > 1: # 确保至少有两个有效数据点\n",
" overall_correlation[feature] = {\n",
" 'Pearson_Correlation_with_Target': df[feature].corr(df[target_column], method='pearson'),\n",
" 'Spearman_Correlation_with_Target': df[feature].corr(df[target_column], method='spearman')\n",
" }\n",
" else:\n",
" overall_correlation[feature] = {\n",
" 'Pearson_Correlation_with_Target': np.nan,\n",
" 'Spearman_Correlation_with_Target': np.nan\n",
" }\n",
" overall_corr_df = pd.DataFrame.from_dict(overall_correlation, orient='index')\n",
"\n",
" print(\"\\n--- 因子与目标变量的整体相关性 ---\")\n",
" print(overall_corr_df)\n",
"\n",
" # --- 3. 因子之间的相关性矩阵 ---\n",
" # 在清理后的 df 上计算相关性\n",
" factor_correlation_matrix = df[feature_columns].corr(method='spearman') # 改回 Spearman\n",
"\n",
" print(\"\\n--- 因子之间的相关性矩阵 (Spearman) ---\") # 修正打印信息\n",
" print(factor_correlation_matrix)\n",
"\n",
" # --- 4. 日间 IC 和 ICIR ---\n",
" print(\"\\n--- 计算日间 IC (Spearman 相关性) 和 ICIR ---\")\n",
"\n",
" # 直接在清理后的 df 上计算每日 IC\n",
" if df.empty: # 理论上上面已经检查过,这里再检查一次更安全\n",
" daily_ic_series = pd.Series(dtype=float) # 空 Series\n",
" ic_stats = pd.DataFrame({\n",
" 'Mean_IC (Spearman)': np.nan, 'Std_Dev_IC': np.nan, 'ICIR': np.nan\n",
" }, index=feature_columns)\n",
" else:\n",
" daily_ic_series = df.groupby(trade_date_col).apply(\n",
" lambda day_group: {\n",
" feature: day_group[feature].corr(day_group[target_column], method='spearman')\n",
" for feature in feature_columns if day_group.shape[0] > 1 # 确保每日数据点多于1才能计算相关性\n",
" }\n",
" ).apply(pd.Series) # 将字典结果转换为 DataFrame\n",
"\n",
" # 计算 IC 的统计量\n",
" if not daily_ic_series.empty:\n",
" ic_mean = daily_ic_series.mean()\n",
" ic_std = daily_ic_series.std()\n",
" # 避免除以零\n",
" ic_ir = ic_mean / ic_std.replace(0, np.nan) # 使用 replace 0 为 NaN\n",
"\n",
" ic_stats = pd.DataFrame({\n",
" 'Mean_IC (Spearman)': ic_mean,\n",
" 'Std_Dev_IC': ic_std,\n",
" 'ICIR': ic_ir\n",
" })\n",
" print(\"\\n--- 日间 IC 和 ICIR (Spearman) ---\")\n",
" print(ic_stats)\n",
" else:\n",
" ic_stats = pd.DataFrame({\n",
" 'Mean_IC (Spearman)': np.nan, 'Std_Dev_IC': np.nan, 'ICIR': np.nan\n",
" }, index=feature_columns)\n",
"\n",
"\n",
" # --- 5. 因子在不同市值分位数上的平均 IC ---\n",
" print(f\"\\n--- 计算因子在 {mcap_bins} 个市值分位数上的平均 IC (Spearman) ---\")\n",
"\n",
" # 在清理后的 df 上计算每日市值分位数,直接添加到 df 中\n",
" # 使用 transform() 和 qcut() 在每个日期分组内计算分位数\n",
" # labels=False 返回整数 0 to mcap_bins-1\n",
" # duplicates='drop' 处理在某些日期股票数量少于 bins 导致分位数边缘重复的情况,会返回 NaN\n",
" # 添加一个临时列来存储分位数\n",
" mcap_bin_col_name = f'_mcap_bin_{mcap_bins}'\n",
" df[mcap_bin_col_name] = df.groupby(trade_date_col)[mcap_col].transform(\n",
" lambda x: pd.qcut(x, q=mcap_bins, labels=False, duplicates='drop') if len(x) >= mcap_bins else np.nan # 确保股票数量足够进行分位数划分\n",
" )\n",
"\n",
" # 过滤掉无法划分分位数 (NaN) 的行,进行分位数 IC 计算\n",
" # 创建一个临时 DataFrame df_binned_analysis\n",
" df_binned_analysis = df.dropna(subset=[mcap_bin_col_name]).copy()\n",
"\n",
" if df_binned_analysis.empty:\n",
" print(\"错误: 划分市值分位数后数据为空,无法计算分位数上的 IC。\")\n",
" avg_ic_by_bin = pd.DataFrame(index=range(mcap_bins), columns=feature_columns) # Placeholder\n",
" else:\n",
" # 按日期和市值分位数分组,计算每个分组内的因子与目标变量的截面相关性 (分位数IC)\n",
" binned_ic_by_day = df_binned_analysis.groupby([trade_date_col, mcap_bin_col_name]).apply(\n",
" lambda group: {\n",
" feature: group[feature].corr(group[target_column], method='spearman')\n",
" for feature in feature_columns if group.shape[0] > 1 # 确保分位数组内数据点多于1\n",
" }\n",
" ).apply(pd.Series) # 将嵌套结果转为 DataFrame\n",
"\n",
" # 对每个分位数组的每日 IC 求平均\n",
" # unstack(level=mcap_bin_col_name) 将 mcap_bin 作为列\n",
" # mean(axis=0) 对日期索引求平均\n",
" avg_ic_by_bin = binned_ic_by_day.unstack(level=mcap_bin_col_name).mean(axis=0).unstack()\n",
"\n",
" # 重命名索引和列,使表格更清晰\n",
" if not avg_ic_by_bin.empty:\n",
" # Index name will be the original column name used for grouping ('_mcap_bin_X')\n",
" # Rename the index name explicitly\n",
" avg_ic_by_bin.index.name = 'MarketCap_Bin'\n",
" avg_ic_by_bin.columns.name = 'Feature'\n",
" # 可以根据需要对分位数 bin 索引进行排序 (虽然 pd.qcut labels=False usually sorts)\n",
" avg_ic_by_bin = avg_ic_by_bin.sort_index()\n",
"\n",
" print(avg_ic_by_bin)\n",
"\n",
"\n",
" # --- 6. 汇总所有指标 ---\n",
" # 将基本统计、整体相关性、IC/ICIR 合并到一个 DataFrame\n",
" # 注意:合并时需要根据索引进行对齐 (因子名称)\n",
" summary_df = basic_stats\n",
" summary_df = summary_df.merge(overall_corr_df, left_index=True, right_index=True, how='left')\n",
" summary_df = summary_df.merge(ic_stats, left_index=True, right_index=True, how='left')\n",
"\n",
" # print(\"\\n--- 因子分析汇总报告 ---\")\n",
" # print(summary_df)\n",
"\n",
" # --- 清理临时列 'mcap_bin' ---\n",
" # 修正:在函数结束时从我们一直在操作的 df 副本中删除临时列\n",
" if mcap_bin_col_name in df.columns:\n",
" df.drop(columns=[mcap_bin_col_name], inplace=True)\n",
"\n",
"\n",
" return summary_df # 主要返回汇总报告分位数IC单独打印\n",
"\n",
"# # 运行分析函数\n",
"# factor_analysis_report = analyze_factors(test_data.copy(), feature_columns, 'future_return')\n",
"\n",
"# print(\"\\n--- 最终汇总报告 DataFrame ---\")\n",
"# print(factor_analysis_report)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "a0000d75",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"开始分析 'score' 在 'circ_mv' 和 'future_return' 下的表现...\n",
"准备数据,处理 NaN 值...\n",
"原始数据 28312 行,移除 NaN 后剩余 27929 行用于分析。\n",
"对 'circ_mv' 和 'future_return' 进行 100 分位数分箱...\n",
"按二维分箱分组计算 Spearman Rank IC...\n",
"整理结果用于绘图...\n",
"circ_mv_bin 0 1 2 3 4 5 6 7 8 9 ... 90 91 92 \\\n",
"future_return_bin ... \n",
"0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"... .. .. .. .. .. .. .. .. .. .. ... .. .. .. \n",
"95 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"96 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"97 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"98 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"99 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN \n",
"\n",
"circ_mv_bin 93 94 95 96 97 98 99 \n",
"future_return_bin \n",
"0 NaN NaN NaN NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN NaN NaN \n",
"... .. .. .. .. .. .. .. \n",
"95 NaN NaN NaN NaN NaN NaN NaN \n",
"96 NaN NaN NaN NaN NaN NaN NaN \n",
"97 NaN NaN NaN NaN NaN NaN NaN \n",
"98 NaN NaN NaN NaN NaN NaN NaN \n",
"99 NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
"[100 rows x 100 columns]\n",
"生成热力图...\n",
"分析完成。\n"
]
},
{
"data": {
"image/png": "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VuncuXN6+eWXs5T39/dX9+7d9d1332nHjh05XJ3nmDJliiSpT58+9gV0SXruuec0YcIE/fjjjyyie7j27dtr4sSJWrhwoV566SWzywEAAIDJWEQHAAAeJzIyUn/++aeCg4PT7UR3dJyLYRhKTk5WcnKyS2qw2WwqVqxYlrLz5s3T1KlTVbRoUY0aNSrd2eU3CgsL05QpU9S3b1+tXbtWzz77rF544QV1797dvuh6//33S5IuXbqk2NhYSdd+QZB6PZW/v7/279+vL7/8MsO5rl69qitXrqh///5ZupfMrFmzRg899FC2duYWKVJEknTlypVbnt8bJCYmasOGDfL391f9+vXTvJYnTx6VKFFC//zzjy5cuJDmmCB4lsDAQEVFRWn16tUsogMAAIBFdAAAPMG///6rCRMmaOPGjTpz5oyKFi2qBg0aqHfv3vZFyFQ2m00zZ87UggULdOTIERUpUkTVqlVTnz59VLFixXTvvXTpUs2YMUMHDhxQWFiYHnjgAb366quqUKFCmtyND2VctmyZ5syZo3379mnGjBnpzrPes2ePJk2apC1btighIUHly5dXx44d1bZtW6e/DwcPHlRwcLACAwMdLkTbbDbZbDb9+++/Dl8/efKkkpKS7DXv2bNHc+bMUXBwsCwWixITE/XBBx8oKSlJderUUVRUVLr3SUlJydIi+rx58/T2228rKChIbdu21bvvvquQkBAFBATcdDG9atWqqlSpkqZMmaJp06YpJCREffv2TZNZvHixEhMT7f/+559/VKZMGft7G4ahgwcPasaMGfbMhQsXZLPZlD9/fiUmJiopKckli+gWi+Wmu+xvtGfPHklK9xDVhIQETZs2TT/++KNOnDihggULqkaNGurXr5/Kli1rzy1cuFCDBg3SyJEjVa1aNX388cfatm2bAgMD9eCDD+qtt97K9K8FUlJSNGjQIC1evFjdu3dP9/11tYMHDyo5OVklS5a0P3T1ekOGDNH58+ez/fBXm82mhx9+WH5+flq3bl26ZwU0atRIVqtVv/32m/0vFK5cuaJp06bphx9+0PHjx5UnTx7dc8896tOnjyIiIpy/yWzau3evJk2apB07dig+Pl4lS5ZUq1at1Llz5wy/D+vXr9fo0aP1119/qUiRImrdurV69OiRLpucnKyvv/5aS5cu1ZEjRxQeHq6HHnpI/fv3V6lSpW657lq1amnhwoUyDOOm/y0DAAAgd2MRHQAAk8XHx6tDhw46duyYGjVqpHLlyuno0aOaO3eudu3apQULFtgXzGw2m3r27Km1a9eqXLlyat++vc6ePauVK1fql19+0cyZM9McCzJixAjNmDFDxYsX15NPPqmzZ89qxYoVWrdunaZOnaqaNWtmWNOQIUM0f/58lS5dWmXLllVoaGia19etW6devXopPDxcTZs2VWhoqH755RcNGTJE//77r3r37u3U96Jjx472h2jezMMPP3zTzL59+yRdOx5m4cKFCgoKUnJysq5evaqFCxcqKSlJefLkyXAR/ezZs6pevXqm72+1WjVnzhz5+fnpo48+0oULF/T5559nqX5JeuSRRzR58mTdd999mjdvnl599dU0rxuGoZkzZ9r//dNPP+l///uf3n33XbVt21Y2m02GYahly5Z677337Ll27drpzJkzGT589VacPHkyw4eJZiQpKUk7d+7UkCFD7DWlunr1qrp166bNmzerVq1aatiwoc6cOaOffvpJO3bs0Pfff5/mGBRJOnDggD744ANVrFhRTz31lH7//Xf98MMPSkhIcHjWumEYGjZsmNsW0CXpxIkTkpTul1+psvJzm5GAgAC1aNFC06ZN09atW1W7dm37a3/++aeOHTum559/Ps0RP6+//rp+/vln3XvvvXr22WcVHx+v5cuXq2PHjlq8eLFLFppvZs+ePerQoYNSUlL02GOPqVChQtq5c6fGjBmjU6dOaejQoWnycXFx6tq1q+677z61bdtWGzZs0Oeff669e/fq888/ty9mJycn6+WXX9bGjRtVq1Yt1a9fX0ePHtVPP/2kTZs2adGiRVn+SxJHSpQoIavVqvPnz3MuOgAAgI9jER0AAJNt2rRJR48e1dNPP60PPvjAfv2jjz7S8uXLdfToUd1xxx2Srj3scu3atXr44Yc1ceJE+87MH374Qa+99pomTpxoP4953bp1mjFjhqpUqaKZM2faj4749ddf9corr+j111/XihUr0u3uXLJkieLj4zV16tR0x1FI0uXLlzVw4EDlyZNHixYt0u233y5J6tu3r5544gl9+eWXio6OVsGCBbP9vXjttdfk7++vvHnzKjw83H7darVq6NChOnv2rF5//XWVK1dOSUlJGS5s2Ww2JSYm6ty5c/ZrTZo0kcVikSQNHDhQq1at0tatW9ONS3Xx4kVdvHgx3e5p6drO5tRfaoSHh2v27NnaunWrHnroISUmJqpFixYKDQ3Vli1b1KlTJ3Xu3Dnd+dcxMTF6+umn7QvSjRo1UqNGjdLN9f333+vvv/9WoUKFdO7cOdWtW1eLFi3SJ598ombNmunq1auSrh0P4w6JiYk3PYKkSpUqaf7t5+en559/Xh06dLBf++OPP7R582b7LxFSVa9eXcOHD9e6devUokWLNO/z9ddf6/nnn9dbb70lPz8/Wa1WPfroo1q3bp2uXLmS7hc9kjR8+HDNnz/fbQvo0rWfVUkKCQlx+Xu3atXKvnv/+kX0H3/80f56qosXL+rnn39WuXLlNGfOHPvPbIMGDfThhx9q27ZtbllE/+qrr2S1WjVu3Dg1b97cfv2pp57S/Pnz9dZbb6XZVX/27FlFR0fbf/litVr1/PPPa+3atVq9erWaNGkiSfrmm2+0ceNGvfzyy3r99dft46dPn66RI0dq2rRpevPNN2+p9tSf9ev/EgQAAAC+iUV0AABMlrpb8tChQ4qPj1e+fPkkSW+88YbeeOONNNnFixdLurYQfP3id9OmTTVmzJg0x0d89913kqT+/funWfhs0KCBmjZtqpUrV2rDhg165JFH0swRFxen6dOn64EHHsiw3vXr1+vs2bOKiIjQnDlz0ryWL18+nThxQtu3b89wUfhmMnog6OXLl9WzZ0+dPXtWvXv3VocOHdSwYUNFRUXp7bfftucuXbqkDz74QAMGDMjyw0Cvd/1Z6qlnkN945I10bYf19Qu2oaGheuihhyRdWzhNXTw9evSoJKlcuXLp3uP06dOSlOmu7qSkJI0bN05BQUFq166dJk+erEKFCumFF17QpEmTNGnSJD399NOSpKJFi2bnVp0WGhqq//77L9NMt27dJF07P33//v0aNWpUmsVdSXrooYfsfyWQ6siRI9q1a5eka0fW3KhkyZJ644037DuRw8PDVbNmTS1fvlz//fdfugXhESNGaPbs2apatarbFtAl2eu7/pcyrlK1alVVqVJFK1eu1LBhwxQQEKCUlBQtX75cFSpUULVq1ezZPHnyKDw8XOfOndORI0dUvnx5SdKjjz6qRx991OW1OfLJJ5/ok08+sf87KSlJ27Zt04ULF5SYmKiTJ0/afxEnScHBwWn+IiM8PFydO3fW66+/rjVr1tgX0ZcuXSrp2pE1Y8eOtefj4+MlXfvl5K06e/asJPf9kgoAAACei0V0AABMdu+996ply5ZaunSpHnzwQVWpUkURERGqU6eOmjZtmmax/NChQwoJCbEviKUKCQnR448/nubaX3/9JUkZnn189913a+XKlfrrr7/SLaI3atTI4QK6JB0+fFjStYXm1MXmG508edLxDWdDXFycevbsqX379qlevXrq1auXpGtnFS9atEjdunVTiRIlZLPZ9Nprr+mXX37R3r17NXv27GwvfN1zzz32Hf+//PKLpGu7WmfMmKG5c+fq/vvvl81mU0pKSpbeLyYmRlL6ndlS1hbRJ0yYoGPHjqlDhw5pFhk7duyov//+W23btrX34rbbbstSTbeqVKlSN+1tv379JEk1a9bUyy+/rEWLFqVbRJeufQ/mzp2rLVu2aO/evTp//rx9R3JG3+NmzZql+6uJ1B4bhpHm+vz583Xy5ElVrFhRe/fu1S+//JLu5zynpP4SLHUx90bt27fXnj17tGbNGqeOG2ndurVGjRqljRs36qGHHtLWrVt16tSpNDv9pWvHv7z55psaPny4oqKiVL58eUVERKhGjRqKiopy6hdNztq0aZOWLVumHTt26NChQ0pOTk5zRNX1SpYsme4on0qVKkn6v19MSdLff/8tSWmOO7qeKz6DTp48qXz58vEAWAAAAMj/5hEAAJDTPv74Yy1YsEC9evVS2bJl9fvvv6t///5q2bKlLly4kKX3uHLlihISEtItKGb3gXh33XVXpq+nvv/gwYO1b9++DL+effbZbM2Zke+++05PPfWUDhw4IElpjofp2bOnrly5omHDhikxMVF9+vTRL7/8oqZNm+qbb75xaudov3799M4778hms2nFihWqVq2aAgICdOzYMUnXFnGHDRuW5pgZR1JSUvT7778rLCxMkZGR6V5PXUQvXrx4huPXrVunKVOmqGDBgunOly9UqJDGjh2rihUr2h/ambrImNPuuecebdiwIUvZBg0a6O6779bGjRu1Y8eONK/FxMSoWbNm+vLLL1WoUCG9/PLLmjJlisOzzaWMd/Q7cvLkSb3yyiuaN2+eihUrpvfff99tR3Kk/vXCsWPHMtyNfvr0aSUnJ6dbKM6qFi1aKCAgwH6Ey48//ig/Pz+1bNkyXfaZZ57Rzz//rCFDhuj+++/X4cOH9d5776lJkybauXOnU/Nn1yeffKKOHTtq/fr1qlWrloYOHarFixdn+IsV6dri/41SF9yv/2wzDEP58+d3+Bm0fv36W659/fr1uueee275fQAAAOD9WEQHAMBkcXFx+vPPP3XnnXfqlVde0ejRo7VmzRp17txZhw8f1rfffmvPVqhQQYmJifYdyNd7/PHHdd999+nixYuS/m9hNaPd4rey+Jq6SHjw4MEM33fWrFn2XdjO2LFjh6KjozV48GCFhIRo+vTp6TIRERF6/vnn9csvv+jxxx/Xzz//rE6dOmnChAn2ncA3c/DgQU2fPl3du3dPc/3777/XsWPH7EfLXH9ec1b9/PPPOnbsmBo3bpzmQY+pTp06JcnxTvRChQopf/78GjBgQKYPNNy0aZOCgoLctojeuHFjbdq0Kcu7fF955RVJ0sSJE9Nc//TTT5WQkKCvvvpK48aNU5cuXdSgQYN0vwC6XkbfR0datWql1157TXnz5lXfvn0VFxeX5uz1nFSmTBmVLl1aly9f1vbt29O8dvbsWZ04cUJly5Z1+sz0YsWK6YEHHtCqVat0+fJlrVy5UrVq1VLJkiXTzfXnn38qNDRUHTp00PDhw7Vw4UJNmjRJCQkJaY5AySmnT5/WlClTVL58eS1btkxDhw5V+/btFRERYT87/kZHjx5VQkJCmmuHDh2SpDR/kVG+fHldvHjR/t/S9ebMmaPZs2ffUu1JSUlauXKl/fgYAAAA+DYW0QEAMNm8efPUvn17rVmzJs31ihUrSpLOnDljv5a6e/PDDz9UUlKS/frmzZt17NgxVa1a1X70wFNPPSVJGjt2rH1hXbq2u3LlypUqWbKk6tWrl+16H3zwQRUuXFg//PCD9u/fb79us9k0fPhwvffeezp//ny231eSJk+erGeeeUabN2/WY489piVLlqhOnTrpcsuWLVOrVq109913Ky4uTrVr19bAgQMd7rpPSEhQTEyM5s6dq927dys+Pl5RUVEaOXKkfVe4JJ0/f17jx49XhQoV7N+/7IqPj9fIkSPl5+enF154IcNMak8dLaJXq1ZN33zzjf3M84yknj1fvXr1dMec5JRHHnlEpUuX1qeffpql/KOPPqoKFSro999/t593Lv3fLxGuXxSNi4vTqFGjXFLn9Q+EbdOmje6++25NmTJFR44cccn730zHjh0lXduFff0O+IkTJyolJSXNAzad0bp1a128eFEjR47U2bNn1bp163SZ3bt3q3379ul+gVG5cmVJaT9Xcsrp06dlGIaKFSuW5md0yZIl+vnnnzMck5iYqM8//zzNv1N/kXb9kTypD54dP358mh3/69at09tvv60lS5bcUu1ffvmlAgICHO6YBwAAgG/hTHQAAEzWpk0bzZo1SwMHDtSKFStUsmRJnTlzRitWrJC/v7+aNWtmzz7//PNav3691q1bpxYtWqh+/fo6d+6cVqxYoeDgYA0bNsyeffjhh/XCCy9oxowZeuKJJ9SoUSOdPXtWq1atUlhYmEaPHu3U4mtYWJhGjBih3r1766mnnlKTJk1UvHhx/fHHH9q7d6+aNWum+vXrO/W96Ny5s/bv36+nnnoqwwX+uLg4ffDBB1q7dq169OihyZMnq0uXLtq8ebOeeeYZPffcc2rYsGG6ozKio6O1e/duSdceVPjoo4/q4Ycf1oMPPmhfyE1OTtaAAQN0/PhxffPNNxl+b5YuXapt27bpmWeeyfCs+cTERPXs2VMnTpzQc889l+ZBj9c7fvy4QkJC0hxRc6OqVava/++MdmhPmTJFKSkpatiwocP3cLWAgAANHDhQPXr0UFRUlP2Bqo74+/vr5Zdf1qBBgzRp0iT7cS3169fXvn371KVLFz3yyCM6fvy4fvnlF/sDW6//pc+t8vf31+DBg9WhQwe99957mjp1qsve25Ho6Ght3bpVK1euVMuWLfXII4/IYrFo69atqlSpkrp06XJL79+kSRPlyZNHc+fOVWhoaJrPiFR16tTRnXfeqdmzZ+vvv/9W1apVdeXKFfvi9a0u5GdFpUqVdPvtt2vz5s3q2bOnSpcurW3btikmJkYFChTQhQsX0p0dX6BAAU2bNk27d+9WhQoVtHHjRh08eFB169ZNc58dO3bUunXrNH/+fO3cuVN16tTRxYsXtXz5coWHh2vw4MFO171//3598cUXGjRoUJqHNQMAAMB3sRMdAACTlS9fXt99952eeOIJ7d69W7NmzdJvv/2mWrVqadq0aWl2YgcGBurzzz/Xm2++qcDAQM2ZM0e///67GjZsqPnz56tmzZpp3nvw4MH66KOPVKxYMS1cuFCbNm3So48+qu+++y5dNjsaNmyoOXPmqH79+lq/fr3mzp0rf39/DR8+/JaOiQgODtYnn3ySZgE9dSfvli1bFBUVpbVr16pp06Z67LHHVKxYMc2ePVvPPfecYmJi9MYbb6h27dqKiopSr1697At0jz32mOrWrauPP/5YGzZs0IQJE/T000/bF9D//fdfdenSRb/++qsGDBig2rVr2+e/fpfrnj17NGfOHPtDW6935MgRPfvss9q0aZPq1auX4SKeYRjavHmz9u3bl2a39M0kJydL+r8Hbm7btk1z5sxReHi4/diZ69lstkyPRrkVjRs3Vrt27dS/f3/t3bv3pvmWLVuqVKlSWrt2rf0Yob59+6p79+5KSkrSrFmztHv3bj3//POaOXOm/P39tWbNGpeeYX7//ferefPm+u2337Ry5UqXva8j/v7+GjdunIYMGaLg4GB9++23OnLkiJ5//nnNnj37lhdmw8LC7AvKTZo0yfD9goODNWvWLPXq1cv+ENelS5eqRIkSeu+999SjR49bqiErgoODNW3aNDVp0kRbt27VnDlzFBAQoLFjx9r/SmPZsmVpxpQrV06ffvqpveZLly6pS5cu9p3h17/3V199pf79+8tms2nu3Ln6448/1LRpUy1atEj33nuvUzUfP35c3bp1U926dfXcc885f/MAAADIVfyMnPr/YQEAALjAqlWr1LNnT0nSnXfeqWHDhqlWrVrpcgcPHtS3336r77//XhcvXtSTTz6pDz/8UNK1xeeMzjY/e/asZs6cqenTpys5OVnDhg1Tu3bt7K937txZGzdu1NChQxUSEqKPP/5YSUlJ+vXXX+1nr584cUIzZszQt99+q6SkJDVr1izDXf7R0dHatm2bfVH+jTfe0EsvvZSl78HUqVP18ccfa9q0aSpVqpSeffZZnT17Vj169FCfPn3S5Vu0aKFz587p999/z9L7Z1dSUpK6dOmiv/76S8uXL3f6IZmAJ7l69apatmypgIAAzZ49O8vPVwAAAEDux3EuAADAozVo0ED33nuvatWqpT59+jg8gqZixYoaNmyYBg8erD///DPNUSmOHg76yy+/aOrUqapSpYref//9NEeoSFKHDh104MABDR8+XNK1vxro169fmsW1lJQU/frrrwoMDNSbb76p559/PsO5OnTooMOHDysyMlItW7ZUVFRUlr8HqeffJyYmqmzZsho+fLi+/PJL+4M7M8pfvnw5y++fXcHBwfriiy+0YcMGFtCRawQGBuqtt95S1apVWUAHAABAGuxEBwAAHi8pKSnHHp55+PBhlStXzuFDSbPi6NGjCg4OVvHixV1Y2f85e/aszpw5o5IlS9qP7jAM45ZqBgAAAABkDYvoAAAAAAAAAAA4wINFAQAAAAAAAABwgEV0AAAAAAAAAAAcYBEdAAAAALxMYmLiTTOc3AkAAOAaLKIDAHKVn376Sd99953D1xcvXqwffvghS++VkJCgpKQkpaSkZHn+q1evKiEhQefPn8/yGHiu5ORkXblyxewyAOQCP/zwgy5cuGD/95UrVzR8+HC99dZb2X6v8+fP68EHH1Tnzp0VFxeXYcZms+nxxx9Xt27d9N9//zldNwAAAKRAswsAAMCVPv/8c8XFxempp57K8PWRI0eqQIECeuKJJ276XkOGDNGyZcucqqNo0aJav369U2NhjpSUFJ0+fVqHDh3Svn37tHPnTv3666/q06ePOnbsaHZ5ALzYyZMnNXDgQBUpUkSrVq1SUFCQQkNDtX//fm3fvl0vvviiKlasmOX3mzhxouLj42Wz2ZSUlKSDBw9KuvaLv+DgYFWoUEE//vijDh48qHvvvVdFihSxjzUMQ5cvX1ZoaKj8/dlTBQAAkBUsogMAvNq5c+f0999/KyQkRCEhIQoICFBQUJB9QeFGgYGB9tcNw1BiYqIKFiyoUqVKpcvWrl1bhQoVUmBgoAICAtK89vPPPysuLk7t2rVT3rx57devXr2qpKQkhYaGuvZGkSNOnz6t7t276+zZszp16pSSk5Ptr4WGhqpUqVI6cOCAiRUCyA2mTJmi5ORkde7cWUFBQfbrffv2VYcOHTR8+HDNmDEjS++1detWzZ49W5K0adMmRUVFpXm9WbNmGj16tMaNGyfp2l9gLVmyxP66zWaTJK1evVqlS5e+ldsCAADwGX4GB+UBALzYqlWr1LdvX/sCekJCgmw2mwoUKJBhPj4+Xn5+fsqbN68Mw1BSUpI6d+6sPn36ZGverl276pdffvHIRYjo6Ght3rxZ+/btM7sUr/Dqq6/KZrPp9ttvV0hIiKZOnao33nhDL774ovz8/Oy57du3a9euXRm+R0BAgKKjo2+5luTkZH355ZdavHixTpw4oTx58qhu3br69NNPb/m9gRsdPHhQzzzzjAYNGqQ2bdpkmImPj9ekSZO0YsUKnTlzRvfcc48GDRqkyMjIdNmkpCR99dVX9p/fihUr6vXXX9eDDz7ospqHDRum33//XWvWrHGY2bBhgyZOnKi9e/cqPDxcTz31lHr37q3AwPT7hywWi8aNG6ddu3bJz89PzZs314ABA5QnTx6X1fz333/riSeeULFixbRixQoFBweneb1Pnz5avny5Bg0apE6dOmX6XkePHlXbtm118eJFTZkyRdu3b9eECRP0ySefKCIiQklJSQoPD9f8+fM1ZcoUde3aVTVq1NC0adO0e/duffTRR0pOTlZiYqKaNm3q0vsEAADIzdiJDgDwak2aNJHFYrH/Ozo6WocOHXJ4lMoTTzyh8PBwzZs3z10lwsONHz/e/n8fPHhQU6dOVXh4eJoFdOnawtyECRMyfI/w8HCXLKKPGzdOU6dO1QMPPKBHH31U586d059//nnL7wvc6OzZs+rWrZsuXrzoMJOQkKDOnTsrJiZG1apVU7NmzfTrr78qOjpaCxYsSHP8iM1m06uvvqq1a9eqYsWK6tChg7Zt26aXX35Z06ZNU926dW+55unTp2vu3LkZ/uVQqh9++EEDBgxQaGionnjiCSUlJWnq1Kk6ffq0RowYkSa7efNmdenSRTabTVFRUQoLC9PixYv1999/6+uvv073GeCMlJQUDR48WMnJyerfv3+6BXTp2tFhGzdu1OjRo1WpUiU99NBDGb5XTEyMevbsqbNnz6pPnz6qV6+eQkJCNGHCBB08eNB+TNn69es1bdo03X333erbt6/8/f31zz//aPPmzSpQoIBq1ap1y/cFAADga1hEBwDkOmfOnFGVKlUcvn7vvfe6sRr3GzVqlC5fvmx2GblO6hE9P//8s0qWLGm/3qlTJ/31118umeP777/XHXfckWYBLzsPts3I0aNH1bhxYz355JP68MMPXVGmT9i0aZM6duyoXr16qXfv3maX41IHDhxQjx499M8//2SamzRpkmJiYvT4449r9OjR8vf3V+/evdW6dWu99dZbmjNnjj07d+5crV27Vvfff7++/vprBQcHy2azKTo6WoMHD9aKFSvSHGOSHSkpKRo3bpwmT56cae7MmTMaNmyYgoKCNGvWLN19992SpBo1aujtt99WVFSUfYE6MTFRAwcOVFJSkr744gs98sgjkqSmTZuqS5cumjdvntq3b+9UvdebNm2atm3bpho1ajh8FkexYsX04YcfqkePHurdu7fGjx+v+vXrp8kYhqHPP/9cJ0+eVOvWrdW9e3dJ0l133aWAgABt3bpV0rXvVeov+9599137med169aVn5+fLBYLi+gAAABO4EkyAIBcJ2/evBo5cmSGXyVKlDC7vBxXsmTJbD2gzpddunRJycnJcnS6XVJSki5duiSr1Wo/CsLf31+BgYH2Lz8/v3Rn5jvr5MmTuu2229LsgOXBf3ClQ4cOqV27dpKuHUvlyNWrVzV37lwFBQVpyJAh9p/D8PBwvfTSS9qxY4cOHTpkz3/77beSpKFDh9p3WwcEBKhHjx46duyYNm7c6HTNb7/9tiZPnqzu3btnugt98eLFSkhI0LPPPmtfQJekp59+Wrfffru+++47+7U1a9bo2LFjatKkiX0BXZLq16+vGjVqpMk6a8+ePfr0008VHh6ukSNHZrqzvVGjRho6dKisVqu6du2qKVOmpPkFmp+fnyZMmKB3333X/l6tW7fWwIEDNXXqVH311VeSJKvVquHDh+vdd99VeHi4Dh48qIMHDyowMFCfffaZGjRokKZvAAAAyBp2ogMAcp2goCCHu83DwsJuOj4hIUFBQUEKCgpy+s/5DcOQzWZTYmKiQkJCMjyLF+Z78sknM9yN+8477+idd96x//vll19W0aJF3VgZkDPOnDljX7DN7Fzx2NhYxcfHq169eipcuHCa11LPOF+/fr0qVKigs2fP6q+//lLZsmVVtWrVNNnatWsrKChIGzZsUIMGDZyqOSEhQZ999pmaNGmipUuXOsxt2bJFkvToo4+muR4YGKi6detq7dq1N82m3t9nn32mS5cupXlwdHYcP35cXbt2VVJSkoYPH67y5cvfdEyHDh0UFhamoUOHavTo0Vq9erWGDBliP38+ICBAzzzzjD1/9OhR5cmTR/Xq1bNfW7dunfr375/pPOHh4dqxY4dT9wUAAOCr+P/RAwBynXPnzikqKsrh6zc7zqV9+/Y6cOBAluZq3LjxTTPffPON6tSpk6X3u9H27ds1adIk7dixQ/7+/ipfvryio6P1xBNPOFzgz8qDRRs1aiTp2m7MQ4cO6auvvtKGDRv02GOP6c0330yTPX/+vD777DP9/PPPOnv2rEqWLKkGDRqoR48eKliwYLbvaeHChRo0aJAGDx6smJgYrVq1SuXLl9f48eM1ffp0LVy4UEWLFtXIkSN1//33q2/fvvrpp5/0008/qUKFCmnea+DAgVq0aJEWLVqku+66K9u19OzZU8nJyfad5IsWLdLmzZvVunVr1alTRzabTcnJybrzzjvTnL3vSjcePbR58+Y0167/+Um934weaHt9T1OPcLle6vcp1fXvkdqTkSNHpnvAZEZz3njUybJlyzRnzhzt27dPM2bMSLeQumfPHk2aNElbtmxRQkKCypcvr44dO6pt27bZ/n45uueb/RxfunRJX375pZYvX67jx4+rYMGCatSokfr166dChQqlua/rTZw4URMnTrT/+/r/riZMmKCJEydm+N94Rv8dXv99bt26tebNm6dFixbp4MGDWrt2rfLly5emjl69eqldu3YaNWqU1q9fr5SUFNWoUUNDhw5VmTJlnPqe1axZU7Vr175p7tSpU5KU4X9XpUuXVlBQkP0XUJllg4ODVbJkyTS/rJo4caImTJigzp07a+DAgfbrY8eO1RdffKFu3bqpX79+9usff/xxlv7a49SpU/Lz88uwjrJly+r8+fOKj49Xvnz57DVfv2P9+qxhGIqLi1NERMRN571RXFycXnjhBZ06dUrt27fXypUr9dtvvykwMDBLf1kyYsQIffjhh9qxY4dee+01LVmyxH6c1PUCAwPTfV9Sf1E8ZcqUDH9pER0dneX/9w0AAAD/h0V0AECuU7RoUYcPFk1ddMtMkyZNVLt27QwXKFL9/PPPiouLU7t27TLcqZiSkiKbzabLly87vYN56dKlGjhwoIKCgtSsWTPlz59fq1ev1uuvvy6LxaJBgwY59b7X++233/Tqq69KkipXrpzuuJtTp07pueeeU1xcnO6//341a9bMvlC6Zs0aLVy4UPnz53dq7nHjxum+++5T9erVtXHjRj399NMqVqyYHnvsMS1cuFBjx47Vt99+q1atWumnn37SsmXL1KtXL/v4pKQkrVq1SnfeeadTC+iS1Lp1a/v/ffXqVX366aeSpOrVq6tZs2YKCgqyH02RU4vo3bp1s//fX3zxhUqWLKmWLVvar11//npW5c+f3/6+ly5d0qxZs1SlShU1bNgwTcYVhgwZovnz56t06dIqW7ZsusW+devWqVevXgoPD1fTpk0VGhqqX375RUOGDNG///7rkvPGb/ZzHB8fr+eee04HDhxQ/fr11bhxY+3fv19z587Vtm3btGDBAoWFhalkyZL279vx48e1dOlS3X///br//vtvucbrXb16Va+88op+++03VahQQRUqVMhwcfX06dP2z5jWrVtr+/btWrdunU6ePKlFixY5ddRPVo8eunTpkiQ5/PzKly+fTp48maVs/vz57Vnp2s/8mjVrNHPmTLVp00Z33nmnDh8+rK+++kp33nmnevbs6XTN4eHhGf7FUerP+7///qt8+fLZay5SpEi6bIECBSRdO17JmUX0n376yX5UzJtvvqn77rsvW+PfeOMN1a1bV4MGDdIbb7xh/29qyZIl+vjjjxUcHCx/f39dvHhRO3fuVMOGDZWUlKTo6Gj7Z+HFixd1+vTpdO99/S8NAQAAkHUsogMAvNY///yjCxcu2I9ekaTLly/LZrPp4MGDGY5JTk5WYmJimteTk5Nls9nsOxL79u1707kPHTqkuLg4de3aNd2OYFc4deqUhg4dqpCQEC1YsMB+xvmrr76q5s2b65tvvlGXLl1UrFgxp+eIj4/Xa6+9pg4dOqh79+7KkydPusy7776ruLg49enTRz169LBfHzZsmObOnau5c+fq5Zdfdmr+atWq6auvvtLevXvVqlUrSdLs2bPtvyw4ceKEpGtnFBcuXDjdIvqvv/6q+Pj4NIvQt2LBggX6999/JV078uKZZ57R3XffneMP47x+x+0XX3yh0qVLp7nmjPz589vf4+jRo5o1a5buuuuuW37fGy1ZskTx8fGaOnVqugchStf+exw4cKDy5MmjRYsW6fbbb5d07b+xJ554Ql9++aWio6Od+ouGVFn5OR47dqz279+vd955R88++6z9+gcffKBvvvlGCxcuVIcOHVSmTBn792jTpk1aunSp6tat6/IHi3755ZcyDEPz589XtWrVHObmzZunpk2basyYMQoKCpLNZtNTTz2l2NhY/f333+n+MsOVUhdaM9oBLV3bYX7lypUsZy9cuGD/d2BgoD788EO1adNGw4cP18yZM/Xee+/JMAyNGjXK/our7PL393d4ZFfqe6Y+dDm15ozyN2az65VXXlHVqlVVt25dBQcHa/PmzQoLC1NgYKAaN24sq9WqTZs2pRv3xBNP6MiRI/bjc6ZNm5bm9Vq1aumDDz5QcHCwfvzxR82fP18REREaPHiwrl69qhIlSth3/L/22msO6+NoKgAAgOxjER0A4LUmT56sBQsWZPhaZse5nDp1Kt3rme1eN8Py5ct15coVvfLKK2keEpo/f36NHTtWp0+ftv/iwFkXL15Uq1at9Prrr2f4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5+zZoKAgffTRR2mORvn333/17rvvqmjRoho8eLAk6c0339Svv/6q999/X7Vq1VLp0qWdqvnDDz9Up06dNHHiRH355Zey2Wyy2Wxq3LixnnvuuTTZgQMH6tChQ5o3b54WLVokwzB09epVVatWTX369HFq/ozMnTtXM2fOVIkSJRy+b+rxP44W0Q3D0JgxYxQUFKT3339ffn5+Gf6iJiu/vLl+5z0AAACyhkV0AIDXSl0AvV7qYnqqoKAgBQQE2B98l7q7NFWePHn0yiuvZGm+/fv3288iT915mpUjH5zVunVrlS5dWp9//rlWrVqlq1evqlKlSurRo4eefvrpHJv3eiVKlNCCBQs0adIkrVy5Ujt27FDRokX1/PPPq1evXm4/S75169b6448/VKJECdWtW/eW3itPnjwaN25cmgftZbYAlXr+u7+/f5oxfn5+SkxMvKVasuree+/V6NGjNWnSJPXu3VuFCxdW8+bN1bt3bz3xxBMOxw0dOlQFCxbUihUrtHbtWuXPnz9NPm/evPryyy/1wQcfaOTIkQoODtYDDzygBQsW6LPPPnN6EV2SGjZsqDlz5mjSpElav369kpKSVL58eQ0fPtxtP8f58+fX3Llz9cUXX2j58uWaPXu2ihcvrrZt26pnz54Oz6EeO3asxowZo3Xr1um///5TkSJFFB0dbX+9VKlSmjRpkkaPHq1BgwYpb968atiwoebNm+fSRVgzvfDCC6pZs6a++eYbxcXFqVKlSurWrVu6z1JJat68ue666y599dVX+uuvv1SyZEn72dypDMPQwIEDdeHCBY0fP95+vEq+fPn07rvvqlu3bnrjjTc0a9Yspz5fixYtqoULF2rmzJn69ddfFRgYqKioKLVp08a+SztVWFiYZsyYoQULFmjFihW6evWqGjZsqOeff94lD+BMSkrSp59+qqlTpypfvnyaPHlyhg8rPXfunL7//ntJcvjLAz8/P40bN067du1S5cqVJcn+C4Lrpf77+uNebpT6PQcAAEDW+Rm54W9NAQA+KykpSRMnTlRISIh99/n1Zs+erYSEhHQLCikpKbLZbEpKStLTTz+tMmXK3HSulStXqnfv3vZ/BwcHa8uWLQoNDXXNzcB0FotFTz31lIYOHarnn38+zWv//POPjh49qpo1ayokJMR+/fz587p69arDneAAfEtSUpK+//57ffHF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cZwLAAAAAAAAAHipxo0bZ/r66tWrM7weHx+vO+64I821AgUKKDY2NtP3i4+PV0BAgMqUKWO/lj9/fp08eTLD/KRJk1SyZEk1bNhQ0rVF+AYNGujFF19UcnKy3nvvPfXr108LFizIdN6s2LVrl5YvX659+/bp1KlTCggIULFixRQZGanHHntMVapUcep9WUQHAAAAAAAA4BM4E/3/BAYGKiQkJM210NBQWa3Wm44LDg5Ocy0sLCzDcRs3btTMmTP19ddfKzDw2lJ06rEvqd577z01adJEhw4dsu9Wz659+/bpvffe0/nz5/XYY4+pS5cuKlasmGw2m06fPq3NmzerZ8+eqly5st566y2VLl06W+/PIjoAAAAAAAAAeClHO81vplChQjpz5kyaa5cuXUq3QJ7RuMuXL+vSpUvKmzevpGu7028cFxcXp/79+6t///6qVauWw/crXry4JOno0aNOLaLPnz9f48aNU79+/fT000+ne71KlSp66KGH1KdPH3399dd65plnNGLECDVo0CDLc3AmOgAAAAAAAAD4mOrVq+vAgQO6ePGi/VpMTIxuv/32TMeVKVNGRYsW1bZt2xyOO3v2rLp27aqGDRvqxRdftF//77//1Lx58zS71lPfp2TJktm+hwMHDujrr7/W7NmzM1xAv15AQIC6dOmiiRMn6oMPPkhz3zfDIjoAAAAAAAAA+JjKlSurQoUKGjNmjFJSUrR7926tXLlSjRo1UkpKii5evCibzZZunL+/v6KiojR+/HhdunRJ586d0/Tp09WoUSNJUmJiorp06aLChQtr4MCBSkhIUEJCgpKSklSkSBHlzZtXb731liwWi9auXashQ4aoXr16aR5wmp17+OGHH1S2bNksj6levbp++ukn5c+fP8tjWEQHAAAAAAAA4BOMXPh1K0aOHKnVq1erXr16ateunVq2bKkGDRro+PHjqlWrlvbv35/huFdffVVBQUFq0KCBGjVqpNDQUHXr1k2S9Pvvv2v37t3asmWLatWqpfvuu0/33Xefhv0/9u49zsZ6////c81gWBhGTskg0bZYI5JDSQoVaqSDDk7ZqcghKeWQQyEiKaWDdnaF7N2mHZ3syuHbrvZWk1MulkNJiSK7jRlrGoz1+6Nf89ljrDHXmmvW+1qzHvfbbW41az3f7/fr6tXt+uPt8r4mTpQkPfPMMzpy5Ih69+6tCRMm6Oqrr9bcuXMjvoaEBPtb3HbHeEKhUHH/W8cUy7JMlwAAAAAAAAA4wu/3my4hpvzh75NNl+C47TdMLNb4YDCojIwMpaSkqHnz5kUed/LkSa1bt07Hjh1TmzZtVLZs2WLV4WZx+WLRU28uwWBQgUBAPp9PXq+3QN6yLFs3JPJm8+HGFNZnt10D+cjG0GP35p1agx5HL2+qJnoced6NNdFj82vQY7N5N9ZEj82vEQv5WOqxG2uKhbzJHkdjjXjLA8Xl9XrVsWNH2+MSEhIKfWFoaRKXm+gAAAAAAAAAgNKhU6dO8ng8Rc6vWrXK1vxsogMAAAAAAACIC6FQ0TdaETuGDx9eovOziQ4AAAAAAAAAiFnXX399ic5v/9WlAAAAAAAAAADECTbRAQAAAAAAAAAII6LjXA4ePKgPPvhA27dv14EDB5SYmKgaNWrI7/fryiuvVJUqVZyuEwAAAAAAAACKJ2S6AETT8ePHtW/fPp199tk6cuSIqlevHtE8tp5EP3jwoB566CGlp6dry5YtSktL02233aYbb7xRPp9P//73v3XVVVfpscceU1ZWVkQFAQAAAAAAAAAQqezsbI0ePVoXXnihunXrpl27dmnGjBnq2bOnDhw4YHu+Im+if/rpp+rRo4fOOeccrVmzRtOmTVOvXr3UsWNHderUSbfccouefPJJffTRRzpx4oTS09O1bds22wUBAAAAAAAAABCpxx9/XP/+97/10EMP6eTJk5Kku+66SwkJCZoxY4bt+Yq0ib5z506NGTNGzz33nEaMGKHy5cuHzSYnJ2vSpEkaN26c7r77bh05csR2UQAAAAAAAAAAROKjjz7ShAkT1K9fv7zPzj//fI0cOVKffvqp7fk8oVCoSCcBZWVlqVKlSrYmj2RMSbMsy3QJAAAAAAAAgCP8fr/pEmJK4yVTTZfguJ29xpsuwXXatGmjWbNm6bLLLlOTJk20bNkyNWnSRCtXrtS4ceP0xRdf2JqvyC8WTUxM1Nq1a9WuXbsiT+62DfTfnXpzCQaDCgQC8vl88nq9BfKWZdm6IZE3mw83prA+u+0ayEc2hh67N+/UGvQ4enlTNdHjyPNurIkem1+DHpvNu7Ememx+jVjIx1KP3VhTLORN9jgaa8RbHkBBV1xxhZ544gnVrFkz77MdO3Zozpw5uuKKK2zPV+RN9H379mnQoEHatGlTge/atm2rChUqKDEx8f8mLlNGPXv21D333GO7KAAAAAAAAAAAIjFu3DgNGzZMPXv2lCTddNNNys3N1UUXXaSxY8fanq/Im+hJSUkqU+b08cOHD2vSpEn5Plu7dq3mz5/PJjoAAAAAAAAAIGqqVKmihQsX6osvvtCOHTskSY0bN1bbtm0jmq/Im+gejyfvSfOnnnpKSUlJOn78uO69915JUvfu3fPl69atq2PHjunYsWMqV65cRMUBAAAAAAAAgFOK9nZIlBZt2rRRmzZtij1PkTfR/9e8efPUuXNnffbZZxo2bFje52+88YbKli2rnJwc3XbbbWrevHmxCwQAAAAAAAAAwI5PP/1Ur732mr777jvl5uaqfv366tu3rzp16mR7roRICvB4PHruuedUpUqVvN8l6fHHH9frr7+uxx57LJJpAQAAAAAAAAAolsWLF+vOO+9UVlaWrrjiCl111VU6fvy4hg4dqr/97W+254voSfTf/b55/rvatWvrzTffVOvWrYszLQAAAAAAAAAAEZk3b57uvPNOjRo1Kt/nTz31lF5++WXdfPPNtuYr0ib6G2+8UaQd+lM31QEAAAAAAADALUIh9i/jQWZmptq3b1/g83bt2mnBggW25yvScS6bN2/W8ePHbU8OAAAAAAAAAEA03XDDDXrllVd09OjRvM+ys7O1aNEidevWzfZ8nlDozO+kzc3N1Y8//qgbbrhBX3zxhXw+nwKBgC6//HKtWrVKfr9fgUBA3bt31/vvv682bdroiy++sF2MJC1fvlxz5szR6tWrJUlvvfWWnn32WR09elQ333yzRo4cqYSEiI5ylyRZlhXxWAAAAAAAAMBN/H6/6RJiynlvlL53OX5zy8OmSzBu8ODB+X4PhUL67LPPVL58eTVp0kQej0c7duxQVlaWLr74Yr388su25i/ScS6JiYlFOqrlu+++k9/vV25urq0ifvfTTz9p6tSpqly5siTpn//8px5++GE9+uijat26tcaMGaNFixapf//+Ec3/u1NvLsFgUIFAQD6fT16vt0DesixbNyTyZvPhxhTWZ7ddA/nIxtBj9+adWoMeRy9vqiZ6HHnejTXRY/Nr0GOzeTfWRI/NrxEL+VjqsRtrioW8yR5HY414ywOQUlJSCnyWnp6e7/e6detGPH9ELxYNhUIaNmyYDh06lPe7JP3jH/9QcnKyDh8+HNGcY8eOVe3atfMes3/llVd01VVXqVevXpKkMWPG6KGHHir2JjoAAAAAAAAAoHSYPn16ic4f0Sb6LbfcogoVKuimm25SQkJC3lPqqampkqQqVarYnnPRokXat2+fxo4dq8mTJ0uStm7dqoceeigvk5aWpn379umXX35RtWrVIikdAAAAAAAAQLzixaJxIxgM6ptvvtGvv/6a99mJEye0bt06DRs2zNZcRd5ED4VCOnnypCTp0UcfLfDdhAkTTjtuypQpZ5z722+/1dNPP61XXnlF2dnZeZ9nZmaqfv36eb8nJiaqYsWKOnDgQLE20YPBYL7ff1/zf9c+0xi7a5CPbv50Y87UZ7ddA3n7Y+ixu/NOrEGPo5uPxhr02Nl8NNagx87mo7EGPTabj8Ya9NjZfDTWcHs+1nocjTVKW950j6OxRjzlT3c0MRDv/v3vf+vee+9VVlaWpP87ScXj8SglJcX2JnqRXiwqSd98842uu+66076Y87777lO5cuXynkoPhULKzc3V8ePH9fTTTxc6b25urm677TZ17NhRQ4cO1eeff66xY8dq9erVSktL0+uvv67mzZvn5Tt27KjZs2erVatWti70d5ZlKScnx9aYpKQkW2PIm827sSbyzubdWBN582uQdzbvxprIm1+DvLN5N9ZE3tm8G2sib34N8s7m3VgTefNrxFs+0j2yeHXeX6eZLsFx39w6znQJrtOzZ09deOGF6tmzp3r37q1//vOf+u9//6s//vGPGjVqlHr06GFrviI/iV6vXj2tWLHitN+daaO8MC+++KISEhIKvEFV+u1A+IMHD+b7LCsrS+XKlYt4PUny+Xz5fs/Oztbu3bvVoEEDVahQoUB+165dBcYUhrzZfLgxhfXZbddAPrIx9Ni9eafWoMfRy5uqiR5HnndjTfTY/Br02GzejTXRY/NrxEI+lnrsxppiIW+yx9FYI97yAAravXu3Jk6cqObNm6t+/fpav369unTpomHDhumFF14ouU30smXL5p157qQ333xT//nPf9S2bVtJvz2Znp2drYsuukg+n0/r1q1Tp06dJP12E8nKytLZZ59drDXD/TWXChUqhP3O7l+NIW82X9iYcH122zWQj3wMPXZn3sk16HF08tFYgx47m4/GGvTY2Xw01qDHZvPRWIMeO5uPxhqxko+VHkdjjdKaN9XjaKwRb3kU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bdmyRf/617+UlJSkiy66SMePH1e1atV02WWX6e6779YVV1yhihUrSpIOHDig++67T3/5y19sFQQAAAAAAAAAQKSef/55DRo0SCNGjMj77LrrrlPt2rU1d+7cktlEr1ixovx+v9q1a6cLL7xQ27Ztk9fr1d///ndlZGSoRo0auvbaa/PyOTk5GjVqlHr16qUlS5aoV69etooCAAAAAAAAAMeFTBeAaPjxxx/Vpk2bAp+3adNG8+fPtz2fJxQKnfF/nWAwqMsvv1zdu3dXlSpV9PXXX+u5557TY489pnPOOUcpKSl6+eWX1b17d/Xp00d///vf9cknn6hz585q0KCBLrnkEtuFlRTLskyXAAAAAAAAADjC7/ebLiGmNHhxlukSHLd78CjTJbjOrbfeqlq1amn27NlKTEyU9Ns7PUeOHKn9+/frr3/9q635irSJLknfffedXn31VZUvX1579+7V2WefrYyMDL3wwguSpM6dO6tly5baunWrkpKSNH78eHXv3t3m5ZU8y7IK3FyCwaACgYB8Pp+8Xm+Rxthdg3z08uHGFNZnt10D+cjG0GP35p1agx5HL2+qJnoced6NNdFj82vQY7N5N9ZEj82vEQv5WOqxG2uKhbzJHkdjjXjLwx420ePDpk2bNGDAANWoUUOtWrWSJK1fv14HDhzQa6+9pubNm9uaL6EooW3btmnt2rVKS0vTf//7X/34448qX768evTooe+//16SVK5cOS1cuFCPPPKIfvnlF23evNnmpQEAAAAAAAAAUDwXXHCBlixZopYtW2rz5s366quv1LJlSy1dutT2BrpUxDPRLcvSa6+9pjJlyigzM1M//fSTfv75Z6WkpGjbtm367rvv8rK5ublq27atVqxYoXbt2qljx462iwIAAAAAAAAAx3Emetxo1KiRZsyY4chcRdpEv+mmm3TTTTcpIyND33zzjZ566in9+uuvmjp1qrxer5566ilt3LhRN998s5KSktSjRw9Vq1ZN06dP12WXXSaPx+NIsQAAAAAAAAAAnMnhw4f1448/qkmTJtq7d6/+3//7f7r66qtVvXp123MV6TiXkydPasKECbr//vv1n//8RxdeeKFGjRqlu+++W+XLl9eDDz6Yt3n+3XffqX379urcubM8Ho9WrlxpuygAAAAAAAAAACKxZcsWde3aNe99nr/88otmzJiha6+9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r18/x+dNiHTgyZMnde+99+q+++5zsBwAAAAAAAAAANwj4k30F154QVu2bNFVV13lZD0AAAAAAAAAALhGRJvoK1as0HPPPadevXrJ4/Fo48aN+umnn3Ty5Emn6wMAAAAAAAAAR3hCpe+nOA4ePKghQ4aoZcuWuuGGG7Rt27YijcvNzdWMGTPUtm1bXXHFFXr//ffzfb97927169dPLVu2VP/+/bVv375837/11lvq1KmT2rZtqyeffNL1+8q2z0RfuHChHn/8cV133XUaMGCArrnmGnk8HklSQkKCatSoodq1a6tFixYaNmyYKlWq5HjRAAAAAAAAAIDIhUIhDRs2TJK0dOlSffXVVxoyZIjeeecdVaxYsdCxTz/9tJYvX65nn31WZcuW1fDhw1W/fn01a9ZMOTk5GjhwoJo0aaLly5drxYoVGjZsmJYuXaqEhAT985//1MMPP6xHH31UrVu31pgxY7Ro0SL1798/GpcdkSI/ib57924NHDhQ06dP15133qnp06fnbZ6vWbNGf/nLX/TUU09p4MCBatq0qd544w3Nnj27xAoHAAAAAAAAAERm/fr12rBhg6ZOnarzzjtP119/vc4991ytXLmy0HHHjh3TokWLNGzYMLVp0ybvafPFixdLkj744AMdPHhQU6dOVb169TRo0CBlZ2dr/fr1kqRXXnlFV111lXr16qUGDRrkbaK7WZGeRP/73/+u8ePHy+/3669//auaN2+e953H41Ht2rVVu3btfGMSEhK0evVqTZw40dmKAQAAAAAAAACSpM6dOxf6/apVq077+datW1WnTh01atQo77OWLVtq06ZNuu6668LO9+233yoYDKpDhw75xr399tt586alpSklJSXv+xYtWmjTpk266KKLtHXrVj300EN536WlpWnfvn365ZdfVK1atcIv1hBPKBQ648k5e/bs0TfffKPLL7883+e7du3SNddco0AgUGDMggULFAwGNXjw4DMWsXDhQk2dOjXfZ2PHjtWAAQP01Vdf6dFHH9WuXbvUvn17TZ06VVWrVj3jnOFYlhXxWAAAAAAAAMBN/H6/6RJiSsM5pe/kjHPffq/Q78Ntoj///PP6/PPP9dprr+V9tnDhQq1du1bPPfdc2Pm+/PJL9e/fX1u3bs37bPv27erbt68yMjL08MMPKxQKadq0aXnfP/744zp58qTGjRunpk2basGCBbrooovyvm/btq1ee+01NWnS5IzXa0KRnkRPTU1VamqqrYntnGGzYcMGDRs2TLfffnveZ+XLl9fBgwc1cOBAXXPNNXr66af1yiuvaPz48Zo7d66tWk516s0lGAwqEAjI5/PJ6/UWyFuWZeuGRN5sPtyYwvrstmsgH9kYeuzevFNr0OPo5U3VRI8jz7uxJnpsfg16bDbvxprosfk1YiEfSz12Y02xkDfZ42isEW95INwm+ZmUKVNGSUlJ+T4rX768gsHgGceVK1cu32cVKlTIG5eYmKjExMQC8x48eDDv+1PHly9fXkePHo3oOqKhyGeif/PNN6f9PBQKqWXLlrr55ps1e/Zsffvtt7aL2LBhgy655BIlJyfn/ZQrV05LlixRhQoV9PDDDys1NVWjR4/WF198oZ9++sn2GgAAAAAAAACA36SkpORtbP8uKyurwAb36cZlZ2crKysr77PMzMy8cWeaN9J1TSrSJvqBAwd04403qm/fvtqwYUOB78eOHavmzZvrvffe07XXXqtZs2apCKfESJJ++ukn7du3T5MnT1ZaWpo6d+6sBQsWSPrt/JyLL75YZcuWlSQlJSWpSZMm2rhxYxEvDwAAAAAAAABwqhYtWmjnzp06cuRI3mebN2/W2WefXei41NRUVa9eXevWrTvtuJYtW2rDhg3Kzc097fctWrTIN3bXrl3Kyso647omFek4l5o1a2r27Nl66aWX1Lt3b3Xv3l0TJkxQbm6uPB6PevXqJY/Ho3Hjxukvf/mLHn/8cf3888+aMWPGGefetm2b6tWrp/vvv18+n0//+te/NH78eNWvX1+ZmZkFzsGpUqWK9u/fH9nV/v9O/SsJ2dnZ+f5ZlDF21yAf3fzpxpypz267BvL2x9Bjd+edWIMeRzcfjTXosbP5aKxBj53NR2MNemw2H4016LGz+Wis4fZ8rPU4GmuUtrzpHkdjjXjKn+5oYhSiaM/9xoXGjRurYcOGmj17tiZOnKhAIKAPP/xQzz//vE6ePKmsrCxVrFixwNEsCQkJ6t69u5555hm1atVKx48f16uvvqouXbpIktq3b68TJ05o/vz5uvvuu7VmzRp99dVXeWek9+jRQ2PHjtUNN9ygBg0a6Nlnn9UFF1yg6tWrR/2/QVEV6cWi/2vlypV65JFH5PF4NHz4cK1YsULz5s3L97j922+/rdGjR+uRRx7RLbfcYruohx56SCdOnNDhw4d18cUX684778z77sEHH1TDhg11zz332J5X+u1cqZycHFtjkpKSbI0hbzbvxprIO5t3Y03kza9B3tm8G2sib34N8s7m3VgTeWfzbqyJvPk1yDubd2NN5M2vEW/5Vq1aFTkLqeHTpe/Forvuuz/isVu3btWgQYN0/PhxZWZm6rrrrtO0adP0ww8/qHPnzlq2bJl8Pl+BcZmZmbrrrru0Y8cOhUIh1a9fX4sWLVKlSpUkSZ9++qlGjhypsmXL6tChQxoyZIiGDRuWN/6RRx7R0qVL8/J//vOf1bRp04iv43fffPONvv76a11wwQWqXbu2pN/2s48dO6ZmzZqpfv36Ec1rexNdkg4fPqwJEyZo9erVeuSRR3TTTTcVyEyePFnvvfeeVqxYoWrVqtmaf9asWfriiy9Ur149Va9eXWPGjMn7bvDgwWrdurUGDhxot2xJv22iN2zYMN9n2dnZ2r17txo0aKAKFSoUGLNr164CYwpD3mw+3JjC+uy2ayAf2Rh67N68U2vQ4+jlTdVEjyPPu7Ememx+DXpsNu/Gmuix+TViIR9LPXZjTbGQN9njaKwRb3meRLeHTfSCgsGgMjIylJKSoubNmxd53MmTJ7Vu3TodO3ZMbdq0yTuS+3eHDh3SunXrVK9ePTVu3LjA+J07d+r7779Xq1atVLVq1WJdw5EjRzR27FitWrVKHo9Hf/rTn3TppZdKknr37q3169fL4/GoY8eOevLJJ1WxYkVb8xfpOJdTValSRc8884xmzJihSZMmqU2bNqpXr16+zN133629e/cWeMPrqZ599lklJSXp7rvvzvts3bp1Ovvss9WyZUstW7Ys7/NQKKQtW7aoR48ekZSdJ9zNpUKFCmG/s3tDIm82X9iYcH122zWQj3wMPXZn3sk16HF08tFYgx47m4/GGvTY2Xw01qDHZvPRWIMeO5uPxhqxko+VHkdjjdKaN9XjaKwRb3mgOLxerzp27Gh7XEJCglq3bh32+6pVq6pz585hv2/cuPFpN9cj8cgjj2jXrl16+eWXlZaWpipVquR9t2jRIh06dEhffvmlpkyZoqlTp2r69Om25o9oE/13o0eP1mWXXVZgA12SateurRdffFEej6fQOZo3b64HHnhA9evXV926dfXWW29p48aNWrBggc4991xNnz5d7733nq655hotXrxYR44cUfv27YtTNgAAAAAAAIB4xJnopdKaNWs0Z86cvKfP/1dCQoKqVaumq666SqFQSGPHjo3uJrokXXzxxWG/O9MGuiR17NhRI0eO1GOPPaZDhw6padOmWrBgQd6fYkydOjXvwg4dOqRHHnkk358kAAAAAAAAAADiV+XKlfXzzz+fMZeZmRnR3/Qo9ia6E/r06aM+ffqc9ruePXvqkksu0VdffaU//OEPSk1NjXJ1AAAAAAAAAAC36tu3r6ZOnaojR46oa9euOvvss/N9n5WVpZUrV2r69Onq27ev7fkjerFoLLMsy3QJAAAAAAAAgCP8fr/pEmJKw6dK4YtFRxbvxaKlxbx58/Tiiy/q119/Vfny5ZWcnKzExEQdPXpUR44cUSgUUq9evfToo48qISHB1tyueBI92k69uQSDQQUCAfl8vtM+zm9Zlq0bEnmz+XBjCuuz266BfGRj6LF7806tQY+jlzdVEz2OPO/Gmuix+TXosdm8G2uix+bXiIV8LPXYjTXFQt5kj6OxRrzlYY8nrh4nji+DBg1Snz599Omnn2rnzp365ZdfdOzYMXm9XjVo0ECXXnqp6tevH9HccbmJDgAAAAAAAAAoXSpVqqSuXbuqa9eujs5r77l1AAAAAAAAAADiCJvoAAAAAAAAAACEwXEuAAAAAAAAAICYtWrVKlv5zp0728qziQ4AAAAAAAAgPvBi0VJp6NChRc56PB4FAgFb87OJDgAAAAAAAACIWXafRLerWJvoW7Zs0aRJk7Rt2zbl5uYW+N7ujj4AAAAAAAAAAHacc845JTp/sTbRx44dK0maNWuWqlWr5khBAAAAAAAAAAC4hScUCkV8ElCLFi30wgsv6OKLL3ayphJlWZbpEgAAAAAAAABH+P1+0yXElPNmzTZdguO+GXW/6RJKvWI9ie73+7V58+aY2kSXCt5cgsGgAoGAfD6fvF5vgbxlWbZuSOTN5sONKazPbrsG8pGNocfuzTu1Bj2OXt5UTfQ48rwba6LH5tegx2bzbqyJHptfIxbysdRjN9YUC3mTPY7GGvGWB1DyEoozeMqUKfrb3/6m1157TceOHXOqJgAAAAAAAAAAXKFYT6IPHDhQwWBQ06dP18yZM1WzZk0lJPzfvnxJvxUVAAAAAAAAAICSVKxN9OHDhztVBwAAAAAAAACUKE/Eb4dEPCvWJvr111/vVB0AAAAAAAAAALhOsc5EBwAAAAAAAACgNCvWJnp6erqWL1/uVC0AAAAAAAAAALhKsY5zSUlJ0c6dO52qBQAAAAAAAABKTshjugLEoGI9iT5ixAi9+eabsizLqXoAAAAAAAAAACgRH3/8se0xxXoSfc+ePbryyivVu3dv9erVS2lpafm+79mzZ3GmBwAAAAAAAADAllGjRmnGjBlKTEzM++zrr7/W9OnT9e9//1tbt261NZ8nFAqFIi2mU6dO4Sf2eLRq1apIpy4xPDUPAAAAAACA0sLv95suIaY0mvmU6RIc9/VDI02X4DpXXXWVGjZsqGeeeUZZWVmaM2eOli5dqnbt2umBBx5Q06ZNbc1XrCfRV69eXZzhxpx6cwkGgwoEAvL5fPJ6vQXylmXZuiGRN5sPN6awPrvtGshHNoYeuzfv1Br0OHp5UzXR48jzbqyJHptfgx6bzbuxJnpsfo1YyMdSj91YUyzkTfY4GmvEWx42Rfw4MWLJ4sWLddddd+nmm2/W3r171aBBA82fP1/t2rWLaL5inYkOAAAAAAAAAICbVK9eXQsXLlRycrLKly+vefPmRbyBLhXzSfRly5YV+j1nogMAAAAAAAAASlJGRsZpP7/77rs1depU9evXT+PHj1eZMr9th7du3drW/MXaRH/mmWfy/j0UCunnn39Wbm6uKlSooJSUFDbRAQAAAAAAAAAlql+/fmfM/PGPf5T027s8A4GArfkdPRM9NzdXH374oWbPnq2ZM2cWZ2oAAAAAAAAAcJSHM9FLpW3btpXo/MXaRD9VYmKiunXrprPPPltTp07V0qVLnZweAAAAAAAAAICocnQT/Xd+v1/ffvttSUwNAAAAAAAAAEBYlmXpkUce0bZt25Sbm1vg+6ge53K6A9uzs7P11ltv6ZxzzinO1AAAAAAAAAAA2DZu3DhJ0qxZs1StWrViz1esTfTTHdiemJioP/zhD5o2bVpxpgYAAAAAAAAAZ3Emelz4/vvv9cILL+jiiy92ZD5PKBSKq/91LMsyXQIAAAAAAADgCL/fb7qEmNJ4+lOmS3DczrEjTZfgOn379tVll12mu+++25H5SuRMdLc79eYSDAYVCATk8/nk9XoL5C3LsnVDIm82H25MYX122zWQj2wMPXZv3qk16HH08qZqoseR591YEz02vwY9Npt3Y0302PwasZCPpR67saZYyJvscTTWiLc8gIKmTJmiu+66S0lJSbrttttUrly5Ys2XUJzBy5Yt0+HDhwt8vmDBAt15553FmRoAAAAAAAAAANsGDhyorKwsTZ8+XS1bttQVV1yhzp075/3YVawn0ceOHaulS5eqSpUq+T73+Xx64oknijM1AAAAAAAAAAC2DR8+3NH5irWJHgqF5PF4Cnx+6NChAhvrAAAAAAAAAGCSJ67eDhm/rr/+ekfns72J/tZbb+mtt97K+33ChAmqWLFi3u+5ubnaunWrBg8e7EyFAAAAAAAAAADY8MMPP8iyLP366695n504cULr1q3T9OnTbc1lexP9nHPOUZs2bSRJX3zxhZo1a6aaNWvmfV+uXDnde++9atu2rd2pAQAAAAAAAAAolvfee0+jR49WKBRSKBRS7dq1dfjwYQWDwYhe3Gt7E71NmzZ5m+hz587VLbfcombNmtleGAAAAAAAAAAAp82dO1f33HOPevXqpU6dOun1119XUlKS+vTpo+7du9ueL6E4xbRu3TrfUS4AAAAAAAAA4FqhUviDAn788UddfPHFqlmzpho3bqyNGzeqWrVquueee7Rw4ULb8xVrE33hwoVq0KBBcaYAAAAAAAAAAMAx55xzjj777DNJUqtWrZSRkSFJqlGjhn755Rfb89k+zuVUa9eu1fLly/Xdd99p+vTpeuedd1S5cmXdfvvtxZ0aAAAAAAAAAABbBg0apNGjRys1NVVdu3bVgAEDlJ2drQ0bNkR0JronFApF/ND/e++9pwceeEBNmzZVIBDQW2+9pXXr1mnmzJkaMWKE7rjjjkinLjGWZZkuAQAAAAAAAHBEJBuC8ez8x54yXYLjdjw80nQJrrRu3TpVrFhRTZo00aJFi/Tmm28qJSVF48ePV8OGDW3NVawn0Z977jkNGTJE9957r5o0aSJJ6tOnjxITE/Xyyy+7chNdKnhzCQaDCgQC8vl88nq9BfKWZdm6IZE3mw83prA+u+0ayEc2hh67N+/UGvQ4enlTNdHjyPNurIkem1+DHpvNu7Ememx+jVjIx1KP3VhTLORN9jgaa8RbHjZxhnjcaNWqVd6/9+3bV3379o14rmKdib537161b9++wOcNGzbUgQMHijM1AAAAAAAAAABFkpmZqeXLl+ull17SkiVLtH///gKZH3/8UZMnT7Y9d7GeRP/DH/6gd955J29X3+PxSJLefffdvCfTAQAAAAAAAAAoKbt27VLfvn31yy+/qEKFCsrOzla5cuU0e/ZsdenSRd9//73mzZun5cuXq1q1apo4caKt+Yu1iT5q1CgNHDhQmzZtksfj0dy5c7Vv3z7t2LFDL7/8cnGmBgAAAAAAAADgjGbNmqWqVatqwYIFatSokTIzM/Xoo49q0qRJ+sc//qEVK1aoevXqGj16tG655Rbb8xdrE71NmzZ6++239dJLL8nj8Wjv3r06//zz9cQTT9g+nB0AAAAAAAAASpKHM9FLpfXr12vSpElq1KiRJKly5coaN26cLrnkEq1fv17jxo1Tr169VK5cuYjmL9YmuiSde+65mj59enGnAQAAAAAAAADAtkOHDqlu3br5PqtWrZok6fnnny/20ePF3kQHAAAAAAAAAMCk3bt3KyEhocDnu3btUm5ubr7PmjVrZmvuYm2iT5w4Ud27d1e7du2KMw0AAAAAAAAAABF76KGHTvv5/fffL4/HI0kKhULyeDwKBAK25i7WJvqGDRtUt25dNtEBAAAAAAAAAEYsWLCgROcv1ib67bffrpdeekm33nqrkpOTnaoJAAAAAAAAAIAiadOmTYnO7wmFQhG/k3bfvn16+eWX9dlnn+n+++9XWlpavu/r1KlT7AKdZlmW6RIAAAAAAAAAR/j9ftMlxJQ/THnKdAmO2z5hpOkSSr1iPYneqVOnvH8fMWJEsc+WiZZTby7BYFCBQEA+n09er7dA3rIsWzck8mbz4cYU1me3XQP5yMbQY/fmnVqDHkcvb6omehx53o010WPza9Bjs3k31kSPza8RC/lY6rEba4qFvMkeR2ONeMsDKHnF2kRftWqVU3UAAAAAAAAAQMmK+EwOxLNibaKfc845TtUBAAAAAAAAAIDrJJTk5CdPnlSbNm20c+fOklwGAAAAAAAAAIASUaKb6KFQSEeOHFFubm5JLgMAAAAAAAAAQIko1nEuAAAAAAAAABArPJyJjgiU6JPoAAAAAAAAAADEMp5EBwAAAAAAAACUGseOHdOSJUu0fft2HT9+vMD306dPtzUfT6IDAAAAAAAAAEqNsWPHavr06dq/f78j83lCoVCJnQSUm5urZs2aadmyZWrSpElJLWOLZVmmSwAAAAAAAAAc4ff7TZcQU5o8+pTpEhy3bdJI0yW4TqtWrTR27FjddNNNjswXl8e5nHpzCQaDCgQC8vl88nq9BfKWZdm6IZE3mw83prA+u+0ayEc2hh67N+/UGvQ4enlTNdHjyPNurIkem1+DHpvNu7Ememx+jVjIx1KP3VhTLORN9jgaa8RbHjbxYtG4UKVKFaWkpDg2X4ke55KYmKgFCxaofv36JbkMAAAAAAAAAACSpKFDh+qJJ57QgQMHHJmv2E+ir127VsuXL9d3332n6dOn65133lHlypV1++23S5LatGlT7CIBAAAAAAAAACiKH3/8UeXLl9fVV1+tzp07q169ekpI+L/nyYcNG2ZrvmJtor/33nt64IEH1LRpUwUCAWVnZyslJUUzZ85Ubm6u7rjjjuJMDwAAAAAAAACALZ9//rkqV64sv9+v/fv353vBqMfjsT1fsTbRn3vuOQ0ZMkT33ntv3otD+/Tpo8TERL388stsogMAAAAAAABwD85EjwsLFy50dL5inYm+d+9etW/fvsDnDRs2dOy8GQAAAAAAAAAAiuvkyZPKyMiwPa5YT6L/4Q9/0DvvvKNWrVpJ+r9H4d999928J9MBAAAAAAAAAIiWPXv2aOLEidq4caN+/fXXAt8HAgFb8xXrSfRRo0bpzTff1PXXXy+Px6O5c+fqxhtv1FtvvaUHHnigOFMDAAAAAAAAAGDbo48+qmPHjmno0KHyeDx68cUXNXHiRJUtW1bTpk2zPV+xNtHbtGmjt99+W02aNJHP59PevXvVuHFjLV++XG3bti3O1AAAAAAAAADgKE+o9P2goI0bN2rEiBG68847VaNGDZUpU0a33Xab7rzzTi1dutT2fMU6zkWSzj33XE2fPr240wAAAAAAAAAAUGxJSUnKzMyUJLVo0UJbtmxR+/btdckll2j+/Pm25/OEQqG4+vMKy7JMlwAAAAAAAAA4wu/3my4hpvgmPmW6BMcFJo80XYLrTJw4UatXr9bcuXO1Y8cOvfzyy5o6dareffddffrpp1q9erWt+Yr1JPrEiRPVvXt3tWvXrjjTRN2pN5dgMKhAICCfzyev11sgb1mWrRsSebP5cGMK67PbroF8ZGPosXvzTq1Bj6OXN1UTPY4878aa6LH5Neix2bwba6LH5teIhXws9diNNcVC3mSPo7FGvOUBFDR27FiFQiH99NNP6tmzp5YuXar+/fvL4/FoypQptucr1ib6hg0bVLdu3ZjbRAcAAAAAAAAQh+LqTI74VaFChXyb5X/961+1Y8cOVa1aVbVr17Y9X7E20W+//Xa99NJLuvXWW5WcnFycqQAAAAAAAAAAKLbNmzdr2bJlCgaDp/3e7js+i7WJfskll2jr1q3q1auX7r//fqWlpeX7vk6dOsWZHgAAAAAAAAAAW4YMGaKqVauqWbNm8ng8xZ6vWJvonTp1yvv3ESNG5BUUCoXk8XgUCASKVx0AAAAAAAAAADaULVtWo0aNUseOHR2Zr1ib6KtWrXKkCAAAAAAAAAAoaR7ORI8LkyZN0oQJE9S3b1/VrFmzwPc9e/a0NV+xNtHPOeec4gwHAAAAAAAAAMBRM2bM0C+//KK//vWvBb7zeDzR3UTft29fod9zJjoAAAAAAAAAIJoOHTqkF198UZdeeqkj8xX7TPTCDmbnTHQAAAAAAAAAQDTdfffdmjdvnipXrqwaNWoU+N7uw9+eUCgU8UlAe/fuzfv3kydP6qefftL777+vVatWac6cOWrZsmWkU5cYy7JMlwAAAAAAAAA4wu/3my4hpjR9+CnTJThu62MjTZfgOk2aNCnwmcfjUSgUksfjsf3wt6Nnoqempqp169ZKS0vTn/70Jz3//PPFmb7EnHpzCQaDCgQC8vl88nq9BfKWZdm6IZE3mw83prA+u+0ayEc2hh67N+/UGvQ4enlTNdHjyPNurIkem1+DHpvNu7Ememx+jVjIx1KP3VhTLORN9jgaa8RbHkBBq1atcnS+Ym2ih3Pddddp+vTpJTE1AAAAAAAAAABhnfrwd3ElODqbpJycHC1evPi0T3QDAAAAAAAAAFCS7r77bq1cudKx+Yr1JHqTJk1O+2LRsmXLavLkycWZGgAAAAAAAACcFfHbIRFLDh06pG3btqlLly6OzFesTfQFCxYU+CwxMVENGzZUSkpKcaYGAAAAAAAAAMC2QYMG6ZFHHlHPnj1Vt27dYs9XrE30Nm3aFLsAAAAAAAAAAACckpycrC5duqhXr1666667lJaWlu/71q1b25qvWJvo+/btU82aNVWmTP5p3nvvPe3evVtDhw4tzvQAAAAAAAAAANjSr1+/vH+fOXNmvu88Ho8CgYCt+Yq1id65c2ctXbpUzZo1y/d5lSpVNH/+fDbRAQAAAAAAALiGhzPR48K2bdscnS+hOINDodP/X1euXDklJBRragAAAAAAAAAAjLP9JPoXX3yhL774Iu/3N954QzVr1sz7PTc3Vx999JGuuOIKZyoEAAAAAAAAAMABP/zwg+2XjXpC4R4nD+Ott97S3//+d0lSRkaGmjZtqooVK+Z9n5SUpAsuuEB33nmnKlSoYKsYSdq5c6d69eql1157TRdccIEk6eOPP9aMGTO0f/9+devWTRMmTFBSUpLtuSXJsqyIxgEAAAAAAABu4/f7TZcQU5qNfcp0CY7bMn2k6RJc59ChQ5o1a5Y2btyo7OzsvM9zc3P1888/a8uWLbbms72J/r+aNGmiN998s8CZ6JE6fvy4brnlFrVu3Vpjx46VJG3fvl033nijhgwZovT0dM2cOVN16tTJ+94uy7IK3FyCwaACgYB8Pp+8Xm+Rxthdg3z08uHGFNZnt10D+cjG0GP35p1agx5HL2+qJnoced6NNdFj82vQY7N5N9ZEj82vEQv5WOqxG2uKhbzJHkdjjXjLwx420ePDfffdp507d6pdu3b661//qkmTJun777/Xn//8Z40ZM0b9+/e3NZ+rDi5/4YUXdOTIEd133315ny1cuFA+n09DhgxRamqqxo8fryVLlignJ8dcoQAAAAAAAABiT6gU/qCAf//73xo3bpwmTJigKlWq6Nxzz9WoUaPUu3dvffLJJ7bnK9Ym+rZt2xx7Ct2yLM2bN09XXnmlVqxYod27d0uStm7dqg4dOuTlatWqpZSUFO3YscORdQEAAAAAAAAApcvvB7BccMEFece3XH311fryyy9tz2X7xaL/a+7cuYV+P2zYsCLNEwqFNGnSJFWsWFEej0fbt2/XjBkzdM899ygzM1P16tXLl69SpYr279+vtLS0iOoOBoP5fv/9XJz/PR/nTGPsrkE+uvnTjTlTn912DeTtj6HH7s47sQY9jm4+GmvQY2fz0ViDHjubj8Ya9NhsPhpr0GNn89FYw+35WOtxNNYobXnTPY7GGvGUP93RxEC8u+SSSzRt2jQ9/fTTateunZYtW6arrrpKa9euzfd+z6Iq1pno/fr1y/v3UCikH3/8UXv37lVKSooaN26sBQsWFGmeL7/8Un369NGLL76oK664QpL00UcfacSIEapTp44eeOABdevWLS/fu3dv3XrrrerRo4ftmi3Lsn0UTFJSkq0x5M3m3VgTeWfzbqyJvPk1yDubd2NN5M2vQd7ZvBtrIu9s3o01kTe/Bnln826sibz5NeIt36pVqyJnITUbUwrPRH+cM9FP9Z///EcPPvig0tPTdeWVV+q6667Tvn37JEkjRozQ4MGDbc1XrE300/nqq680btw4jRw5Up07dy7SmHfeeUdjxozRV199pcTEREnS/v37ddlllykhIUHjxo3Lt2Gfnp6uoUOHqmvXrrbrsyxLDRs2zPdZdna2du/erQYNGqhChQoFxuzatavAmMKQN5sPN6awPrvtGshHNoYeuzfv1Br0OHp5UzXR48jzbqyJHptfgx6bzbuxJnpsfo1YyMdSj91YUyzkTfY4GmvEW54n0e1pNroUbqLPYBP9TI4ePaq1a9cqJSVFF154oe3xxTrO5XSaN2+uZ555Rvfee2+RN9Hr1KmjkydP6tdff817nP6HH36QJPXs2VPr1q3L20Q/evSovv32W9WpUyfiGsPdXCpUqBD2O7s3JPJm84WNCddnt10D+cjH0GN35p1cgx5HJx+NNeixs/lorEGPnc1HYw16bDYfjTXosbP5aKwRK/lY6XE01iiteVM9jsYa8ZYHULiKFSsWea/6dIr1YtFwzj77bP34449Fzl9wwQU699xzNXHiRO3Zs0dbtmzRY489pksuuUT9+vXTypUrlZGRIem3c9hTUlLk9/tLonQAAAAAAAAAQIx788031a9fP3Xs2FFff/21pkyZomnTpunEiRO25yrWk+jLli0r8Fl2drbeffddnX/++UUvokwZzZ8/XzNmzNBNN92kY8eO6eKLL9aUKVN01llnafjw4RowYICqVq2qYDCoOXPmKCGhRPb/AQAAAAAAAAAx7LXXXtPMmTPVqVMnffnllzpx4oRatWqlyZMnq3z58rr//vttzVesTfRnnnmm4IRlyqhJkyZ68MEHbc119tln6+mnnz7td4MGDVL37t21fft2paWlqVatWpGUCwAAAAAAACCOeRx9OyTcauHChRo7dqz69u2rJk2aSJK6d++ukydP6oknnrC9ie74i0XdzrIs0yUAAAAAAAAAjuDIY3v8D5W+F4taM3mx6KlatGihl19+WRdddJGaNGmiZcuWqUmTJvr3v/+te+65Rxs3brQ1n60n0T/55BMlJyfrggsusLWI25x6cwkGgwoEAvL5fKd9cYNlWbZuSOTN5sONKazPbrsG8pGNocfuzTu1Bj2OXt5UTfQ48rwba6LH5tegx2bzbqyJHptfIxby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OXKkli5dqszMTCUmJio1NTVvbHJyct5YkzyhUKgETs5xL8uyTJcAAAAAAAAAOMLv95suIaZcesMs0yU4LunwikK/P90m+n/+8x9lZ2efNn/HHXdo5MiR6tatW95nvXv31q233qoePXoUutbEiROVmJioSZMm5X329NNP5x3xcqo9e/aoS5cuWrFihY4cOaIBAwZo48aNed9///336tatm/Fz0ePySfRTby7BYFCBQEA+n09er7dA3rIsWzck8mbz4cYU1me3XQP5yMbQY/fmnVqDHkcvb6omehx53o010WPza9Bjs3k31kSPza8RC/lY6rEba4qFvMkeR2ONeMsDp9skP5Ozzjqr0O8OHjyY77PMzEyVK1fujPOmpKRo165d+T7LysoKO7ZmzZqSpB9++EH169dXdna2srKyVKlSJVvrljTORAcAAAAAAAAASPrtDPN169bl/X706FF9++23qlOnzhnHtmzZUhs2bFBubm7eZ5s3b9bZZ5+t//znP+rWrZuCwWDed7+vU6dOHaWmpqp69er51v59rGlsogMAAAAAAAAAJEnp6elauXKlMjIyJElz585VSkpK3t+QyMnJUVZW1mnHtm/fXidOnND8+fMlSWvWrNFXX32lTp066ayzzlKlSpX08MMPy7IsrVmzRuPHj9cll1yiRo0aKSEhQd27d9czzzyjrKws/fe//9Wrr76qTp06RefCCxGXx7kAAAAAAAAAiD+euHo7ZGSaNm2q4cOHa8CAAapataqCwaDmzJmjhITfnsd+6aWXtHLlSi1fvrzA2LJly2rWrFkaOXKkXn31VR06dEhDhw7VeeedJ0l65plnNH78ePXu3VvJyclKT0/XsGHD8sbfe++9uuuuu3TZZZcpFAqpfv36Gjx4cHQuvBBsogMAAAAAAAAA8gwaNEjdu3fX9u3blZaWplq1auV9N3z4cA0fPjzs2EsvvVQfffSR1q1bp3r16qlx48Z535199tl5T6mfTuXKlbV48WKtW7dOx44dU5s2bVS2bFlnLqoY2EQHAAAAAAAAAOSTmpqq1NTUiMZWrVpVnTt3jmhsQkKCWrduHdHYksKZ6AAAAAAAAAAAhMGT6AAAAAAAAADiQ4hD0WEfT6IDAAAAAAAAABCGJxSKrz9+sSzLdAkAAAAAAACAI/x+v+kSYkqHnk+YLsFxnyx70HQJpV5cHudy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Ffvv45M6duyou+66S2vWrLGveX8N92rXEhkZqQEDBuj555/XpEmTFBAQoIiICPXp00ePPPKIFi5cyOsuF5eQkKDBgwfriSee0Jdffqlx48ZpyZIlCgsLU6dOnfTJJ59o48aNOd74pMauJSkpSWPHjlWvXr20ePFiffDBBypdurRq1qypWrVqKTw8XBs3buTnGACcyG0fLHpNYGCgRowYoWXLlumVV17RN998Iw8PD+3bt0/Dhg2Tj4+P0Snib5hMJnl7eys2NlZHjhxRiRIl1Lt3bwUGBmrGjBl68cUXNW/ePPXo0UMhISGSrr6oSExMZKkeF5GZmSlfX1/17t1bktS5c2ft3r1bn332mSIiIpSWlqavv/5aO3bs0MMPP6zU1FRFR0drwIABBmeOvLBarapevbrat28v6WpD5pNPPtG2bdvUtm1bHTt2TJs2bdKOHTvUsmVLWSwW6uxisrKyZDKZVK5cOXXv3l0XLlxQWFiYFi9erIoVK+qNN95QSEiImjRpovPnz+v06dNq1KiR0WnjFpnNZtWrV0/9+vWT1WrVwIEDlZKSosTERLVr105paWk6c+aMJkyYoJCQEGVkZGjXrl2aOHEinwpzQbVr11ZERIQaNmyo7du3a8eOHbLZbIqPj1dCQoJ27NihFi1aKC0tjXu1Czl37pzCwsIUGhqqESNGSJJatmypxYsXS7r6KaH333+f110u7syZMwoKCtLo0aMlXX1WxbJly7R79249+OCDOnTokH766Sdec7mwc+fOqUyZMgoNDZWPj4/atGmj5ORkvf3221q9erVWr16tFStW8HMMAE7k9k10SfYnzbdp00Y//vijkpOT9c4776hFixZGp4ZbYLVa5eHhoWrVqikzM1Pbt2+XyWRS7969VbVqVc2aNUvvvvuuli5dqrlz5yooKEgbNmzQiy++yJskLiIzM1OJiYm6dOmSfVuzZs3syzCNGTNGW7Zs0d69ezV//nyZTCaNHDlSrVu3Nipl5FN6erpOnjypWrVqaenSpfr999+VkpIiSapcubKqVasmPz8/hYeHy9PTkzq7mGuzVu+//34lJSXp+eef19SpUzVkyBANGjRINptNp0+f1urVq+Xh4aGhQ4eqWbNmBmeNW9WsWTOtXbtWixcv1h9//KHSpUvr3Xffldls1t69e2WxWHTvvfcqKChIq1atkslk0ssv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8X/9mw7/+c9/5OnpecufWgAAAABwczTRAQCA26hbt64k6bfffrNv+/PPP/XUU0/p8OHDLjPGNV27dtXWrVu1detWtWjRQv7+/vk+1+XLlzVv3jw9+uij9tnp1yQkJOSriX7+/HnFxcXp999/V82aNRUQEHDD2GXLlunChQsym8369ddfNWvWLA0cOFDe3t6SpAEDBujw4cOKjIz827Xb/86jjz6q1atX59q2c+dORUVFSbpar82bN992w/56p06d0tNPP63Q0FCFhYXl+fjrm+ilS5fW008/re+//97+NXny5L9dHmbNmjV69NFHc50PAAAAQP6wnAsAAHAb9957rzp37qy3335bVqtVd911l+bNm6fq1avroYcecpkxruncubNmzJihtLQ0Pf744/k+z8WLFzV06FClpKRo7NixOfYlJSXp4sWLt7R8iNVqVVZWlooXL66GDRvqxx9/VPXq1bV79+4cs9uzs7Nls9nszd7+/furdu3a2rVrl1544QVZLBaVLl1ahw8fVoMGDXT58mV5e3vLZrMpOTnZYTP+VvTp00ddu3bVoUOH1LBhQ0lSu3bt1KxZMz3zzDMKCQnRzp07Va5cOfXt2zff41wvOjpaw4YN04QJE/L9iYHr13NPTk7WV199pcWLF9u3ZWdnq2TJkg7P8ddff+nLL7/UypUr85UDAAAAgNxoogMAALcyffp0zZw5U9OnT1d2draaNm2qqVOn2mc9u8oY0tW1vBs1aqR9+/Zp7ty5eT7earVq48aNev/993XhwgWFh4fbZ5zHxMTou+++0969e1WsWDHVr1/f4XmysrIkXZ1p3alTpxvG7Nu3T1999ZX9+2nTptkb/8WLF1ft2rW1du1alSlTRu+//75+/vln7du3T+fOndPEiRPVs2dPxcbGKjQ0VAsWLLhpPjdTunRpTZgwQePGjdOyZcsUEBAgk8mk+fPn66OPPtL27dvVvHlzjR07NteM/Nvx4Ycf6q233lKLFi3yfQ6r1Zrj+xkzZjiMPXfunI4ePaqzZ8/al3NJT0/Xyy+/rOeeey7fD2cFAAAAkJvJdv2UFwAAAOSb1WrN1Qz9Xx4eHre81vrt2rt3r5599lk99NBDmjx5sqpVq2bfl56ervbt26t69er65z//qZCQEIfneffdd3Xo0CEtXLhQx48fV4kSJW66VEhmZqYqVKigcuXKadu2bfr222+1bds2de/eXS+//LLKli2rU6dO6a233tKuXbs0duxYhYaGKjU1VUOGDNGBAwc0bdo09ejRI9/XPnPmTJ09e1Zvv/12vs9R0I4fP65u3brd0oNF//jjD3Xt2lU1a9bU3LlzVbVqVc2ePVtxcXGaMWMGS7kAAAAATkQTHQAAwInGjx+vb7/91uH+0NBQvfbaawWWzx9//KG77777ts7x+uuv6+jRo1q+fHmej42JidG6dev05JNPqmrVqvbtmZmZmjNnjp544glVr17dvj07O1vLly9X37595eXlle+cbTabLl26JD8/v3yfo7BLS0tTqVKlcnzv6emp4sWLG5gVAAAA4H5oogMAADjR6dOndfHiRYf7AwICFBgYWIAZAQAAAABuB010AAAAAAAAAAAcKJgFOQEAAAAAAAAAcEE00QEAAAAAAAAAcIAmOgAAAAAAAAAADtBEBwAAAAAAAADAAZroAAAAAAAAAAA4QBMdAAAAAAAAAAAHaKIDAAAAAAAAAOAATXQAAAAAAAAAABz4f+vX7CVnnsudAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1600x1200 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from scipy.stats import spearmanr\n",
"from tqdm import tqdm # 用于显示进度条 (可选)\n",
"\n",
"# 设置 Matplotlib/Seaborn 样式 (可选)\n",
"sns.set_theme(style=\"whitegrid\")\n",
"plt.rcParams['font.sans-serif'] = ['SimHei'] # 或者其他支持中文的字体\n",
"plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题\n",
"\n",
"def analyze_score_performance_2d(score_df: pd.DataFrame,\n",
" score_col: str = 'score',\n",
" label_col: str = 'label',\n",
" condition1_col: str = 'circ_mv',\n",
" condition2_col: str = 'future_return',\n",
" n_bins: int = 100,\n",
" min_samples_per_bin: int = 30): # 每个格子最少样本数\n",
" \"\"\"\n",
" 分析 score 在两个条件下 (如市值、未来收益) 的二维分箱表现。\n",
"\n",
" Args:\n",
" score_df (pd.DataFrame): 包含分数、标签和条件列的 DataFrame。\n",
" score_col (str): 预测分数所在的列名。\n",
" label_col (str): 目标标签所在的列名 (应为数值或可排序类别)。\n",
" condition1_col (str): 第一个条件列名 (例如 'circ_mv')。\n",
" condition2_col (str): 第二个条件列名 (例如 'future_return')。\n",
" n_bins (int): 每个条件划分的箱数 (分位数数量)。\n",
" min_samples_per_bin (int): 计算指标所需的最小样本数,小于此数目的格子结果将被屏蔽。\n",
"\n",
" Returns:\n",
" tuple: 包含 (performance_pivot, count_pivot, fig)\n",
" performance_pivot: 以二维分箱为索引/列的 Spearman 相关系数矩阵。\n",
" count_pivot: 每个二维分箱的样本数量矩阵。\n",
" fig: 生成的热力图 Matplotlib Figure 对象。\n",
" \"\"\"\n",
" print(f\"开始分析 '{score_col}' 在 '{condition1_col}' 和 '{condition2_col}' 下的表现...\")\n",
"\n",
" required_cols = [score_col, label_col, condition1_col, condition2_col]\n",
" if not all(col in score_df.columns for col in required_cols):\n",
" missing = [col for col in required_cols if col not in score_df.columns]\n",
" raise ValueError(f\"输入 DataFrame 缺少必需列: {missing}\")\n",
"\n",
" # --- 1. 数据准备和清洗 ---\n",
" print(\"准备数据,处理 NaN 值...\")\n",
" # 只保留需要的列,并移除包含 NaN 的行,避免影响分箱和计算\n",
" analysis_df = score_df[required_cols].dropna().copy()\n",
" n_original = len(score_df)\n",
" n_after_drop = len(analysis_df)\n",
" print(f\"原始数据 {n_original} 行,移除 NaN 后剩余 {n_after_drop} 行用于分析。\")\n",
"\n",
" if n_after_drop < min_samples_per_bin * n_bins: # 检查数据量是否过少\n",
" print(f\"警告: 清理 NaN 后数据量 ({n_after_drop}) 可能不足以支持 {n_bins}x{n_bins} 的精细分箱分析。\")\n",
" if n_after_drop < min_samples_per_bin:\n",
" print(\"错误: 有效数据过少,无法进行分析。\")\n",
" return None, None, None\n",
"\n",
" # --- 2. 二维分箱 ---\n",
" print(f\"对 '{condition1_col}' 和 '{condition2_col}' 进行 {n_bins} 分位数分箱...\")\n",
" bin1_col = f'{condition1_col}_bin'\n",
" bin2_col = f'{condition2_col}_bin'\n",
"\n",
" try:\n",
" # 使用 qcut 进行分位数分箱labels=False 返回 0 到 n_bins-1 的整数标签\n",
" # duplicates='drop' 会丢弃导致边界不唯一的重复值所在的箱子,可能导致某些箱号缺失\n",
" # 对于可视化,这通常可以接受,但如果需要严格的等分,需先 rank\n",
" analysis_df[bin1_col] = pd.qcut(analysis_df[condition1_col], q=n_bins, labels=False, duplicates='drop')\n",
" analysis_df[bin2_col] = pd.qcut(analysis_df[condition2_col], q=n_bins, labels=False, duplicates='drop')\n",
" except Exception as e:\n",
" print(f\"错误: 分箱失败,请检查数据分布或减少 n_bins。错误信息: {e}\")\n",
" # 可以尝试先 rank 再 qcut\n",
" # analysis_df[bin1_col] = pd.qcut(analysis_df[condition1_col].rank(method='first'), q=n_bins, labels=False, duplicates='raise')\n",
" # analysis_df[bin2_col] = pd.qcut(analysis_df[condition2_col].rank(method='first'), q=n_bins, labels=False, duplicates='raise')\n",
" return None, None, None\n",
"\n",
" # --- 3. 分组计算表现指标 (Spearman Rank IC) ---\n",
" print(\"按二维分箱分组计算 Spearman Rank IC...\")\n",
"\n",
" def safe_spearmanr(x, y):\n",
" \"\"\"安全计算 Spearman 相关性,处理数据量过少的情况\"\"\"\n",
" if len(x) < max(2, min_samples_per_bin): # 要求至少有 min_samples_per_bin 个点才计算\n",
" return np.nan\n",
" corr, p_value = spearmanr(x, y)\n",
" return corr if not np.isnan(corr) else np.nan # 确保返回 NaN 而不是 None 或其他\n",
"\n",
" # 按两个分箱列分组\n",
" grouped = analysis_df.groupby([bin1_col, bin2_col])\n",
"\n",
" # 计算每个格子的 Spearman 相关系数\n",
" # apply 可能较慢,但计算相关性通常需要 apply\n",
" performance_series = grouped.apply(lambda sub: safe_spearmanr(sub[score_col], sub[label_col]))\n",
"\n",
" # 计算每个格子的样本数量\n",
" count_series = grouped.size()\n",
"\n",
" # --- 4. 结果整理成 Pivot Table (用于绘图) ---\n",
" print(\"整理结果用于绘图...\")\n",
" try:\n",
" # 将 performance_series 转换成二维矩阵\n",
" # index 为 condition1_bin, columns 为 condition2_bin\n",
" performance_pivot = performance_series.unstack(level=0) # level=0 对应第一个 groupby key (bin1_col)\n",
" count_pivot = count_series.unstack(level=0)\n",
"\n",
" # 可选:按列和索引排序,确保顺序正确\n",
" performance_pivot = performance_pivot.sort_index(axis=0).sort_index(axis=1)\n",
" count_pivot = count_pivot.sort_index(axis=0).sort_index(axis=1)\n",
" \n",
" print(performance_pivot)\n",
"\n",
" except Exception as e:\n",
" print(f\"错误: 无法将结果转换为二维矩阵,可能因为分箱不均匀或数据问题: {e}\")\n",
" return None, None, None\n",
"\n",
" # --- 5. 可视化:绘制热力图 ---\n",
" print(\"生成热力图...\")\n",
" fig, ax = plt.subplots(figsize=(16, 12)) # 调整图像大小\n",
"\n",
" # 使用 count_pivot 创建一个 mask屏蔽掉样本量过小的格子\n",
" mask = count_pivot < min_samples_per_bin\n",
"\n",
" # 绘制热力图\n",
" sns.heatmap(performance_pivot,\n",
" annot=False, # 100x100 个格子加注释会太密集\n",
" fmt=\".2f\",\n",
" cmap=\"viridis\", # 选择颜色映射, 'viridis', 'coolwarm', 'RdYlGn' 等都不错\n",
" linewidths=.5,\n",
" linecolor='lightgray',\n",
" # mask=mask, # 应用 mask\n",
" ax=ax,\n",
" cbar_kws={'label': f'Spearman Rank IC ({score_col} vs {label_col})'}) # 颜色条标签\n",
"\n",
" # 设置标题和轴标签\n",
" ax.set_title(f'{score_col} 表现分析 (Rank IC vs {label_col})\\n基于 {condition1_col} 和 {condition2_col} {n_bins}x{n_bins} 分箱', fontsize=16)\n",
" ax.set_xlabel(f'{condition1_col} 分位数 (0 -> 高)', fontsize=12)\n",
" ax.set_ylabel(f'{condition2_col} 分位数 (0 -> 高)', fontsize=12)\n",
"\n",
" # 可选:调整刻度标签,避免显示所有 100 个刻度\n",
" if n_bins > 20:\n",
" tick_interval = n_bins // 10 # 大约显示 10 个刻度\n",
" ax.set_xticks(np.arange(0, n_bins, tick_interval) + 0.5)\n",
" ax.set_yticks(np.arange(0, n_bins, tick_interval) + 0.5)\n",
" ax.set_xticklabels(np.arange(0, n_bins, tick_interval))\n",
" ax.set_yticklabels(np.arange(0, n_bins, tick_interval))\n",
"\n",
" plt.xticks(rotation=45, ha='right')\n",
" plt.yticks(rotation=0)\n",
" plt.tight_layout() # 调整布局\n",
"\n",
" print(\"分析完成。\")\n",
" return performance_pivot, count_pivot, fig\n",
"\n",
"# --- 如何使用 ---\n",
"# 假设你的包含预测结果和所需列的 DataFrame 是 final_predictions_df\n",
"# 确保它包含 'score', 'label', 'circ_mv', 'future_return'\n",
"\n",
"# # 示例调用 (你需要有实际的 score_df)\n",
"try:\n",
" # 确保数据类型正确\n",
" cols_to_numeric = ['score', 'label', 'circ_mv', 'future_return']\n",
" for col in cols_to_numeric:\n",
" if col in score_df.columns:\n",
" score_df[col] = pd.to_numeric(score_df[col], errors='coerce')\n",
"\n",
" # 调用分析函数\n",
" performance_matrix, count_matrix, heatmap_figure = analyze_score_performance_2d(\n",
" score_df,\n",
" n_bins=100, # 你要求的100分箱\n",
" min_samples_per_bin=50 # 每个格子至少需要50个样本才显示IC可以调整\n",
" )\n",
"\n",
" # 显示图像\n",
" if heatmap_figure:\n",
" plt.show()\n",
"\n",
" # 可以查看具体的 performance_matrix 和 count_matrix\n",
" # print(\"\\nPerformance Matrix (Spearman IC):\")\n",
" # print(performance_matrix)\n",
" # print(\"\\nCount Matrix:\")\n",
" # print(count_matrix)\n",
"\n",
"except ValueError as ve:\n",
" print(f\"数据错误: {ve}\")\n",
"except Exception as e:\n",
" print(f\"发生未知错误: {e}\")"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "a436dba4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Empty DataFrame\n",
"Columns: [ts_code, trade_date, is_st]\n",
"Index: []\n"
]
}
],
"source": [
"print(df[(df['ts_code'] == '600242.SH') & (df['trade_date'] >= '2023-06-01')][['ts_code', 'trade_date', 'is_st']])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "new_trader",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}