{"nodes": [{"id": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "label": "main_strategy_single_file.py", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L1"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "label": "spearmanr()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L17"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "label": "BaseFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L29"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L31"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L35"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "label": ".normalize()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L39"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "label": ".cross_sectional_rank()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L63"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "label": ".process()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L72"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor", "label": "PEFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L81"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L83"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L86"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor", "label": "PBFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L95"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L97"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L100"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor", "label": "ROEFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L109"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L111"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L114"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor", "label": "Momentum1MFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L121"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L123"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L127"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor", "label": "Momentum3MFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L139"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L141"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L145"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor", "label": "VolatilityFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L157"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L159"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L163"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor", "label": "SizeFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L178"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L180"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L183"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "label": "SectorStrengthFactor", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L196"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L198"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "label": ".calculate_raw()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L202"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "label": "FactorCombiner", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L238"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L240"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "label": ".combine()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L250"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_update_weights", "label": ".update_weights()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L268"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_get_weights", "label": ".get_weights()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L272"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "label": "DynamicWeightAdjuster", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L276"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L279"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "label": ".update_monthly_ic()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L293"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "label": ".calculate_weights()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L314"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_get_avg_ic", "label": ".get_avg_ic()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L341"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "label": "MarketValuationTiming", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L351"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L353"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_update_monthly", "label": ".update_monthly()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L369"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_calculate_target_position", "label": ".calculate_target_position()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L375"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_get_current_quantile", "label": ".get_current_quantile()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L392"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "label": "MultiFactorDynamicStrategy", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L401"}, {"id": "ctatemplate", "label": "CtaTemplate", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L432"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_init", "label": ".on_init()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L494"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_start", "label": ".on_start()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L498"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_stop", "label": ".on_stop()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L501"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_bar", "label": ".on_bar()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L504"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "label": "._check_risk_control()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L516"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_need_rebalance", "label": "._need_rebalance()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L546"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_factors", "label": ".calculate_factors()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L561"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "label": ".select_stocks()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L565"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "label": ".calculate_weights_for_selected()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L576"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "label": ".update_dynamic_weights()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L612"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "label": ".update_market_timing()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L632"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "label": ".rebalance()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L643"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_current_market_data", "label": ".get_current_market_data()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L677"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_market_pe", "label": ".calculate_market_pe()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L680"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "label": ".rebalance_portfolio()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L687"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "label": "._get_stock_info_list()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L717"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "label": "._get_portfolio_info()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L741"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_30", "label": "\u56e0\u5b50\u57fa\u7c7b - \u6240\u6709\u56e0\u5b50\u7ee7\u627f\u6b64\u7c7b\uff0c\u5b9a\u4e49\u7edf\u4e00\u7684\u56e0\u5b50\u8ba1\u7b97\u63a5\u53e3", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L30"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_73", "label": "\u5b8c\u6574\u5904\u7406\u6d41\u7a0b: \u539f\u59cb\u8ba1\u7b97 \u2192 \u6807\u51c6\u5316 \u2192 rank", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L73"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_197", "label": "\u677f\u5757\u5f3a\u5ea6\u56e0\u5b50 - \u677f\u5757\u5f3a\u5ea6\u8d8a\u9ad8\u8d8a\u597d\uff0c\u9002\u914d\u7ed3\u6784\u5316\u884c\u60c5", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L197"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_239", "label": "\u56e0\u5b50\u5408\u6210\u5668 - \u628a\u591a\u4e2a\u56e0\u5b50\u6309\u6743\u91cd\u5408\u6210\u6700\u7ec8\u5f97\u5206", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L239"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_277", "label": "\u52a8\u6001\u6743\u91cd\u8c03\u6574\u5668 - \u6839\u636e\u6eda\u52a8IC\u81ea\u52a8\u8c03\u6574\u56e0\u5b50\u6743\u91cd", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L277"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_352", "label": "\u5168\u5e02\u573a\u4f30\u503c\u62e9\u65f6 - \u6839\u636ePE\u5206\u4f4d\u6570\u8c03\u6574\u6574\u4f53\u4ed3\u4f4d", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L352"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_402", "label": "\u8fdb\u9636\u591a\u56e0\u5b50\u52a8\u6001\u52a0\u6743\u7b56\u7565 \u7279\u70b9: 1. \u591a\u56e0\u5b50\u590d\u5408\u9009\u80a1 2. \u52a8\u6001\u52a0\u6743\uff08\u6839\u636eIC\u8c03\u6574\uff09 3. \u4f30\u503c\u62e9\u65f6\uff08\u8c03\u6574\u6574\u4f53\u4ed3\u4f4d\uff09 4", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L402"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_742", "label": "\u8f6c\u6362\u7ec4\u5408\u4fe1\u606f\u4e3a\u98ce\u63a7PortfolioInfo", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L742"}], "edges": [{"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L8", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "numpy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L9", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "vnpy_app_cta_strategy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L10", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "vnpy_trader_object", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L11", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "risk_control", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L14", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L17", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L29", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L31", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L35", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L39", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L63", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L72", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L81", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L81", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L83", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L86", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L95", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L95", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L97", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L100", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L109", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L109", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L111", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L114", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L121", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L121", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L123", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L127", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L139", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L139", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L141", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L145", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L157", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L157", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L159", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L163", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L178", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L178", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L180", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L183", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L196", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L196", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L198", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L202", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L238", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L240", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L250", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_update_weights", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L268", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_get_weights", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L272", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L276", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L279", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L293", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L314", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_get_avg_ic", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L341", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L351", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L353", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_update_monthly", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L369", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_calculate_target_position", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L375", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_get_current_quantile", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L392", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_single_file_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L401", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "ctatemplate", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L401", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L432", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L494", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_start", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L498", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_stop", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L501", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_bar", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L504", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L516", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_need_rebalance", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L546", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_factors", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L561", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L565", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L576", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L612", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L632", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L643", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_current_market_data", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L677", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_market_pe", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L680", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L687", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L717", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L741", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L74", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L75", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L76", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L84", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L98", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L112", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L124", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L142", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L160", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L181", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L199", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L255", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L305", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L446", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L447", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L448", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L449", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L450", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L451", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L452", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L453", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L468", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L472", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L478", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_get_weights", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L487", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_bar", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L508", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_bar", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_need_rebalance", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L510", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_bar", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L513", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L523", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L524", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_factors", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L562", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L622", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L625", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L626", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_update_weights", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L627", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_update_monthly", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L636", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_calculate_target_position", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L637", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_get_current_quantile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L639", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_current_market_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L644", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L651", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_market_pe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L654", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L655", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_factors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L657", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L663", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L669", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L671", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_30", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L30", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_73", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_process", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L73", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_197", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L197", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_239", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L239", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_277", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L277", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_352", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L352", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_402", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L402", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_rationale_742", "target": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L742", "weight": 1.0}], "raw_calls": [{"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "callee": "rank", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L19"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "callee": "rank", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L20"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L22"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L22"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_spearmanr", "callee": "sum", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L25"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L41"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L42"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "median", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L45"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "median", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L46"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "abs", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L46"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "clip", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L51"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L53"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_normalize", "callee": "std", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L54"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L65"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "callee": "rank", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L66"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L66"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_basefactor_cross_sectional_rank", "callee": "rank", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L68"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L84"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L88"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pefactor_calculate_raw", "callee": "where", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L91"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L98"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L102"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_pbfactor_calculate_raw", "callee": "where", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L105"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L112"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_roefactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L116"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L124"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L129"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L131"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L132"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L132"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L134"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum1mfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L134"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L142"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L147"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L149"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L150"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L150"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L152"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_momentum3mfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L152"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L160"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L165"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L167"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L168"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L168"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "std", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L169"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L169"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L169"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "droplevel", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L170"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L172"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L172"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "std", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L173"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_volatilityfactor_calculate_raw", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L173"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L181"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L188"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sizefactor_calculate_raw", "callee": "log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L192"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L199"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L204"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L206"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L207"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L207"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "pct_change", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L209"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L209"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L211"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "max", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L212"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "get_level_values", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L212"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "copy", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L213"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "xs", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L213"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "max", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L216"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "copy", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L217"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L220"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L221"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L221"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L222"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L225"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_sectorstrengthfactor_calculate_raw", "callee": "iterrows", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L226"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_init", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L244"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_init", "callee": "sum", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L247"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_init", "callee": "values", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L247"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_init", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L248"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L253"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "callee": "add", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L261"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_combine", "callee": "sort_values", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L264"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_update_weights", "callee": "sum", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L269"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_update_weights", "callee": "values", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L269"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_update_weights", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L270"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_factorcombiner_get_weights", "callee": "copy", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L273"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L299"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "callee": "concat", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L299"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "callee": "append", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L307"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L309"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_update_monthly_ic", "callee": "pop", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L310"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L318"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L319"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "max", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L330"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "sum", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L332"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "values", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L332"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L334"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_calculate_weights", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L336"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_get_avg_ic", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L343"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_get_avg_ic", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L344"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_dynamicweightadjuster_get_avg_ic", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L345"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_update_monthly", "callee": "append", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L370"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_update_monthly", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L372"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_update_monthly", "callee": "pop", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L373"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_calculate_target_position", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L376"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_calculate_target_position", "callee": "array", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L380"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_calculate_target_position", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L381"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_get_current_quantile", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L393"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_get_current_quantile", "callee": "array", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L397"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_marketvaluationtiming_get_current_quantile", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L398"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "super", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L433"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L435"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L436"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L437"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L438"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L439"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L440"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L441"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L442"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "getattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L443"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "list", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L471"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "keys", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L471"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_init", "callee": "RiskController", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L492"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_init", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L495"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_init", "callee": "load_bar", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L496"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_start", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L499"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_stop", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L502"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_on_bar", "callee": "date", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L505"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "callee": "get_all_holds", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L519"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "callee": "post_trade_check", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L527"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L535"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "callee": "sell", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L536"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L542"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_check_risk_control", "callee": "put_order", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L544"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_need_rebalance", "callee": "isocalendar", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L554"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_need_rebalance", "callee": "isocalendar", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L555"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L566"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L566"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "callee": "int", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L571"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "callee": "tolist", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L573"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_select_stocks", "callee": "head", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L573"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L577"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "callee": "isin", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L581"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L596"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "callee": "sum", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L604"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_weights_for_selected", "callee": "values", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L604"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "last", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L616"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L616"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "last", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L617"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L617"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L621"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "DataFrame", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L624"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_dynamic_weights", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L630"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_update_market_timing", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L641"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L646"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L647"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "hasattr", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L650"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L659"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L659"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L660"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L665"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L666"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "write_log", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L675"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L675"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_market_pe", "callee": "dropna", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L681"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_market_pe", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L683"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_calculate_market_pe", "callee": "median", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L685"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "get_all_holds", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L688"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "sell", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L692"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L694"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "get_last_price", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L696"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "int", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L700"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "get", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L705"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "buy", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L710"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "sell", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L713"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_rebalance_portfolio", "callee": "put_order", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L715"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L720"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "callee": "get_last_price", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L722"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "callee": "StockInfo", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L728"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_stock_info_list", "callee": "append", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L738"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "callee": "get_all_holds", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L747"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "callee": "items", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L748"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "callee": "get_last_price", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L749"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_single_file_multifactordynamicstrategy_get_portfolio_info", "callee": "PortfolioInfo", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy_single_file.py", "source_location": "L753"}]}