/usr/local/lib/python3.10/functools.py:889: DataOrientationWarning: Row orientation inferred during DataFrame construction. Explicitly specify the orientation by passing `orient="row"` to silence this warning.
return dispatch(args[0].__class__)(*args, **kw)
🚀 配置极致并行计算环境...
⚡ 配置并行计算环境...
💻 物理CPU核心: 16
⚡ Polars可用核心: 16
✅ 最大线程数: 16
✅ 流式chunk: 500000
✅ Rayon线程: 16
🔄 正在从 OpRegistry 同步算子...
✅ 成功同步 61 个算子从 OpRegistry
🔧 正在应用增强元数据...
✅ 成功应用 61 个算子的增强元数据
done
2025-07-28 19:08:40 | INFO | feature_gen:main:128 - {'action': 'start_process', 'description': 'feature_gen start'}
2025-07-28 19:08:40 | INFO | feature_gen:main:129 - {'action': 'load_data', 'strategy': 'B8W5min250717Base4', 'pred_periods': 12, 'time_bar': 5}
2025-07-28 19:08:40 | INFO | feature_gen:main:133 - 开始获取特征
2025-07-28 19:08:40 | INFO | feature_gen:process_config_withadj:27 - {'action': 'process_config_start', 'path': '/root/project/auto/auto//conf/selected_config/B8W5min250717Base4.parquet'}
2025-07-28 19:08:41 | INFO | feature_base:__init__:59 - {'action': 'init_HFDataProcessor', 'time_bar': 5}
加载干支特征完成
添加全局映射特征
🎯 智能分层计算: 目标特征 146 个
📝 输入列: ['cate_comd', 'cate_exchange', 'cate_sector', 'close', 'comd', 'contract', 'contract_month', 'contract_multiplier', 'contract_yymm', 'date']...
📊 计算层级: 2 层
Layer 0: 53 个特征
Layer 1: 93 个特征
⚡ 执行 Layer 0: 53 个表达式
📝 Layer 0 表达式:
doy_sin: sin(2 * 3.14159265 * dt_dayofyear(@in_trade_time) / 365)
vwap: (@in_close + @in_high + @in_low + @in_open )/ 4
second: dt_second(@in_trade_time)
wqa_975930--para8_4: ts_wmean(ts_rank(power(@in_turnover, 2), 8), 4)
wqa_974980--para16_8: ts_min((1/(1+exp(-delta(@in_open_interest, 16)))), 8)
wqa_974980--para32_16: ts_min((1/(1+exp(-delta(@in_open_interest, 32)))), 16)
wqa_974980--para64_32: ts_min((1/(1+exp(-delta(@in_open_interest, 64)))), 32)
minute: dt_minute(@in_trade_time)
contract_month_sin: sin(2 * 3.14159265 * @in_contract_month / 12)
adjlow: @in_low * @in_factor_multiply
adjhigh: @in_high * @in_factor_multiply
adjvwap: @in_vwap * @in_factor_multiply
wqa_990658--para16_8: ts_min(power(ts_rank(@in_open_interest, 16), 0.5), 8)
date: dt_date(@in_trade_time)
hour_sin: sin(2 * 3.14159265 * @in_hour / 24)
return: (@in_close * @in_factor_multiply) / shift(@in_close * @in_factor_multiply, 1) - 1
month: dt_month(@in_trade_time)
hour_cos: cos(2 * 3.14159265 * @in_hour / 24)
wqa_975930--para16_8: ts_wmean(ts_rank(power(@in_turnover, 2), 16), 8)
day_of_week: dt_weekday(@in_trade_time)
adjclose: @in_close * @in_factor_multiply
wqa_990658--para64_32: ts_min(power(ts_rank(@in_open_interest, 64), 0.5), 32)
adjopen: @in_open * @in_factor_multiply
week_of_year: dt_week(@in_trade_time)
contract_month_cos: cos(2 * 3.14159265 * (@in_contract_month) / 12)
woy_cos: cos(2 * 3.14159265 * dt_week(@in_trade_time) / 52)
wqa_990658--para32_16: ts_min(power(ts_rank(@in_open_interest, 32), 0.5), 16)
wqa_977010--para0: (1/ log((@in_open_interest * @in_volume)))
wqa_974980--para8_4: ts_min((1/(1+exp(-delta(@in_open_interest, 8)))), 4)
day_of_month: dt_day(@in_trade_time)
log_return: log(@in_close * @in_factor_multiply) - log(shift(@in_close * @in_factor_multiply, 1))
woy_sin: sin(2 * 3.14159265 * dt_week(@in_trade_time) / 52)
doy_cos: cos(2 * 3.14159265 * dt_dayofyear(@in_trade_time) / 365)
wqa_988847--para4: (1/ (1/ ts_cov(@in_volume, @in_open_interest, 4)))
wqa_975930--para32_16: ts_wmean(ts_rank(power(@in_turnover, 2), 32), 16)
hour: dt_hour(@in_trade_time)
wqa_990658--para8_4: ts_min(power(ts_rank(@in_open_interest, 8), 0.5), 4)
wqa_975605--para64_32: ts_rank(ts_sum(power(@in_open_interest, 2), 64), 32)
wqa_972517--para16_8: log(ts_wmean(ts_rank(@in_turnover, 16), 8))
wqa_988847--para16: (1/ (1/ ts_cov(@in_volume, @in_open_interest, 16)))
wqa_975605--para32_16: ts_rank(ts_sum(power(@in_open_interest, 2), 32), 16)
wqa_988847--para32: (1/ (1/ ts_cov(@in_volume, @in_open_interest, 32)))
cate_trading_session: where(@in_hour < 9, 1, where(@in_hour < 11, 2, where(@in_hour < 13, 3, where(@in_hour < 16, 4, where(@in_hour < 21, 5, 6)))))
wqa_972517--para32_16: log(ts_wmean(ts_rank(@in_turnover, 32), 16))
wqa_972517--para64_32: log(ts_wmean(ts_rank(@in_turnover, 64), 32))
year: dt_year(@in_trade_time)
adjpre_settle: @in_pre_settle * @in_factor_multiply
wqa_972517--para8_4: log(ts_wmean(ts_rank(@in_turnover, 8), 4))
wqa_988847--para8: (1/ (1/ ts_cov(@in_volume, @in_open_interest, 8)))
wqa_975930--para64_32: ts_wmean(ts_rank(power(@in_turnover, 2), 64), 32)
day_of_year: dt_dayofyear(@in_trade_time)
wqa_975605--para8_4: ts_rank(ts_sum(power(@in_open_interest, 2), 8), 4)
wqa_975605--para16_8: ts_rank(ts_sum(power(@in_open_interest, 2), 16), 8)
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/16579244a029014802f20d9c342b1d2d.json
⏳ 缓存未命中,开始首次解析 53 个表达式...
🔄 批量解析 53 个表达式到图 'process_feature_with_spec_expressions_layer_0'...
✅ 批量解析完成: 53/53 成功, 图包含 200 个节点
💾 正在保存Graph缓存: 200 个节点...
✅ 缓存已保存: cache/graphs/16579244a029014802f20d9c342b1d2d.json
📊 成功序列化: 200/200 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 223 → 76 个特征
✅ Layer 0 计算完成,耗时: 172.00s
⚡ 执行 Layer 1: 93 个表达式
📝 Layer 1 表达式:
wqa_975873--para8_4: delta(ts_rank((@in_turnover * @in_adjopen), 8), 4)
wqa_969408--para16_8: ts_product(ts_product((@in_adjclose / @in_adjopen), 16), 8)
wqa_988138--para16_8: ts_sum(ts_max((@in_adjvwap / @in_adjhigh), 16), 8)
wqa_969408--para8_4: ts_product(ts_product((@in_adjclose / @in_adjopen), 8), 4)
wqa_978313--para16_8: ts_rank(power(ts_sum(@in_adjclose, 16), 2), 8)
wqa_970655--para4: power(delta((@in_adjvwap / @in_adjhigh), 4), 2)
wqa_967783--para32_16: ts_max(ts_max((@in_adjlow / @in_adjhigh), 32), 16)
wqa_966834--para64_32: delta(ts_min((@in_adjclose + @in_adjopen), 64), 32)
wqa_978851--para16: ts_rank(power((@in_turnover * @in_adjhigh), 2), 16)
wqa_968556--para16_8: ts_min(ts_min((@in_adjhigh - @in_adjlow), 16), 8)
wqa_967783--para64_32: ts_max(ts_max((@in_adjlow / @in_adjhigh), 64), 32)
wqa_974219--para16_8: ts_min(ts_max((@in_open_interest / @in_adjhigh), 16), 8)
wqa_968425--para16_8: ts_sum(ts_wmean((@in_adjopen / @in_adjclose), 16), 8)
wqa_978851--para8: ts_rank(power((@in_turnover * @in_adjhigh), 2), 8)
wqa_987426--para64_32: ts_min(delta(abs(@in_adjhigh), 64), 32)
minute_cos: cos(2 * 3.14159265 * @in_minute / 60)
wqa_966834--para16_8: delta(ts_min((@in_adjclose + @in_adjopen), 16), 8)
wqa_966834--para8_4: delta(ts_min((@in_adjclose + @in_adjopen), 8), 4)
wqa_968425--para64_32: ts_sum(ts_wmean((@in_adjopen / @in_adjclose), 64), 32)
wqa_975873--para32_16: delta(ts_rank((@in_turnover * @in_adjopen), 32), 16)
wqa_988138--para32_16: ts_sum(ts_max((@in_adjvwap / @in_adjhigh), 32), 16)
wqa_973227--para64_32: ts_rank(delta((@in_adjhigh - @in_adjlow), 64), 32)
wqa_973227--para8_4: ts_rank(delta((@in_adjhigh - @in_adjlow), 8), 4)
wqa_978759--para0: (1/(1+exp(-(1/(1+exp(-(@in_adjopen - @in_adjlow)))))))
wqa_964071--para8_4: delta(ts_wmean(power(@in_adjclose, 0.5), 8), 4)
wqa_987426--para32_16: ts_min(delta(abs(@in_adjhigh), 32), 16)
wqa_978313--para64_32: ts_rank(power(ts_sum(@in_adjclose, 64), 2), 32)
wqa_971296--para64_32: ts_min(power(delta(@in_adjclose, 64), 2), 32)
price_ma_long_ratio: @in_adjclose / ts_mean(@in_adjclose, 20) - 1
wqa_981960--para4: ts_rank(abs((@in_adjopen * @in_turnover)), 4)
wqa_966340--para32_16: ts_rank(ts_sum(where(@in_adjhigh < @in_adjclose, @in_adjhigh, @in_adjclose), 32), 16)
wqa_971296--para8_4: ts_min(power(delta(@in_adjclose, 8), 2), 4)
wqa_970325--para0: (1/ power((@in_adjhigh / @in_adjlow), 0.5))
ma_ratio: ts_mean(@in_adjclose, 5) / ts_mean(@in_adjclose, 20) - 1
wqa_968556--para64_32: ts_min(ts_min((@in_adjhigh - @in_adjlow), 64), 32)
wqa_981960--para8: ts_rank(abs((@in_adjopen * @in_turnover)), 8)
wqa_968556--para32_16: ts_min(ts_min((@in_adjhigh - @in_adjlow), 32), 16)
month_cos: cos(2 * 3.14159265 * @in_month / 12)
wqa_978851--para32: ts_rank(power((@in_turnover * @in_adjhigh), 2), 32)
wqa_981960--para32: ts_rank(abs((@in_adjopen * @in_turnover)), 32)
wqa_975873--para16_8: delta(ts_rank((@in_turnover * @in_adjopen), 16), 8)
wqa_965512--para64_32: abs(ts_wmean(ts_corr(@in_adjclose, @in_adjopen, 64), 32))
wqa_978313--para8_4: ts_rank(power(ts_sum(@in_adjclose, 8), 2), 4)
wqa_978313--para32_16: ts_rank(power(ts_sum(@in_adjclose, 32), 2), 16)
wqa_970655--para32: power(delta((@in_adjvwap / @in_adjhigh), 32), 2)
wqa_988138--para64_32: ts_sum(ts_max((@in_adjvwap / @in_adjhigh), 64), 32)
2025-07-28 19:20:46 | INFO | stage_calcualator:add_mappings_to_df:52 - 添加映射特征: ganzhi_lookup join类型: ['date', 'hour']
2025-07-28 19:21:36 | WARNING | feature_base:check_trade_date_is_current:29 - process_feature last_trade_time 2025-07-11 15:15:00 日期不是今天(2025-07-28),可能不是最新数据
2025-07-28 19:23:24 | INFO | feature_gen:main:148 - {'action': 'success', 'description': 'feature_gen 完成'}
wqa_973227--para16_8: ts_rank(delta((@in_adjhigh - @in_adjlow), 16), 8)
wqa_965512--para16_8: abs(ts_wmean(ts_corr(@in_adjclose, @in_adjopen, 16), 8))
wqa_967783--para16_8: ts_max(ts_max((@in_adjlow / @in_adjhigh), 16), 8)
wqa_964071--para64_32: delta(ts_wmean(power(@in_adjclose, 0.5), 64), 32)
wqa_969408--para32_16: ts_product(ts_product((@in_adjclose / @in_adjopen), 32), 16)
wqa_965512--para32_16: abs(ts_wmean(ts_corr(@in_adjclose, @in_adjopen, 32), 16))
wqa_987426--para16_8: ts_min(delta(abs(@in_adjhigh), 16), 8)
wqa_966340--para8_4: ts_rank(ts_sum(where(@in_adjhigh < @in_adjclose, @in_adjhigh, @in_adjclose), 8), 4)
wqa_966834--para32_16: delta(ts_min((@in_adjclose + @in_adjopen), 32), 16)
price_ma_short_ratio: @in_adjclose / ts_mean(@in_adjclose, 5) - 1
wqa_974219--para64_32: ts_min(ts_max((@in_open_interest / @in_adjhigh), 64), 32)
wqa_970655--para16: power(delta((@in_adjvwap / @in_adjhigh), 16), 2)
wqa_966340--para64_32: ts_rank(ts_sum(where(@in_adjhigh < @in_adjclose, @in_adjhigh, @in_adjclose), 64), 32)
minute_sin: sin(2 * 3.14159265 * @in_minute / 60)
dow_sin: sin(2 * 3.14159265 * @in_day_of_week / 7)
wqa_964071--para16_8: delta(ts_wmean(power(@in_adjclose, 0.5), 16), 8)
wqa_965512--para8_4: abs(ts_wmean(ts_corr(@in_adjclose, @in_adjopen, 8), 4))
wqa_969626--para16_8: ts_rank(ts_wmean((@in_adjopen - @in_adjclose), 16), 8)
month_sin: sin(2 * 3.14159265 * @in_month / 12)
wqa_969626--para64_32: ts_rank(ts_wmean((@in_adjopen - @in_adjclose), 64), 32)
wqa_974219--para8_4: ts_min(ts_max((@in_open_interest / @in_adjhigh), 8), 4)
wqa_981960--para16: ts_rank(abs((@in_adjopen * @in_turnover)), 16)
wqa_968425--para8_4: ts_sum(ts_wmean((@in_adjopen / @in_adjclose), 8), 4)
wqa_971296--para32_16: ts_min(power(delta(@in_adjclose, 32), 2), 16)
wqa_974094--para32_16: ts_sum(sign(ts_cov(@in_adjhigh, @in_turnover, 32)), 16)
wqa_964071--para32_16: delta(ts_wmean(power(@in_adjclose, 0.5), 32), 16)
wqa_978851--para4: ts_rank(power((@in_turnover * @in_adjhigh), 2), 4)
wqa_969626--para8_4: ts_rank(ts_wmean((@in_adjopen - @in_adjclose), 8), 4)
wqa_969408--para64_32: ts_product(ts_product((@in_adjclose / @in_adjopen), 64), 32)
dom_cos: cos(2 * 3.14159265 * @in_day_of_month / 31)
wqa_987426--para8_4: ts_min(delta(abs(@in_adjhigh), 8), 4)
wqa_974094--para8_4: ts_sum(sign(ts_cov(@in_adjhigh, @in_turnover, 8)), 4)
wqa_974219--para32_16: ts_min(ts_max((@in_open_interest / @in_adjhigh), 32), 16)
wqa_968556--para8_4: ts_min(ts_min((@in_adjhigh - @in_adjlow), 8), 4)
wqa_975873--para64_32: delta(ts_rank((@in_turnover * @in_adjopen), 64), 32)
wqa_974094--para16_8: ts_sum(sign(ts_cov(@in_adjhigh, @in_turnover, 16)), 8)
wqa_973227--para32_16: ts_rank(delta((@in_adjhigh - @in_adjlow), 32), 16)
wqa_967783--para8_4: ts_max(ts_max((@in_adjlow / @in_adjhigh), 8), 4)
wqa_969626--para32_16: ts_rank(ts_wmean((@in_adjopen - @in_adjclose), 32), 16)
wqa_966340--para16_8: ts_rank(ts_sum(where(@in_adjhigh < @in_adjclose, @in_adjhigh, @in_adjclose), 16), 8)
dom_sin: sin(2 * 3.14159265 * @in_day_of_month / 31)
wqa_970655--para8: power(delta((@in_adjvwap / @in_adjhigh), 8), 2)
wqa_974094--para64_32: ts_sum(sign(ts_cov(@in_adjhigh, @in_turnover, 64)), 32)
dow_cos: cos(2 * 3.14159265 * @in_day_of_week / 7)
wqa_968425--para32_16: ts_sum(ts_wmean((@in_adjopen / @in_adjclose), 32), 16)
wqa_971296--para16_8: ts_min(power(delta(@in_adjclose, 16), 2), 8)
wqa_988138--para8_4: ts_sum(ts_max((@in_adjvwap / @in_adjhigh), 8), 4)
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/fbe7911d62e05ce6f1a8798851b6499e.json
⏳ 缓存未命中,开始首次解析 93 个表达式...
🔄 批量解析 93 个表达式到图 'process_feature_with_spec_expressions_layer_1'...
✅ 批量解析完成: 93/93 成功, 图包含 331 个节点
💾 正在保存Graph缓存: 331 个节点...
✅ 缓存已保存: cache/graphs/fbe7911d62e05ce6f1a8798851b6499e.json
📊 成功序列化: 331/331 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 407 → 169 个特征
✅ Layer 1 计算完成,耗时: 546.80s
✅ 智能分层计算完成: 计算了 146 个特征
🧹 最终清理: 169 → 169 列
添加全局映射特征