akquant 0.2.48__tar.gz → 0.2.49__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.
- {akquant-0.2.48 → akquant-0.2.49}/CHANGELOG.md +1 -0
- {akquant-0.2.48 → akquant-0.2.49}/Cargo.lock +1 -1
- {akquant-0.2.48 → akquant-0.2.49}/Cargo.toml +1 -1
- {akquant-0.2.48 → akquant-0.2.49}/PKG-INFO +1 -1
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/strategy.md +1 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/reference/api.md +2 -1
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/07_futures.md +4 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/strategy.md +1 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/reference/api.md +2 -1
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/07_futures.md +1 -0
- {akquant-0.2.48 → akquant-0.2.49}/pyproject.toml +1 -1
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy.py +6 -2
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_trading_api.py +6 -0
- {akquant-0.2.48 → akquant-0.2.49}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.github/workflows/deploy-docs.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.github/workflows/docs-quality.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.github/workflows/release.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.gitignore +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/.pre-commit-config.yaml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/CODE_OF_CONDUCT.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/CONTRIBUTING.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/LICENSE +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/README.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/assets/dashboard_preview.png +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/assets/logo.svg +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/assets/social_preview.png +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/CNAME +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/assets/akquant-icon.svg +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/assets/akquant-logo.svg +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/assets/reports/akquant_report.html +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/analyzer_plugin_spec.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/broker_capability_matrix.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/custom_broker_production_checklist.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/custom_broker_registry.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/data_feed_adapter_spec.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/live_functional_quickstart.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/llm.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/ml.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/multi_strategy_guide.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/multi_timeframe_feed_api.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/runtime_config.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/strategy_style_decision.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/timezone.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/advanced/warm_start.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/analysis.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/cross_section_checklist.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/custom_indicator.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/data.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/examples.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/factor.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/indicator_scenario_quickref.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/optimization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/python_basics.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/quant_basics.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/rust_indicator_reference.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/talib_indicator_playbook.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/testing.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/guide/visualization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/index.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/meta/architecture.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/meta/internals.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/start/first_strategy.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/start/installation.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/start/quickstart.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/start/setup_guide.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/01_foundations.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/02_programming.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/03_data.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/04_backtest_engine.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/05_strategy.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/06_stock_a.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/08_options.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/09_funds.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/10_analysis.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/11_optimization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/12_ml.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/13_visualization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/14_factor.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/15_live_trading.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/16_rust_indicators.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/en/textbook/index.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/javascripts/mathjax.js +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/javascripts/search-lang-filter.js +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/robots.txt +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/analyzer_plugin_spec.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/broker_capability_matrix.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/custom_broker_production_checklist.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/custom_broker_registry.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/data_feed_adapter_spec.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/live_functional_quickstart.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/llm.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/ml.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/multi_strategy_guide.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/multi_timeframe_feed_api.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/runtime_config.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/strategy_style_decision.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/timezone.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/advanced/warm_start.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/analysis.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/cross_section_checklist.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/custom_indicator.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/data.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/examples.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/factor.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/indicator_scenario_quickref.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/optimization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/python_basics.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/quant_basics.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/rust_indicator_reference.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/talib_indicator_playbook.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/testing.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/guide/visualization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/index.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/meta/architecture.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/meta/internals.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/start/first_strategy.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/start/installation.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/start/quickstart.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/start/setup_guide.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/00_glossary.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/01_foundations.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/02_programming.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/03_data.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/04_backtest_engine.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/05_strategy.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/06_stock_a.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/08_options.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/09_funds.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/10_analysis.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/11_optimization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/12_ml.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/13_visualization.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/14_factor.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/15_live_trading.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/16_rust_indicators.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/ROADMAP.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/appendix_cite.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/appendix_pitfalls.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/appendix_setup.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/capstone.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/docs/zh/textbook/index.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/01_quickstart.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/02_parameter_optimization.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/03_parameter_optimization_advanced.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/04_mixed_assets.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/05_live_trading_ctp.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/06_complex_orders.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/07_option_test.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/08_event_callbacks.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/09_ml_framework.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/10_ml_walk_forward.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/11_plot_visualization.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/12_wfo_integrated.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/13_quantstats_report.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/14_multi_frequency.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/15_plot_intraday.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/16_adj_returns_signal.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/17_readme_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/18_benchmark_multisymbol.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/19_factor_expression.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/20_risk_management_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/21_warm_start_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/22_strategy_runtime_config_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/23_functional_callbacks_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/24_functional_tick_simulation_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/25_streaming_backtest_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/26_streaming_quickstart.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/27_streaming_monitoring_console.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/28_streaming_alerts_and_persist.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/29_streaming_event_report.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/30_streaming_report_oneclick.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/31_streaming_live_console.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/32_streaming_live_web.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/33_report_and_analysis_outputs.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/34_multi_strategy_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/35_custom_broker_registry_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/36_trailing_orders.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/37_feed_replay_alignment_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/38_live_functional_strategy_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/39_live_broker_submit_order_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/40_functional_multi_slot_risk_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/41_live_multi_slot_orchestration_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/42_live_broker_event_audit_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/43_target_weights_rebalance.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/44_strategy_source_loader_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/45_talib_indicator_playbook_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/46_broker_profile_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/47_margin_liquidation_audit_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/48_margin_liquidation_priority_compare.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/49_on_expiry_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/50_framework_hooks_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/51_class_tick_callbacks_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/52_pre_open_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/53_timer_to_pre_open_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/54_functional_pre_open_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/55_functional_ml_walk_forward.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/56_functional_warm_start_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/57_functional_multi_slot_warm_start_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/58_incremental_bootstrap_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/59_akshare_etf_rotation.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/60_custom_indicator_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/61_indicator_visualization_export_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/62_indicator_streaming_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/63_indicator_ws_bridge_demo.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/64_indicator_live_web.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/README.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/benchmark_utils.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/pb_mock.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/01_stock_dual_moving_average.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/02_stock_grid_trading.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/03_stock_atr_breakout.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/04_stock_momentum_rotation.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/05_stock_momentum_rotation_timer.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/06_stock_momentum_rotation_bucket.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/07_stock_momentum_rotation_on_timer.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/08_target_positions_long_short.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/09_stock_momentum_rotation_after_bar.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/strategies/README.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch01_quickstart.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch02_programming.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch03_data.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch04_comparison.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch05_strategy.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch06_stock_a.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch07_futures.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch08_options.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch09_funds.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch09_portfolio.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch10_analysis.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch11_optimization.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch12_ml.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch13_visualization.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch14_factor.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch15_live_trading.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch15_strategy_loader.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/examples/textbook/ch16_indicators.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/mkdocs.yml +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/akquant.pyi +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/analysis/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/analysis/benchmark.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/analyzer_plugin.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/backtest/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/backtest/__init__.pyi +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/backtest/engine.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/backtest/result.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/checkpoint.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/config.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/data.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/factor/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/factor/engine.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/factor/ops.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/factor/parser.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/feed_adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/fund/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/futures/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/base.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/broker_event_bridge.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/broker_event_mapper.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/broker_models.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/broker_recovery.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/broker_runtime.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/ctp/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/ctp/adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/ctp/native.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/miniqmt/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/miniqmt/stub.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/ptrade/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/brokers/ptrade/stub.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/ctp_adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/ctp_native.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/factory.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/mapper.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/miniqmt.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/models.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/order_submitter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/protocols.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/ptrade.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/gateway/registry.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/indicator.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/indicator_recording.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/indicator_stream.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/live.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/log.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/ml/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/ml/model.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/optimize.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/option/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/params.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/params_adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/analysis.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/dashboard.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/indicator.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/report.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/strategy.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/plot/utils.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/py.typed +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/risk.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/sizer.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/stock/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_events.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_framework_hooks.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_history.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_loader.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_logging.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_ml.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_order_events.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_position.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_scheduler.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/strategy_time.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/talib/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/talib/backend.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/talib/core.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/talib/funcs.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/utils/__init__.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/python/akquant/utils/inspector.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/requirements-dev.txt +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/scripts/cargo-test.sh +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/scripts/check_docs_api_examples.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/scripts/check_docs_links.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/scripts/dev-check.sh +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/scripts/find_legacy_execution_policy_calls.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/scripts/golden_baseline_report.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/account.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/analysis/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/analysis/python.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/analysis/result.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/analysis/tests.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/analysis/tracker.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/analysis/types.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/bin/stub_gen.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/clock.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/context.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/data/aggregator.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/data/batch.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/data/client.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/data/feed.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/data/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/engine/core.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/engine/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/engine/python.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/engine/state.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/error.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/event.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/event_manager.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/common.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/crypto.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/forex.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/futures.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/matcher.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/option.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/python.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/realtime.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/simulated.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/slippage.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/execution/stock.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/history.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/momentum.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/momentum_oscillators.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/momentum_rates.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/moving_average.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/moving_average_compound.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/moving_average_core.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/moving_average_transforms.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/moving_average_windowed.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/trend.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/trend_directional.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/trend_oscillators.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/trend_regression.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/volatility.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/volatility_price.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/volatility_stats.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators/volume.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/indicators.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/lib.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/log_context.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/margin/calculator.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/margin/engine.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/margin/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/china.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/core.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/corporate_action.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/fund.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/futures.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/manager.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/option.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/simple.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/market/stock.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/corporate_action.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/instrument.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/market_data.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/order.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/timer.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/model/types.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/order_manager.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/processor.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/runner.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/channel.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/cleanup.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/data.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/execution.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/shared.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/statistics.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/pipeline/stages/strategy.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/portfolio.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/common.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/config.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/futures.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/manager.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/option.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/portfolio.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/rule.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/risk/stock.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/settlement/expiry.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/settlement/handler.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/settlement/manager.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/settlement/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/settlement/option.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/src/statistics/mod.rs +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/gateway_contract/test_event_bridge_contract.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/gateway_contract/test_recovery_contract.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/gateway_contract/test_submitter_contract.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/BASELINE_REPORT.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/LEGACY_EXECUTION_CALLS.md +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/futures_margin/equity_curve.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/futures_margin/metrics.json +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/futures_margin/orders.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/option_basic/equity_curve.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/option_basic/metrics.json +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/option_basic/orders.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/stock_t1/equity_curve.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/stock_t1/metrics.json +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/stock_t1/orders.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/baselines/stock_t1/trades.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/futures_margin/equity_curve.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/futures_margin/metrics.json +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/futures_margin/orders.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/option_basic/equity_curve.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/option_basic/metrics.json +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/option_basic/orders.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/stock_t1/equity_curve.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/stock_t1/metrics.json +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/stock_t1/orders.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/current/stock_t1/trades.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/data/future_margin.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/data/future_margin.parquet.sha256 +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/data/option_basic.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/data/option_basic.parquet.sha256 +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/data/stock_t1.parquet +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/data/stock_t1.parquet.sha256 +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/gen_data.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/runner.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/strategies/futures_margin.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/strategies/option_basic.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/strategies/stock_t1.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/golden/test_golden.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_account_risk_rules.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_custom_matcher.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_data_catalog.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_docs_api_examples.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_docs_links.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_engine.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_examples_regression.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_factor_engine.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_factor_ops.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_feed_adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_brokers_paths.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_callbacks.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_ctp_adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_ctp_native.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_factory.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_mapper.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_gateway_registry.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_indicator_live_web_example.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_indicator_recording.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_inspector.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_live_runner.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_live_runner_broker_bridge.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_live_runner_broker_recovery.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_live_runner_broker_submitter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_multisymbol_cross_section_consistency.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_orders_df.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_params_adapter.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_partial_filled_status.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_portfolio.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_quickstart_stream_consistency.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_report_helpers.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_report_plot_extensions.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_result_analysis_extensions.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_stop_orders.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_strategy_extras.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_strategy_timers_indicators.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_t_plus_one.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_talib_backend.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_talib_compat.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_trades_df.py +0 -0
- {akquant-0.2.48 → akquant-0.2.49}/tests/test_version.py +0 -0
|
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
|
+
- `get_account()` 账户快照新增 `free_margin` 字段(= `equity - used_margin`),表示真正可用于新开仓的可用保证金,与下单因保证金不足被拒时日志里的 `Available` 口径一致;期货保证金账户下 `cash`(现金余额)通常大于 `free_margin`,股票现金账户下二者相等。同时修正了 `cash` 在文档与 docstring 中「可用资金」的误导性表述,明确其为「现金余额」。
|
|
11
12
|
- `BacktestConfig` 新增 `days_per_year`(年化天数因子,默认 252;数字货币 24/7 市场可设 365)与 `risk_free_rate`(年化无风险利率,默认 0.0)两个字段,用于参数化 Sharpe/Sortino/波动率等风险指标的年化口径。`risk_free_rate` 默认 0 不改变任何现有数值。
|
|
12
13
|
|
|
13
14
|
### Changed
|
|
@@ -761,6 +761,7 @@ If the strategy is running with futures margin semantics, these fields become es
|
|
|
761
761
|
|
|
762
762
|
- `snap["equity"]`: current account equity.
|
|
763
763
|
- `snap["used_margin"]` / `snap["margin"]`: current margin in use.
|
|
764
|
+
- `snap["free_margin"]`: available margin (`equity - used_margin`), i.e. the amount usable to open new positions; the `Available` value in the rejection log refers to this field, so do not compare it against `cash`.
|
|
764
765
|
- `snap["notional_value"]`: current futures notional exposure.
|
|
765
766
|
- `snap["unrealized_pnl"]`: current floating PnL.
|
|
766
767
|
|
|
@@ -875,9 +875,10 @@ Note: if you do not pass an explicit `fill_policy` here, the framework defaults
|
|
|
875
875
|
* `ctx.get_position_entry_price(symbol) -> float`: Get the current average entry price for one symbol.
|
|
876
876
|
* `ctx.get_position_entry_prices() -> Dict[str, float]`: Get current average entry prices for all symbols.
|
|
877
877
|
* `get_cash() -> float`: Get current available cash.
|
|
878
|
-
* `get_account() -> Dict[str, float]`: Get an account snapshot. Common fields include `cash`, `equity`, `market_value`, `notional_value`, `frozen_cash`, `margin`, `used_margin`, `unrealized_pnl`, `borrowed_cash`, `short_market_value`, `maintenance_ratio`, `account_mode`, `accrued_interest`, and `daily_interest`.
|
|
878
|
+
* `get_account() -> Dict[str, float]`: Get an account snapshot. Common fields include `cash`, `equity`, `market_value`, `notional_value`, `frozen_cash`, `margin`, `used_margin`, `free_margin`, `unrealized_pnl`, `borrowed_cash`, `short_market_value`, `maintenance_ratio`, `account_mode`, `accrued_interest`, and `daily_interest`.
|
|
879
879
|
* In cash / spot-style accounts, `market_value` usually represents marked position value.
|
|
880
880
|
* In futures margin accounts, `equity` is account equity, `used_margin` is margin in use, `notional_value` is futures notional exposure, and `unrealized_pnl` is marked floating PnL. Futures trades do not deduct full notional from `cash` the way spot buys do, and notional exposure is not mirrored into `market_value` as if it were spot inventory.
|
|
881
|
+
* `cash` is the cash balance; `free_margin` (= `equity - used_margin`) is the amount actually available to open new positions and matches the `Available` value shown in the rejection log when an order is rejected. In futures margin accounts, opening a position does not deduct margin from `cash`, so `cash` is usually larger than `free_margin`; in stock cash accounts the two are equal.
|
|
881
882
|
* Inside strategy callbacks, prefer `get_portfolio_value()` when you only need current total equity; it is aligned with `get_account()["equity"]`.
|
|
882
883
|
* `get_order(order_id) -> Order`: Get details of a specific order.
|
|
883
884
|
* `get_open_orders(symbol) -> List[Order]`: Get list of open orders.
|
|
@@ -57,6 +57,10 @@ Under AKQuant's futures margin-account semantics, read `get_account()` and
|
|
|
57
57
|
the way a spot buy does; cash mainly reflects fees and realized cash flows.
|
|
58
58
|
- `equity`: account equity. `get_portfolio_value()` is aligned with this field.
|
|
59
59
|
- `used_margin` / `margin`: margin currently in use.
|
|
60
|
+
- `free_margin`: available margin (`equity - used_margin`), i.e. the amount
|
|
61
|
+
actually usable to open new positions. When an order is rejected for
|
|
62
|
+
insufficient margin, the `Available` value in the log refers to this field —
|
|
63
|
+
do not compare it against `cash`.
|
|
60
64
|
- `notional_value`: current futures notional exposure.
|
|
61
65
|
- `unrealized_pnl`: floating PnL marked with the latest price.
|
|
62
66
|
- `market_value`: mainly a spot-style marked-value field and should not be read
|
|
@@ -324,6 +324,7 @@ print(
|
|
|
324
324
|
|
|
325
325
|
- `snap["equity"]`: 当前账户权益。
|
|
326
326
|
- `snap["used_margin"]` / `snap["margin"]`: 当前已占用保证金。
|
|
327
|
+
- `snap["free_margin"]`: 可用保证金(`equity - used_margin`),即可用于新开仓的资金;下单因保证金不足被拒时日志里的 `Available` 就是此值,不要用 `cash` 去比较。
|
|
327
328
|
- `snap["notional_value"]`: 当前期货名义敞口。
|
|
328
329
|
- `snap["unrealized_pnl"]`: 当前浮动盈亏。
|
|
329
330
|
|
|
@@ -899,9 +899,10 @@ def on_pre_open(self, event: Dict[str, Any]) -> None:
|
|
|
899
899
|
* `ctx.get_position_entry_prices() -> Dict[str, float]`: 获取所有标的当前持仓均价。
|
|
900
900
|
* `hold_bar(symbol) -> int`: 获取当前持仓持有的 Bar 数量。
|
|
901
901
|
* `get_cash() -> float`: 获取当前可用资金。
|
|
902
|
-
* `get_account() -> Dict[str, float]`: 获取账户详情快照。常见字段包括 `cash`、`equity`、`market_value`、`notional_value`、`frozen_cash`、`margin`、`used_margin`、`unrealized_pnl`、`borrowed_cash`、`short_market_value`、`maintenance_ratio`、`account_mode`、`accrued_interest`、`daily_interest`。
|
|
902
|
+
* `get_account() -> Dict[str, float]`: 获取账户详情快照。常见字段包括 `cash`、`equity`、`market_value`、`notional_value`、`frozen_cash`、`margin`、`used_margin`、`free_margin`、`unrealized_pnl`、`borrowed_cash`、`short_market_value`、`maintenance_ratio`、`account_mode`、`accrued_interest`、`daily_interest`。
|
|
903
903
|
* 现金账户 / 现货账户下,`market_value` 通常表示持仓市值。
|
|
904
904
|
* 期货保证金账户下,`equity` 表示账户权益,`used_margin` 表示已占用保证金,`notional_value` 表示期货名义敞口,`unrealized_pnl` 表示浮动盈亏;期货持仓不会像股票那样把全额名义本金直接计入 `cash` 扣减,也不会把名义敞口直接映射为 `market_value`。
|
|
905
|
+
* `cash` 是现金余额,`free_margin`(= `equity - used_margin`)才是可用于新开仓的资金,与下单被拒时日志里的 `Available` 口径一致。期货保证金账户下开仓不从 `cash` 扣减保证金,因此 `cash` 通常大于 `free_margin`;股票现金账户下二者相等。
|
|
905
906
|
* 在策略回调内,如果你只想读取“当前账户总权益”,优先使用 `get_portfolio_value()`;其口径与 `get_account()["equity"]` 对齐。
|
|
906
907
|
* `get_order(order_id) -> Order`: 获取指定订单详情。
|
|
907
908
|
* `get_open_orders(symbol) -> List[Order]`: 获取当前未完成订单列表。
|
|
@@ -224,6 +224,7 @@ rb_config = InstrumentConfig(
|
|
|
224
224
|
- `cash`: 账户现金余额。开仓期货时不会像股票买入那样扣减全额名义本金,只会反映手续费、已实现盈亏等现金流。
|
|
225
225
|
- `equity`: 账户权益,是期货保证金账户最重要的总资产口径;`get_portfolio_value()` 与它保持一致。
|
|
226
226
|
- `used_margin` / `margin`: 当前已占用保证金。
|
|
227
|
+
- `free_margin`: 可用保证金(`equity - used_margin`),即真正可用于新开仓的资金。下单因保证金不足被拒时,日志里的 `Available` 就是这个口径——不要拿 `cash` 去和它比较。
|
|
227
228
|
- `notional_value`: 当前期货名义敞口,用于观察杠杆暴露。
|
|
228
229
|
- `unrealized_pnl`: 按最新价格计算的浮动盈亏。
|
|
229
230
|
- `market_value`: 主要用于现货/持仓市值语义;对期货保证金账户,不应把它理解为“名义本金”。
|
|
@@ -1717,11 +1717,15 @@ class Strategy:
|
|
|
1717
1717
|
|
|
1718
1718
|
Returns:
|
|
1719
1719
|
Dict: 包含以下字段:
|
|
1720
|
-
- cash:
|
|
1721
|
-
|
|
1720
|
+
- cash: 现金余额 (期货保证金账户下, 开仓不从此扣减保证金,
|
|
1721
|
+
故并非可用于新开仓的资金; 请改用 free_margin)
|
|
1722
|
+
- equity: 总权益 (现金 + 持仓市值 + 浮动盈亏)
|
|
1722
1723
|
- market_value: 持仓总市值 (equity - cash)
|
|
1723
1724
|
- frozen_cash: 当前未完成订单预占资金
|
|
1724
1725
|
- margin: 当前仓位占用保证金
|
|
1726
|
+
- used_margin: 同 margin
|
|
1727
|
+
- free_margin: 可用保证金 (equity - margin), 即可用于新开仓的资金;
|
|
1728
|
+
与拒单信息中的 Available 口径一致
|
|
1725
1729
|
- borrowed_cash: 融资负债 (现金为负时)
|
|
1726
1730
|
- short_market_value: 空头市值
|
|
1727
1731
|
- maintenance_ratio: 维持担保比例
|
|
@@ -1351,6 +1351,11 @@ def get_account(strategy: Any) -> Dict[str, Any]:
|
|
|
1351
1351
|
else:
|
|
1352
1352
|
accrued_interest = float(getattr(strategy.ctx, "margin_accrued_interest", 0.0))
|
|
1353
1353
|
daily_interest = float(getattr(strategy.ctx, "margin_daily_interest", 0.0))
|
|
1354
|
+
# 可用保证金 = 总权益 - 已占用保证金.
|
|
1355
|
+
# 与开仓资金校验(拒单信息中的 Available)口径一致.
|
|
1356
|
+
# 期货保证金账户下, cash 仅为现金余额(开仓不扣保证金).
|
|
1357
|
+
# 真正可用于新开仓的是 free_margin.
|
|
1358
|
+
free_margin = equity - margin
|
|
1354
1359
|
return {
|
|
1355
1360
|
"cash": cash,
|
|
1356
1361
|
"equity": equity,
|
|
@@ -1359,6 +1364,7 @@ def get_account(strategy: Any) -> Dict[str, Any]:
|
|
|
1359
1364
|
"frozen_cash": frozen_cash,
|
|
1360
1365
|
"margin": margin,
|
|
1361
1366
|
"used_margin": margin,
|
|
1367
|
+
"free_margin": free_margin,
|
|
1362
1368
|
"unrealized_pnl": float(unrealized_pnl),
|
|
1363
1369
|
"borrowed_cash": borrowed_cash,
|
|
1364
1370
|
"short_market_value": float(short_market_value),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|