Files
sanguo_quant_live/graphify-out/cache/ast/48f8364bb0d89385c08b0204b961292d4215feaa7aa6cfc7334553400c1e5068.json
T
2026-05-06 23:13:05 +08:00

1 line
54 KiB
JSON

{"nodes": [{"id": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "label": "main_strategy.py", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L1"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "label": "MultiFactorDynamicStrategy", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L26"}, {"id": "ctatemplate", "label": "CtaTemplate", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L59"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "label": "._init_factors()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L114"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L137"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L142"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L146"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L150"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L167"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L185"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L201"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L223"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L273"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L296"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L310"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L346"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "label": ".calculate_forward_returns()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L358"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L368"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_1", "label": "\u8fdb\u9636\u591a\u56e0\u5b50+\u52a8\u6001\u52a0\u6743+\u4f30\u503c\u62e9\u65f6 A\u80a1\u91cf\u5316\u4e2d\u4f4e\u9891\u7b56\u7565 \u4e3b\u7b56\u7565\u5b9e\u73b0\uff0c\u9075\u5faavn.py CtaStrategy\u63a5\u53e3", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L1"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_27", "label": "\u8fdb\u9636\u591a\u56e0\u5b50\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. \u4e2d\u4f4e", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L27"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_115", "label": "\u521d\u59cb\u5316\u6240\u6709\u56e0\u5b50\u5217\u8868 \u8c03\u6574\u540e\u6743\u91cd\uff08\u9002\u914d\u7ed3\u6784\u5316\u884c\u60c5\uff09: - PE: ~15% - PB: ~15%", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L115"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_151", "label": "\u6536\u5230K\u7ebf\u63a8\u9001 \u4e2d\u4f4e\u9891\u7b56\u7565\uff0c\u5224\u65ad\u662f\u5426\u9700\u8981\u8c03\u4ed3", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L151"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_186", "label": "\u8ba1\u7b97\u6240\u6709\u56e0\u5b50\uff0c\u5408\u6210\u6700\u7ec8\u5f97\u5206 \u53c2\u6570: data: \u6240\u6709\u80a1\u7968\u7684\u884c\u60c5\u8d22\u52a1\u6570\u636e\uff0ccolumns\u9700\u8981\u5305\u542b\u56e0\u5b50\u6240\u9700\u5217", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L186"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_202", "label": "\u6839\u636e\u56e0\u5b50\u5f97\u5206\u9009\u80a1\u7968 \u53c2\u6570: scores: \u56e0\u5b50\u5f97\u5206\u964d\u5e8f\u6392\u5217 \u8fd4\u56de: \u9009\u4e2d\u7684\u80a1\u7968", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L202"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_224", "label": "\u8ba1\u7b97\u9009\u4e2d\u80a1\u7968\u7684\u76ee\u6807\u6743\u91cd \u8003\u8651\u6574\u4f53\u62e9\u65f6\u4ed3\u4f4d \u8003\u8651\u677f\u5757\u9650\u5236\uff1a\u5355\u677f\u5757\u6700\u9ad8\u4e0d\u8d85\u8fc7max_sector_pct \u7b49\u6743\u5206\u914d\u7ed9", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L224"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_311", "label": "\u6267\u884c\u8c03\u4ed3 \u8fd9\u662f\u4e3b\u8c03\u4ed3\u903b\u8f91\uff0c\u5b9e\u9645\u56de\u6d4b\u4e2dvn.py\u4f1a\u8c03\u7528\u8fd9\u91cc", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L311"}, {"id": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_347", "label": "\u83b7\u53d6\u5f53\u524d\u5e02\u573a\u6570\u636e\uff08\u5305\u542b\u6536\u76d8\u4ef7\u3001\u8d22\u52a1\u6307\u6807\u7b49\uff09 \u9700\u8981\u6839\u636e\u5b9e\u9645\u6570\u636e\u6e90\u5b9e\u73b0 \u8fd9\u91cc\u7559\u51fa\u63a5\u53e3", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L347"}], "edges": [{"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L5", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L6", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "target": "typing", "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.py", "source_location": "L7", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L9", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L10", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L13", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L14", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "target": "factors", "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.py", "source_location": "L17", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "target": "utils", "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.py", "source_location": "L23", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L26", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L26", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L59", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L114", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L137", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L142", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L146", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L150", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L167", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L185", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L201", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L223", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L273", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L296", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L310", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L346", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L358", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L368", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_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.py", "source_location": "L74", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_on_bar", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L158", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_on_bar", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L162", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L317", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L326", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L327", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L330", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L333", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L336", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "target": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L339", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_1", "target": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_strategies_factors_dynamic_weight_timing_20260327_main_strategy_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L1", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_27", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L27", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_115", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L115", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_151", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_on_bar", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L151", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_186", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_factors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L186", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_202", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_select_stocks", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L202", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_224", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_weights_for_selected", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L224", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_311", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_rebalance", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L311", "weight": 1.0}, {"source": "factors_dynamic_weight_timing_20260327_main_strategy_rationale_347", "target": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_get_current_market_data", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L347", "weight": 1.0}], "raw_calls": [{"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L60"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L63"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L64"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L65"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L66"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L67"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L68"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L69"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L70"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L71"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init", "callee": "FactorCombiner", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L91"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L95"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L95"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init", "callee": "DynamicWeightAdjuster", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L96"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init", "callee": "MarketValuationTiming", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L103"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init", "callee": "get_weights", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L110"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "PEFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L127"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "PBFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L128"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "ROEFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L129"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "Momentum1MFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L130"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "Momentum3MFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L131"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "VolatilityFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L132"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "SizeFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L133"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_init_factors", "callee": "SectorStrengthFactor", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L134"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L139"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L140"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L144"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L148"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L155"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L178"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L179"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_factors", "callee": "combine", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L194"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_factors", "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.py", "source_location": "L197"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L209"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L209"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L216"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L219"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L219"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L230"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L235"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L254"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L265"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L265"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L283"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_dynamic_weights", "callee": "process", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L284"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L286"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_dynamic_weights", "callee": "update_ic", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L287"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_dynamic_weights", "callee": "calculate_weights", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L290"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_dynamic_weights", "callee": "update_weights", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L291"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L294"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_market_timing", "callee": "update_valuation", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L303"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_market_timing", "callee": "calculate_target_position", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L304"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_update_market_timing", "callee": "get_current_quantile", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L306"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L308"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L319"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L320"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L324"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L344"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L344"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "callee": "last", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L361"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L361"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "callee": "last", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L362"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_multifactordynamicstrategy_calculate_forward_returns", "callee": "groupby", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/main_strategy.py", "source_location": "L362"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L373"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L378"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L381"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L385"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L390"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L396"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L403"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L407"}, {"caller_nid": "factors_dynamic_weight_timing_20260327_main_strategy_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.py", "source_location": "L409"}]}