LogViewer
🚀 配置极致并行计算环境...
⚡ 配置并行计算环境...
   💻 物理CPU核心: 16
   ⚡ Polars可用核心: 16
   ✅ 最大线程数: 16
   ✅ 流式chunk: 500000
   ✅ Rayon线程: 16
🔄 正在从 OpRegistry 同步算子...
✅ 成功同步 61 个算子从 OpRegistry
🔧 正在应用增强元数据...
✅ 成功应用 61 个算子的增强元数据
done

2025-07-28 19:06:25 | INFO | feature_base:main:206 - {'action': 'start_process', 'description': '开始特征处理流程', 'time_bar': 5, 'pred_periods': 12}
2025-07-28 19:06:26 | INFO | feature_base:__init__:59 - {'action': 'init_HFDataProcessor', 'time_bar': 5}
2025-07-28 19:06:54 | INFO | stage_calcualator:add_mappings_to_df:52 - 添加映射特征: ganzhi_lookup join类型: ['date', 'hour']
2025-07-28 19:07:29 | 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:07:30 | INFO | feature_base:__init__:59 - {'action': 'init_HFDataProcessor', 'time_bar': 5}
加载干支特征完成
添加全局映射特征
🎯 智能分层计算: 目标特征 66 个
📝 输入列: ['cate_comd', 'cate_exchange', 'cate_sector', 'close', 'comd', 'contract', 'contract_month', 'contract_multiplier', 'contract_yymm', 'date']...
📊 计算层级: 2 层
  Layer 0: 35 个特征
  Layer 1: 31 个特征
⚡ 执行 Layer 0: 35 个表达式
📝 Layer 0 表达式:
    contract_month_cos: cos(2 * 3.14159265 * (@in_contract_month) / 12)
    hour_sin: sin(2 * 3.14159265 * @in_hour / 24)
    oi_change: delta(@in_open_interest, 1)
    return: (@in_close * @in_factor_multiply) / shift(@in_close * @in_factor_multiply, 1) - 1
    quarter: dt_quarter(@in_trade_time)
    adv: ts_mean(@in_volume, 20)
    day_of_week: dt_weekday(@in_trade_time)
    woy_cos: cos(2 * 3.14159265 * dt_week(@in_trade_time) / 52)
    hour: dt_hour(@in_trade_time)
    vwap: (@in_close + @in_high + @in_low + @in_open )/ 4
    woy_sin: sin(2 * 3.14159265 * dt_week(@in_trade_time) / 52)
    minute: dt_minute(@in_trade_time)
    log_return: log(@in_close * @in_factor_multiply) - log(shift(@in_close * @in_factor_multiply, 1))
    doy_cos: cos(2 * 3.14159265 * dt_dayofyear(@in_trade_time) / 365)
    week_of_year: dt_week(@in_trade_time)
    day_of_month: dt_day(@in_trade_time)
    oi_momentum_5: delta(@in_open_interest, 5)
    oi_ratio: @in_open_interest / ts_mean(@in_open_interest, 20)
    date: dt_date(@in_trade_time)
    year: dt_year(@in_trade_time)
    adjlow: @in_low * @in_factor_multiply
    day_of_year: dt_dayofyear(@in_trade_time)
    adjopen: @in_open * @in_factor_multiply
    month: dt_month(@in_trade_time)
    volume_ratio: @in_volume / ts_mean(@in_volume, 20)
    adjpre_settle: @in_pre_settle * @in_factor_multiply
    second: dt_second(@in_trade_time)
    hour_cos: cos(2 * 3.14159265 * @in_hour / 24)
    turnover_ratio: @in_turnover / ts_mean(@in_turnover, 20)
    adjclose: @in_close * @in_factor_multiply
    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)))))
    adjhigh: @in_high * @in_factor_multiply
    doy_sin: sin(2 * 3.14159265 * dt_dayofyear(@in_trade_time) / 365)
    contract_month_sin: sin(2 * 3.14159265 * @in_contract_month / 12)
    adjvwap: @in_vwap * @in_factor_multiply
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/5c6b995513168443d1b0fdca1c6f9826.json
⏳ 缓存未命中,开始首次解析 35 个表达式...
🔄 批量解析 35 个表达式到图 'process_feature_layer_0'...
✅ 批量解析完成: 35/35 成功, 图包含 114 个节点
💾 正在保存Graph缓存: 114 个节点...
✅ 缓存已保存: cache/graphs/5c6b995513168443d1b0fdca1c6f9826.json
📊 成功序列化: 114/114 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 137 → 58 个特征
✅ Layer 0 计算完成,耗时: 12.59s
⚡ 执行 Layer 1: 31 个表达式
📝 Layer 1 表达式:
    adjlow_ma_ratio: @in_adjlow / ts_mean(@in_adjlow, 20) - 1
    dom_sin: sin(2 * 3.14159265 * @in_day_of_month / 31)
    minute_sin: sin(2 * 3.14159265 * @in_minute / 60)
    dom_cos: cos(2 * 3.14159265 * @in_day_of_month / 31)
    minute_cos: cos(2 * 3.14159265 * @in_minute / 60)
    dow_cos: cos(2 * 3.14159265 * @in_day_of_week / 7)
    dow_sin: sin(2 * 3.14159265 * @in_day_of_week / 7)
    momentum_10: delta(@in_adjclose, 10)
    price_ma_long_ratio: @in_adjclose / ts_mean(@in_adjclose, 20) - 1
    month_sin: sin(2 * 3.14159265 * @in_month / 12)
    volume_weighted_return: (@in_adjclose / shift(@in_adjclose, 1) - 1) * @in_volume / ts_mean(@in_volume, 20)
    volatility_20: ts_std(@in_adjclose, 20)
    basis_ratio: (@in_adjclose - @in_adjpre_settle) / @in_adjpre_settle
    momentum_5: delta(@in_adjclose, 5)
    month_cos: cos(2 * 3.14159265 * @in_month / 12)
    price_change_rate_5: (@in_adjclose - shift(@in_adjclose, 5)) / shift(@in_adjclose, 5)
    adjclose_position: (@in_adjclose - @in_adjlow) / (@in_adjhigh - @in_adjlow + 0.0001)
    adjhigh_adjlow_ratio: (@in_adjhigh - @in_adjlow) / @in_adjclose
    ma_ratio: ts_mean(@in_adjclose, 5) / ts_mean(@in_adjclose, 20) - 1
    price_change_rate_20: (@in_adjclose - shift(@in_adjclose, 20)) / shift(@in_adjclose, 20)
    price_ma_short_ratio: @in_adjclose / ts_mean(@in_adjclose, 5) - 1
    volatility_5: ts_std(@in_adjclose, 5)
    bb_position: (@in_adjclose - (ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20))) / ((ts_mean(@in_adjclose, 20) + 2 * ts_std(@in_adjclose, 20)) - (ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20)) + 0.0001)
    bb_upper: ts_mean(@in_adjclose, 20) + 2 * ts_std(@in_adjclose, 20)
    adjhigh_ma_ratio: @in_adjhigh / ts_mean(@in_adjhigh, 20) - 1
    bb_width: (ts_mean(@in_adjclose, 20) + 2 * ts_std(@in_adjclose, 20)) - (ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20))
    volatility_10: ts_std(@in_adjclose, 10)
    bb_adjlower: ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20)
    momentum_20: delta(@in_adjclose, 20)
    price_position: (@in_adjclose - ts_min(@in_adjlow, 20)) / (ts_max(@in_adjhigh, 20) - ts_min(@in_adjlow, 20) + 0.0001)
    basis: @in_adjclose - @in_adjpre_settle
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/2b3a26b49975f9eca2fad8443a4e7535.json
⏳ 缓存未命中,开始首次解析 31 个表达式...
🔄 批量解析 31 个表达式到图 'process_feature_layer_1'...
✅ 批量解析完成: 31/31 成功, 图包含 111 个节点
💾 正在保存Graph缓存: 111 个节点...
✅ 缓存已保存: cache/graphs/2b3a26b49975f9eca2fad8443a4e7535.json
📊 成功序列化: 111/111 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 169 → 89 个特征
✅ Layer 1 计算完成,耗时: 9.47s
✅ 智能分层计算完成: 计算了 66 个特征
🧹 最终清理: 89 → 89 列
添加全局映射特征
添加全局映射特征
🎯 智能分层计算: 目标特征 26 个
📝 输入列: ['cate_comd', 'cate_exchange', 'cate_sector', 'close', 'comd', 'contract', 'contract_month', 'contract_multiplier', 'contract_yymm', 'date']...
📊 计算层级: 4 层
  Layer 0: 21 个特征
  Layer 1: 1 个特征
  Layer 2: 1 个特征
  Layer 3: 3 个特征
⚡ 执行 Layer 0: 21 个表达式
📝 Layer 0 表达式:
    price_diff_ALL: @in_close - shift(@in_close, 12)
    day_of_week: dt_weekday(@in_trade_time)
    prev_close: shift(@in_close, 1)
    adjpre_settle: @in_pre_settle * @in_factor_multiply
    second: dt_second(@in_trade_time)
    day_of_month: dt_day(@in_trade_time)
    return: (@in_close * @in_factor_multiply) / shift(@in_close * @in_factor_multiply, 1) - 1
    hour: dt_hour(@in_trade_time)
    price_diff_TQ: shift(@in_close, 3) - shift(@in_close, 12)
    adjclose: @in_close * @in_factor_multiply
    date: dt_date(@in_trade_time)
    year: dt_year(@in_trade_time)
    vwap: (@in_close + @in_high + @in_low + @in_open )/ 4
    adjlow: @in_low * @in_factor_multiply
    adjhigh: @in_high * @in_factor_multiply
    adjopen: @in_open * @in_factor_multiply
    price_diff_TH: shift(@in_close, 6) - shift(@in_close, 12)
    month: dt_month(@in_trade_time)
    minute: dt_minute(@in_trade_time)
    log_return: log(@in_close * @in_factor_multiply) - log(shift(@in_close * @in_factor_multiply, 1))
    adjvwap: @in_vwap * @in_factor_multiply
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/c62f9274cad669e8826cc8ca4750e0d9.json
⏳ 缓存未命中,开始首次解析 21 个表达式...
🔄 批量解析 21 个表达式到图 'process_feature_layer_0'...
✅ 批量解析完成: 21/21 成功, 图包含 57 个节点
💾 正在保存Graph缓存: 57 个节点...
✅ 缓存已保存: cache/graphs/c62f9274cad669e8826cc8ca4750e0d9.json
📊 成功序列化: 57/57 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
2025-07-28 19:07:42 | WARNING | feature_base:check_trade_date_is_current:29 - process_pctchg last_trade_time 2025-07-11 15:15:00 日期不是今天(2025-07-28),可能不是最新数据
2025-07-28 19:07:43 | INFO | feature_base:__init__:59 - {'action': 'init_HFDataProcessor', 'time_bar': 5}
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 80 → 44 个特征
✅ Layer 0 计算完成,耗时: 5.04s
⚡ 执行 Layer 1: 1 个表达式
📝 Layer 1 表达式:
    tr: max(@in_high - @in_low, max(abs(@in_high - @in_prev_close), abs(@in_low - @in_prev_close)))
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/9a0763f9fdedc752693116723a1342f2.json
⏳ 缓存未命中,开始首次解析 1 个表达式...
🔄 批量解析 1 个表达式到图 'process_feature_layer_1'...
✅ 批量解析完成: 1/1 成功, 图包含 8 个节点
💾 正在保存Graph缓存: 8 个节点...
✅ 缓存已保存: cache/graphs/9a0763f9fdedc752693116723a1342f2.json
📊 成功序列化: 8/8 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 52 → 45 个特征
✅ Layer 1 计算完成,耗时: 0.19s
⚡ 执行 Layer 2: 1 个表达式
📝 Layer 2 表达式:
    atr_10d: ts_median(@in_tr, 120)
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/1a2c44a5c40058179797b54eb7074aa7.json
⏳ 缓存未命中,开始首次解析 1 个表达式...
🔄 批量解析 1 个表达式到图 'process_feature_layer_2'...
✅ 批量解析完成: 1/1 成功, 图包含 3 个节点
💾 正在保存Graph缓存: 3 个节点...
✅ 缓存已保存: cache/graphs/1a2c44a5c40058179797b54eb7074aa7.json
📊 成功序列化: 3/3 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 48 → 46 个特征
✅ Layer 2 计算完成,耗时: 0.41s
⚡ 执行 Layer 3: 3 个表达式
📝 Layer 3 表达式:
    TH: clip(@in_price_diff_TH / (shift(@in_atr_10d, 12) * 6), -1, 1)
    ALL: clip(@in_price_diff_ALL / (shift(@in_atr_10d, 12) * 12), -1, 1)
    TQ: clip(@in_price_diff_TQ / (shift(@in_atr_10d, 12) * 9), -1, 1)
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
📂 缓存文件不存在: cache/graphs/d9d50f5d48e68cb05e3dda114bd990fc.json
⏳ 缓存未命中,开始首次解析 3 个表达式...
🔄 批量解析 3 个表达式到图 'process_feature_layer_3'...
✅ 批量解析完成: 3/3 成功, 图包含 19 个节点
💾 正在保存Graph缓存: 19 个节点...
✅ 缓存已保存: cache/graphs/d9d50f5d48e68cb05e3dda114bd990fc.json
📊 成功序列化: 19/19 个节点
💾 解析完成并已缓存,下次访问将秒级返回!
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 65 → 49 个特征
✅ Layer 3 计算完成,耗时: 0.85s
✅ 智能分层计算完成: 计算了 26 个特征
🧹 最终清理: 49 → 49 列
添加全局映射特征
🎯 智能分层计算: 目标特征 66 个
📝 输入列: ['bpv', 'cate_comd', 'cate_exchange', 'cate_sector', 'close', 'close_position_fee_per_hand', 'close_position_rate_amount', 'close_today_fee_per_hand', 'close_today_rate_amount', 'comd']...
📊 计算层级: 2 层
  Layer 0: 35 个特征
  Layer 1: 31 个特征
⚡ 执行 Layer 0: 35 个表达式
📝 Layer 0 表达式:
    contract_month_cos: cos(2 * 3.14159265 * (@in_contract_month) / 12)
    hour_sin: sin(2 * 3.14159265 * @in_hour / 24)
    oi_change: delta(@in_open_interest, 1)
    return: (@in_close * @in_factor_multiply) / shift(@in_close * @in_factor_multiply, 1) - 1
    quarter: dt_quarter(@in_trade_time)
    adv: ts_mean(@in_volume, 20)
    day_of_week: dt_weekday(@in_trade_time)
    woy_cos: cos(2 * 3.14159265 * dt_week(@in_trade_time) / 52)
    hour: dt_hour(@in_trade_time)
    vwap: (@in_close + @in_high + @in_low + @in_open )/ 4
    woy_sin: sin(2 * 3.14159265 * dt_week(@in_trade_time) / 52)
    minute: dt_minute(@in_trade_time)
    log_return: log(@in_close * @in_factor_multiply) - log(shift(@in_close * @in_factor_multiply, 1))
    doy_cos: cos(2 * 3.14159265 * dt_dayofyear(@in_trade_time) / 365)
    week_of_year: dt_week(@in_trade_time)
    day_of_month: dt_day(@in_trade_time)
    oi_momentum_5: delta(@in_open_interest, 5)
    oi_ratio: @in_open_interest / ts_mean(@in_open_interest, 20)
    date: dt_date(@in_trade_time)
    year: dt_year(@in_trade_time)
    adjlow: @in_low * @in_factor_multiply
    day_of_year: dt_dayofyear(@in_trade_time)
    adjopen: @in_open * @in_factor_multiply
    month: dt_month(@in_trade_time)
    volume_ratio: @in_volume / ts_mean(@in_volume, 20)
    adjpre_settle: @in_pre_settle * @in_factor_multiply
    second: dt_second(@in_trade_time)
    hour_cos: cos(2 * 3.14159265 * @in_hour / 24)
    turnover_ratio: @in_turnover / ts_mean(@in_turnover, 20)
    adjclose: @in_close * @in_factor_multiply
    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)))))
    adjhigh: @in_high * @in_factor_multiply
    doy_sin: sin(2 * 3.14159265 * dt_dayofyear(@in_trade_time) / 365)
    contract_month_sin: sin(2 * 3.14159265 * @in_contract_month / 12)
    adjvwap: @in_vwap * @in_factor_multiply
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
⚡ 正在从缓存加载Graph...
✅ 从缓存成功加载: 114 个节点
🚀 缓存命中!秒级返回 114 个节点
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 145 → 66 个特征
✅ Layer 0 计算完成,耗时: 10.28s
⚡ 执行 Layer 1: 31 个表达式
📝 Layer 1 表达式:
    adjlow_ma_ratio: @in_adjlow / ts_mean(@in_adjlow, 20) - 1
    dom_sin: sin(2 * 3.14159265 * @in_day_of_month / 31)
    minute_sin: sin(2 * 3.14159265 * @in_minute / 60)
    dom_cos: cos(2 * 3.14159265 * @in_day_of_month / 31)
    minute_cos: cos(2 * 3.14159265 * @in_minute / 60)
    dow_cos: cos(2 * 3.14159265 * @in_day_of_week / 7)
    dow_sin: sin(2 * 3.14159265 * @in_day_of_week / 7)
    momentum_10: delta(@in_adjclose, 10)
    price_ma_long_ratio: @in_adjclose / ts_mean(@in_adjclose, 20) - 1
    month_sin: sin(2 * 3.14159265 * @in_month / 12)
    volume_weighted_return: (@in_adjclose / shift(@in_adjclose, 1) - 1) * @in_volume / ts_mean(@in_volume, 20)
    volatility_20: ts_std(@in_adjclose, 20)
    basis_ratio: (@in_adjclose - @in_adjpre_settle) / @in_adjpre_settle
    momentum_5: delta(@in_adjclose, 5)
    month_cos: cos(2 * 3.14159265 * @in_month / 12)
    price_change_rate_5: (@in_adjclose - shift(@in_adjclose, 5)) / shift(@in_adjclose, 5)
    adjclose_position: (@in_adjclose - @in_adjlow) / (@in_adjhigh - @in_adjlow + 0.0001)
    adjhigh_adjlow_ratio: (@in_adjhigh - @in_adjlow) / @in_adjclose
    ma_ratio: ts_mean(@in_adjclose, 5) / ts_mean(@in_adjclose, 20) - 1
    price_change_rate_20: (@in_adjclose - shift(@in_adjclose, 20)) / shift(@in_adjclose, 20)
    price_ma_short_ratio: @in_adjclose / ts_mean(@in_adjclose, 5) - 1
    volatility_5: ts_std(@in_adjclose, 5)
    bb_position: (@in_adjclose - (ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20))) / ((ts_mean(@in_adjclose, 20) + 2 * ts_std(@in_adjclose, 20)) - (ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20)) + 0.0001)
    bb_upper: ts_mean(@in_adjclose, 20) + 2 * ts_std(@in_adjclose, 20)
    adjhigh_ma_ratio: @in_adjhigh / ts_mean(@in_adjhigh, 20) - 1
    bb_width: (ts_mean(@in_adjclose, 20) + 2 * ts_std(@in_adjclose, 20)) - (ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20))
    volatility_10: ts_std(@in_adjclose, 10)
    bb_adjlower: ts_mean(@in_adjclose, 20) - 2 * ts_std(@in_adjclose, 20)
    momentum_20: delta(@in_adjclose, 20)
    price_position: (@in_adjclose - ts_min(@in_adjlow, 20)) / (ts_max(@in_adjhigh, 20) - ts_min(@in_adjlow, 20) + 0.0001)
    basis: @in_adjclose - @in_adjpre_settle
🏗️ 构建计算图...
🗂️ Graph缓存目录: cache/graphs
🔍 检查表达式缓存...
⚡ 正在从缓存加载Graph...
✅ 从缓存成功加载: 111 个节点
🚀 缓存命中!秒级返回 111 个节点
✅ 计算图构建完成,开始执行计算...
🧹 智能清理: 177 → 97 个特征
✅ Layer 1 计算完成,耗时: 8.20s
2025-07-28 19:08:30 | WARNING | feature_base:check_trade_date_is_current:29 - process_fee last_trade_time 2025-07-11 15:15:00 日期不是今天(2025-07-28),可能不是最新数据
2025-07-28 19:08:30 | INFO | feature_base:main:219 - {'action': 'success', 'description': 'feature_base_pltrait 完成'}
✅ 智能分层计算完成: 计算了 66 个特征
🧹 最终清理: 97 → 97 列