Python(只在外壳/验收侧) Rust(真正的计算) 开发期一次性对比

① 你的担心:以为是「Rust 里调用 Python」

Python 脚本 preprocess_factor_standalone.py
fill_and_rank_factors(生产原版,pandas/numpy 实现)
⚠ 实际上并不存在这条运行时通道
Rust 函数 neutralize_std_pipeline
这不是事实。Rust 代码里没有任何一处启动或调用 Python 解释器。 依赖里只有 Rust 自己的数组库(ndarray)和线性代数库(nalgebra)。 我逐行检查过:零 Python 调用。

② 真实关系:Python 是「出题人+验收员」,Rust 是「考生」

Python 生产脚本算出标准答案
(开发期跑一次,留存结果)
↓ 对比 46 个因子 → 完全一致(exact = 1.0)↓
Rust 版独立重算一遍,逐位对得上才允许上线
↓ 验收通过后,生产线上只用下面这条链 ↓
日常运行(零 Python 计算)
你的 Python 回测脚本 → import rust_pyfunc → 中性化整个环节全在 Rust 里跑
(编译好的 .so 文件,Python 只是按门铃的人)
一句话总结:项目的方向从来是「Python 调用 Rust」,不是反过来。 头注释里写「对齐某某 .py 文件」,意思是当年拿那个 Python 脚本当验收基准做了一道翻译题, 翻译完验收通过后,Python 原版就退役了。运行时不存在任何 Python 参与。 这套东西现在已经在主项目里(rp.neutralize_std_block_py,见 src/factor_neutralize_std.rs)。