rust-pyfunc 0.78.0__tar.gz → 0.81.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/.gitignore +1 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/Cargo.lock +35 -1
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/Cargo.toml +9 -2
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/PKG-INFO +1 -1
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/alter.sh +5 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/core_functions.pyi +101 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/backup_column_cache.rs +416 -50
- rust_pyfunc-0.81.0/src/bin/worker_pipeline.rs +104 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/factor_neutralization_io_optimized.rs +37 -25
- rust_pyfunc-0.81.0/src/factor_pipeline.rs +1201 -0
- rust_pyfunc-0.81.0/src/fast_csv_reader.rs +882 -0
- rust_pyfunc-0.81.0/src/features.rs +910 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lib.rs +39 -21
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lz_complexity.rs +2 -2
- rust_pyfunc-0.81.0/src/observable_order_metrics.rs +1253 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_pair_metrics.rs +131 -34
- rust_pyfunc-0.81.0/src/order_pair_metrics_pipeline.rs +1968 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/mod.rs +1 -1
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/tail_v4_pipeline.rs +4 -3
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/trend_mod.rs +1 -1
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/.factory/settings.json +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/.github/workflows/CI.yml +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/.github/workflows/deploy.yml +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/FACTOR_NEUTRALIZATION_REQUIREMENTS.md +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/README.md +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/agents/skills/agent-trading-builder/SKILL.md +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/PriceTree.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/PriceTreeViz.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/RollingFutureAccessor.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/TRADE_PEAK_ANALYSIS_README.md +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/brachistochrone_curve.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/calculate_shannon_entropy_change.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/calculate_shannon_entropy_change_at_low.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/compute_max_eigenvalue.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/dct_basis_functions.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/dct_path_patterns.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/dct_reconstruction.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/dct_visualization.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/dtw_distance.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/find_follow_volume_sum_same_price.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/find_follow_volume_sum_same_price_and_flag.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/find_half_energy_time.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/find_local_peaks_within_window.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/find_max_range_product.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/identify_segments.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/index.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/jaccard_similarity.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/mark_follow_groups.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/mark_follow_groups_with_flag.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/max_range_loop.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/min_range_loop.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/min_word_edit_distance.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/ols.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/ols_predict.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/ols_residuals.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/parallel_computing_system.md +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/rolling_cv.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/rolling_qcv.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/rolling_volatility.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/rolling_window_stat.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/search_data.json +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/static/search.js +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/static/style.css +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/sum_as_string.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/transfer_entropy.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/trend.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/trend_fast.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/vectorize_sentences.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs/vectorize_sentences_list.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs//344/275/277/347/224/250/350/257/264/346/230/216.md" +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs//345/256/214/346/210/220/346/200/273/347/273/223.md" +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/docs_generator.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/ds_plan_true.md +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/freeze_version.sh +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/hmm_visualizer.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/pyproject.toml +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/__init__.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/__init__.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/abm_analysis.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/agent_simulator.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/agent_trading_daily.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/agent_trading_daily.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/copula.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/factor_task.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/factor_taskd.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/minute_data_reader.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/pandas_correlation.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/pandas_correlation.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/pandas_corrwith.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/pandas_extensions.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/pandas_merge.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/pandas_rank.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/parallel_computing.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/rolling_future.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/rolling_past.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/statistical_analysis.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/text_analysis.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/theme_cluster_factors.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/theme_feature_expansion.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/theme_feature_expansion_data.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/theme_feature_expansion_data.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/time_series.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/trading_analysis.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/trading_data_utils.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/trading_data_utils.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/trading_day.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/tree_structures.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/treevisual.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/web_manager.py +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/python/rust_pyfunc/web_manager.pyi +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/rust-toolchain.toml +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/abnormal_asks_analyzer.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/acceleration_follow_agent.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/bottom_fishing_agent.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/buy_ratio_agent.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/exhaustion_reversal_agent.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/follow_flow_agent.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/momentum_agent.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/py_bindings.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/simulator.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/trait_def.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/types.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_simulator/utils.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_trading_features/core.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_trading_features/metrics.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_trading_features/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_trading_features/py_bindings.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_trading_features/types.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_validation/factors_extra.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_validation/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/agent_validation/py_bindings.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/allo_microstructure.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/allo_microstructure_v2.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/allo_microstructure_v3.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/backup_reader.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/backup_writer.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/column_correlation.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/copula.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/corr_diff_features.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/cross_stock_regression.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/cross_stock_regression_fast.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/cross_stock_regression_peak.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/dct_transform.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/difference_matrix.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/effective_memory_length.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/entropy_analysis.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/error/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/frontier_dist.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/ghost_market_maker.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/gp_correlation_dimension.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/grouping.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/hawkes_advisor.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/hawkes_analysis.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/illusion_liquidity_distance.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/integer_small_peak_features.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lagged_regression.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lagged_regression_incremental.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lagged_regression_optimized.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lagged_regression_simd.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/limit_order_lifecycle.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/limit_order_lifecycle_v2.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/long_order_analysis.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/lz_complexity_detailed.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/market_correlation.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/microstructure_pattern_features.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/microstructure_pattern_features_optimized.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/microstructure_pattern_features_v2.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/mutual_information.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/mutual_information_2d.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/mutual_information_2d_final.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/mutual_information_2d_fixed.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_contamination.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_neighborhood.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_price_statistics.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_price_statistics_bucketed.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_price_statistics_order_level.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_records_ultra_sorted.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_records_ultra_sorted_bucketed.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_records_ultra_sorted_v2_optimized.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/order_records_ultra_sorted_v3.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/orderbook_volume_cov_factors.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/pandas_ext/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/parallel_computing.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/parallel_computing_date_only.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/passive_order_features.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/permutation_analysis_v0816_fixed.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/personalized_meeting_features.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/price_breakthrough_stats.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/price_cycle_b_segments_enhanced.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/safe_eigenvalue.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/sequence/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/series_rank.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/simple_parallel.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/skewness.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/eigenvalue_analysis.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/eigenvalue_analysis_modified.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/fast_correlation.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/fast_correlation_v2.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/hmm_trend_prediction.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/local_correlation.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/rolling_correlation_mean.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/rolling_window_core_feature.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/rolling_window_core_feature_optimized.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/rolling_window_core_feature_simd.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/statistics/rolling_window_core_feature_ultra.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/tail_v2_backtest_block.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/tail_v2_block_neutralizer.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/tail_v2_ic_corr_filter.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/tail_v2_rank_roll_factor.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/text/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/text/string_proximity.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/theme_cluster_factors.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/theme_cluster_factors_batch.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/theme_feature_expansion.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_irreversibility.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/fast_extreme.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/lyapunov.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/retreat_advance.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/retreat_advance_v2.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/time_series/super_extreme.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/topk_corr_matrix.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/trade_analysis_ultra_turbo.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/trade_peak_analysis.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/trade_records_ultra_sorted.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/tree/mod.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/vector_similarity.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/vector_similarity_optimized.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/yand_affine_centroid.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/src/yand_divergence.rs +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/templates/base.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/templates/function.html +0 -0
- {rust_pyfunc-0.78.0 → rust_pyfunc-0.81.0}/templates/index.html +0 -0
|
@@ -550,6 +550,17 @@ version = "0.8.7"
|
|
|
550
550
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
551
551
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
552
552
|
|
|
553
|
+
[[package]]
|
|
554
|
+
name = "core_affinity"
|
|
555
|
+
version = "0.8.3"
|
|
556
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
557
|
+
checksum = "a034b3a7b624016c6e13f5df875747cc25f884156aad2abd12b6c46797971342"
|
|
558
|
+
dependencies = [
|
|
559
|
+
"libc",
|
|
560
|
+
"num_cpus",
|
|
561
|
+
"winapi",
|
|
562
|
+
]
|
|
563
|
+
|
|
553
564
|
[[package]]
|
|
554
565
|
name = "cpufeatures"
|
|
555
566
|
version = "0.2.17"
|
|
@@ -2181,12 +2192,13 @@ checksum = "082f11ffa03bbef6c2c6ea6bea1acafaade2fd9050ae0234ab44a2153742b058"
|
|
|
2181
2192
|
|
|
2182
2193
|
[[package]]
|
|
2183
2194
|
name = "rust_pyfunc"
|
|
2184
|
-
version = "0.
|
|
2195
|
+
version = "0.81.0"
|
|
2185
2196
|
dependencies = [
|
|
2186
2197
|
"arrow",
|
|
2187
2198
|
"base64 0.21.7",
|
|
2188
2199
|
"bincode",
|
|
2189
2200
|
"chrono",
|
|
2201
|
+
"core_affinity",
|
|
2190
2202
|
"criterion",
|
|
2191
2203
|
"crossbeam",
|
|
2192
2204
|
"csv",
|
|
@@ -2671,6 +2683,22 @@ dependencies = [
|
|
|
2671
2683
|
"safe_arch",
|
|
2672
2684
|
]
|
|
2673
2685
|
|
|
2686
|
+
[[package]]
|
|
2687
|
+
name = "winapi"
|
|
2688
|
+
version = "0.3.9"
|
|
2689
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2690
|
+
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
|
2691
|
+
dependencies = [
|
|
2692
|
+
"winapi-i686-pc-windows-gnu",
|
|
2693
|
+
"winapi-x86_64-pc-windows-gnu",
|
|
2694
|
+
]
|
|
2695
|
+
|
|
2696
|
+
[[package]]
|
|
2697
|
+
name = "winapi-i686-pc-windows-gnu"
|
|
2698
|
+
version = "0.4.0"
|
|
2699
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2700
|
+
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
|
2701
|
+
|
|
2674
2702
|
[[package]]
|
|
2675
2703
|
name = "winapi-util"
|
|
2676
2704
|
version = "0.1.9"
|
|
@@ -2680,6 +2708,12 @@ dependencies = [
|
|
|
2680
2708
|
"windows-sys 0.59.0",
|
|
2681
2709
|
]
|
|
2682
2710
|
|
|
2711
|
+
[[package]]
|
|
2712
|
+
name = "winapi-x86_64-pc-windows-gnu"
|
|
2713
|
+
version = "0.4.0"
|
|
2714
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2715
|
+
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|
2716
|
+
|
|
2683
2717
|
[[package]]
|
|
2684
2718
|
name = "windows-core"
|
|
2685
2719
|
version = "0.61.2"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rust_pyfunc"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.81.0"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
description = "A collection of high-performance Python functions implemented in Rust"
|
|
6
6
|
readme = "README.md"
|
|
@@ -46,9 +46,15 @@ log = "0.4"
|
|
|
46
46
|
once_cell = "1.19"
|
|
47
47
|
csv = "1.3"
|
|
48
48
|
ndarray-npy = "0.8"
|
|
49
|
+
core_affinity = "0.8"
|
|
49
50
|
hdf5-metno = { version = "0.12", features = ["static", "zlib"], optional = true }
|
|
50
51
|
zstd = "0.13"
|
|
51
52
|
|
|
53
|
+
# Worker 二进制(多进程因子流水线)
|
|
54
|
+
[[bin]]
|
|
55
|
+
name = "rust_pyfunc_worker"
|
|
56
|
+
path = "src/bin/worker_pipeline.rs"
|
|
57
|
+
|
|
52
58
|
[features]
|
|
53
59
|
default = ["hdf5"]
|
|
54
60
|
hdf5 = ["hdf5-metno"]
|
|
@@ -65,8 +71,9 @@ criterion = "0.5"
|
|
|
65
71
|
[profile.release]
|
|
66
72
|
lto = true
|
|
67
73
|
codegen-units = 1
|
|
68
|
-
panic = "abort"
|
|
69
74
|
opt-level = 3
|
|
75
|
+
# 注意:不用 panic = "abort",因为 worker bin 需要 catch_unwind 捕获计算 panic,
|
|
76
|
+
# 避免整个 worker 进程崩溃重启。pyo3 0.18 在 unwind 下正常工作。
|
|
70
77
|
|
|
71
78
|
[build-dependencies]
|
|
72
79
|
pkg-config = "0.3"
|
|
@@ -26,5 +26,10 @@ conda activate chenzongwei311
|
|
|
26
26
|
export PATH="/home/chenzongwei/.local/bin:$PATH"
|
|
27
27
|
/home/chenzongwei/.local/bin/mold -run maturin develop --release
|
|
28
28
|
|
|
29
|
+
# 5. 编译并部署 worker 二进制(多进程因子流水线 mode="multiprocess" 需要)
|
|
30
|
+
/home/chenzongwei/.local/bin/mold -run cargo build --release --bin rust_pyfunc_worker
|
|
31
|
+
cp target/release/rust_pyfunc_worker python/rust_pyfunc/rust_pyfunc_worker
|
|
32
|
+
echo "✅ worker 二进制已部署到 python/rust_pyfunc/rust_pyfunc_worker"
|
|
33
|
+
|
|
29
34
|
# 如果需要,你也可以在脚本结束时停用环境
|
|
30
35
|
# conda deactivate
|
|
@@ -2288,3 +2288,104 @@ def compute_ts_stats(series: List[float]) -> List[float]:
|
|
|
2288
2288
|
数据不足5个时返回空列表
|
|
2289
2289
|
"""
|
|
2290
2290
|
...
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
def read_trade_fast(
|
|
2294
|
+
code: str,
|
|
2295
|
+
date: int,
|
|
2296
|
+
with_retreat: int = 0,
|
|
2297
|
+
with_afternoon_adjust: bool = False,
|
|
2298
|
+
) -> NDArray[np.float64]:
|
|
2299
|
+
"""高速读取逐笔成交数据(Rust 多线程实现,替代 read_trade 的加速版)。
|
|
2300
|
+
|
|
2301
|
+
用 memmap2 内存映射文件,大文件按字节块切分并行解析(rayon),
|
|
2302
|
+
读取时即完成全部预处理:flag!=32 过滤、exchtime 微秒整数→epoch 秒、
|
|
2303
|
+
可选的下午时段平移(adjust_afternoon)。
|
|
2304
|
+
|
|
2305
|
+
与 read_trade 的差异:
|
|
2306
|
+
- 直接返回 (n, 7) float64 numpy 数组,跳过 DataFrame 构造与 Timestamp 往返转换
|
|
2307
|
+
- with_afternoon_adjust=True 时在读时一步完成下午时段平移并过滤非盘中数据
|
|
2308
|
+
- time_sec 列为 epoch 秒(与 prepare() 中 exchtime.astype(int64)//1e9 一致)
|
|
2309
|
+
|
|
2310
|
+
列顺序(n×7 矩阵):
|
|
2311
|
+
[0] time_sec 成交时间,epoch 秒
|
|
2312
|
+
[1] price 成交价
|
|
2313
|
+
[2] volume 成交量
|
|
2314
|
+
[3] turnover 成交额
|
|
2315
|
+
[4] flag 成交标志(66=主买, 83=主卖;32=撤单,已被过滤)
|
|
2316
|
+
[5] bid_order 买方订单号
|
|
2317
|
+
[6] ask_order 卖方订单号
|
|
2318
|
+
|
|
2319
|
+
Parameters
|
|
2320
|
+
----------
|
|
2321
|
+
code : str
|
|
2322
|
+
股票代码,如 "000001"
|
|
2323
|
+
date : int
|
|
2324
|
+
交易日,如 20260605
|
|
2325
|
+
with_retreat : int, 默认 0
|
|
2326
|
+
1 时保留 flag==32 的撤单记录,0 时过滤(与 read_trade 默认一致)
|
|
2327
|
+
with_afternoon_adjust : bool, 默认 False
|
|
2328
|
+
True 时做 adjust_afternoon 平移:保留 [09:30,11:30],下午 [13:00,14:57]
|
|
2329
|
+
整体前移 90 分钟,过滤集合竞价前/收盘后的数据
|
|
2330
|
+
|
|
2331
|
+
Returns
|
|
2332
|
+
-------
|
|
2333
|
+
numpy.ndarray
|
|
2334
|
+
(n, 7) float64 数组
|
|
2335
|
+
"""
|
|
2336
|
+
...
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
def run_factor_pipeline(
|
|
2340
|
+
pipeline: str,
|
|
2341
|
+
tasks: List,
|
|
2342
|
+
n_jobs: int,
|
|
2343
|
+
backup_file: str,
|
|
2344
|
+
expected_result_length: int,
|
|
2345
|
+
trading_days: List[int],
|
|
2346
|
+
params: object = None,
|
|
2347
|
+
update_mode: bool = False,
|
|
2348
|
+
bind_cores: bool = True,
|
|
2349
|
+
backup_batch_size: int = 2000,
|
|
2350
|
+
progress_log: bool = False,
|
|
2351
|
+
) -> None:
|
|
2352
|
+
"""纯 Rust 因子流水线引擎(run_factor_pipeline 优化方案 Phase 3)。
|
|
2353
|
+
|
|
2354
|
+
把 go 函数(如 hm90.go)的整条链路在 Rust 内部一气呵成,消除 Python worker、
|
|
2355
|
+
pandas、pyo3 往返、msgpack 等所有流转浪费。并行控制采用自适应嵌套并行 + 核绑定,
|
|
2356
|
+
总线程恒定 = n_jobs。
|
|
2357
|
+
|
|
2358
|
+
backup 格式与现有 run_pools_queue 完全兼容(复用 backup_writer),
|
|
2359
|
+
后续 query_backup / query_backup_factor_only_ultra_fast 无需改动。
|
|
2360
|
+
|
|
2361
|
+
Parameters
|
|
2362
|
+
----------
|
|
2363
|
+
pipeline : str
|
|
2364
|
+
流水线标识,目前支持 "order_pair_hm90"(hm90.go 的 Rust 翻译)
|
|
2365
|
+
tasks : List[[int, str]]
|
|
2366
|
+
任务列表,每个元素 [date, code]
|
|
2367
|
+
n_jobs : int
|
|
2368
|
+
并行线程数(总 CPU 占用 ≈ n_jobs × 100%,默认生产用 200)
|
|
2369
|
+
backup_file : str
|
|
2370
|
+
备份文件路径(与 run_pools_queue 的 backup_file 格式兼容)
|
|
2371
|
+
expected_result_length : int
|
|
2372
|
+
每个任务的预期结果长度(因子数)
|
|
2373
|
+
trading_days : List[int]
|
|
2374
|
+
交易日历数组(由 rp.td.trading_days.tolist() 提供,用于 last_trading_day 查找)
|
|
2375
|
+
params : dict, 可选
|
|
2376
|
+
流水线参数,如 {"tolerance_v1": 0.001, "tolerance_v2": 0.00001}
|
|
2377
|
+
update_mode : bool, 默认 False
|
|
2378
|
+
断点续算:True 时跳过 backup 中已完成的任务
|
|
2379
|
+
bind_cores : bool, 默认 True
|
|
2380
|
+
核绑定:把 n_jobs 个线程各绑定到一个物理核,CPU 占用精确稳定
|
|
2381
|
+
backup_batch_size : int, 默认 2000
|
|
2382
|
+
每攒满 N 个结果写一次 backup(批量 zstd 压缩)
|
|
2383
|
+
progress_log : bool, 默认 False
|
|
2384
|
+
每 500 个任务打印一次进度
|
|
2385
|
+
|
|
2386
|
+
Notes
|
|
2387
|
+
-----
|
|
2388
|
+
"order_pair_hm90" 流水线关闭了 lyapunov 特征(原 get_features_factors 默认开启,
|
|
2389
|
+
但花 69% 时间只产生 2.3% 特征)。如需 lyapunov,仍可用原 run_pools_queue。
|
|
2390
|
+
"""
|
|
2391
|
+
...
|