{"repo":"akfamily/akquant","free":true,"listed":false,"github":"https://github.com/akfamily/akquant","clone":"git clone https://github.com/akfamily/akquant.git","description":"AKQuant is a high-performance quantitative research and trading framework built on Rust and Python! 开源量化回测框架","language":"Python","stars":2028,"topics":["akshare","backtest","finance","quant"],"license":"MIT","category":"data_api","readme_excerpt":"<p align=\"center\">\n  <img src=\"assets/logo.svg\" alt=\"AKQuant\" width=\"400\">\n</p>\n\n<p align=\"center\">\n    <a href=\"https://pypi.org/project/akquant/\">\n        <img src=\"https://img.shields.io/pypi/v/akquant?style=flat-square&color=007ec6\" alt=\"PyPI Version\">\n    </a>\n    <a href=\"https://pypi.org/project/akquant/\">\n        <img src=\"https://img.shields.io/pypi/pyversions/akquant?style=flat-square\" alt=\"Python Versions\">\n    </a>\n    <a href=\"LICENSE\">\n        <img src=\"https://img.shields.io/badge/license-MIT-green?style=flat-square\" alt=\"License\">\n    </a>\n    <a href=\"https://github.com/akfamily/akshare\">\n        <img src=\"https://img.shields.io/badge/Data%20Science-AKShare-green?style=flat-square\" alt=\"AKShare\">\n    </a>\n    <a href=\"https://pepy.tech/projects/akquant\">\n        <img src=\"https://static.pepy.tech/personalized-badge/akquant?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads\" alt=\"Downloads\">\n    </a>\n</p>\n\n**AKQuant** 是一款专为量化投研设计的**下一代高性能混合框架**。核心引擎采用 **Rust** 编写以确保极致的执行效率，同时提供优雅的 **Python** 接口以维持灵活的策略开发体验。\n\n🚀 **核心亮点：**\n\n*   **高性能内核**：得益于 Rust 的零开销抽象与 **Zero-Copy 数据导入**（`add_arrays` 借用 NumPy 缓冲入引擎；策略侧 `get_history` 等读取则返回安全快照拷贝），AKQuant 在部分回测场景下可显著降低 Python 层开销；实际运行速度取决于策略逻辑、数据规模、回调频率与运行环境。\n*   **原生 ML 支持**：内置 **Walk-forward Validation**（滚动训练）框架，无缝集成 PyTorch/Scikit-learn，让 AI 策略开发从实验到回测一气呵成。\n*   **TA-Lib 指标生态**：内置 `akquant.talib` 双后端（`python/rust`）兼容能力，支持 **103 个指标**。\n*   **因子表达式引擎**：内置 **Polars** 驱动的高性能因子计算引擎，支持 `Rank(Ts_Mean(Close, 5))` 等 Alpha101 风格公式，自动处理并行计算与数据对齐。\n*   **参数优化**：内置多进程网格搜索（Grid Search）框架，支持策略参数的高效并行优化。\n*   **专业级风控**：内置完善的订单流管理与即时风控模块，支持多资产组合回测。\n\n👉 **[阅读完整文档](https://akquant.akfamily.xyz/)** | **[English Documentation](https://akquant.akfamily.xyz/en/)**\n\n## 安装说明\n\n**AKQuant** 已发布至 PyPI，无需安装 Rust 环境即可直接使用。\n\n```bash\npip install akquant\n```\n\n## 快速开始\n\n以下是一个简单的策略示例：\n\n```python\nimport akquant as aq\nimport akshare as ak\nfrom akquant import Strategy\n\n# 1. 准备数据\n# 使用 akshare 获取 A 股历史数据 (需安装: pip install akshare)\ndf = ak.stock_zh_a_daily(symbol=\"sh600000\", start_date=\"20250212\", end_date=\"20260212\")\n\n\nclass MyStrategy(Strategy):\n    def on_bar(self, bar):\n        # 简单策略示例:\n        # 当收盘价 > 开盘价 (阳线) -> 买入\n        # 当收盘价 < 开盘价 (阴线) -> 卖出\n\n        # 获取当前持仓\n        current_pos = self.get_position(bar.symbol)\n\n        if current_pos == 0 and bar.close > bar.open:\n            self.buy(symbol=bar.symbol, quantity=100)\n            print(f\"[{bar.timestamp_iso}] Buy 100 at {bar.close:.2f}\")  # UTC ISO 8601\n\n        elif current_pos > 0 and bar.close < bar.open:\n            self.close_position(symbol=bar.symbol)\n            print(f\"[{bar.timestamp_iso}] Sell 100 at {bar.close:.2f}\")  # UTC ISO 8601\n\n\n# 运行回测\nresult = aq.run_backtest(\n    data=df,\n    strategy=MyStrategy,\n    initial_cash=100000.0,\n    symbols=\"sh600000\"\n)\n\n# 打印回测结果\nprint(\"\\n=== Backtest Result ===\")\nprint(result)\n\n# 生成最小基准对比报告\nbenchmark_returns = (\n    df.set_index(\"date\")[\"close\"].pct_change().fillna(0.0).rename(\"SIMPLE_BENCH\")\n)\nresult.viz.report(\n    filename=\"quickstart_report.html\",\n    show=False,\n    benchmark=benchmark_returns,\n)\n```\n\n调用 `result.viz.report(..., benchmark=...)` 后，报告会新增“基准对比 (Benchmark Comparison)”区块，展示策略/基准/超额累计收益曲线，以及累计超额收益、年化超额收益、跟踪误差、信息比率、Beta、Alpha 等相对指标。\n\n**运行结果示例:**\n\n```text\n=== Backtest Result ===\nBacktestResult:\n                                            Value\nstart_time              2025-02-12 00:00:00+08:00\nend_time                2026-02-12 00:00:00+08:00\nduration                        365 days, 0:00:00\ntotal_bars                                    249\nclosed_trade_count                                  62.0\nexecution_count                                    124.0\nopen_position_count                                  0.0\ninitial_market_value                     100000.0\nend_market_value                          99804.0\ntotal_pnl                                  -196.0\nunrealized_pnl                                0.0\ntotal_return_pct                           -0.196\nannualized_return                        -0.00196\nvolatility                               0.002402\ntotal_profit                                548.0\ntotal_loss                                 -744.0\ntotal_commission                              0.0\nmax_drawdown                                345.0\nmax_drawdown_pct                         0.344487\nwin_rate                                22.580645\nloss_rate                               77.419355\nwinning_trades                               14.0\nlosing_trades                                48.0\navg_pnl                                  -3.16129\navg_return_pct                          -0.199577\navg_trade_bars                           1.967742\navg_profit                              39.142857\navg_profit_pct                           3.371156\navg_winning_trade_bars                        4.5\navg_loss                                    -15.5\navg_loss_pct                            -1.241041\navg_losing_trade_bars                    1.229167\nlargest_win                                 120.0\nlargest_win_pct                         10.178117\nlargest_win_bars                              7.0\nlargest_loss                                -70.0\nlargest_loss_pct                        -5.380477\nlargest_loss_bars                             1.0\nmax_wins                                      2.0\nmax_losses                                    9.0\nsharpe_ratio                            -0.816142\nsortino_ratio                           -1.066016\nprofit_factor                            0.736559\nulcer_index                              0.001761\nupi                                     -1.113153\nequity_r2                                0.399577\nstd_error                                68.64863\ncalmar_ratio                            -0.568962\nexposure_time_pct                       48.995984\nvar_95                                   -0.00023\nvar_99                                   -0.00062\ncvar_95                                 -0.000405\ncvar_99                                  -0.00069\nsqn                                     -0.743693\nkelly_criterion                         -0.080763\nmax_leverage                              0.01458\nmin_margin_level                        68.587671\n```\n\n## 复杂订单助手 (OCO / Bracket)\n\nAKQuant 提供了两组复杂订单助手，减少手写订单联动逻辑：\n\n*   `place_oco(first_order_id, second_order_id, group_id=None)`：将两个订单绑定为 OCO，任一成交后自动撤销另一单。\n*   `place_bracket(symbol, quantity, entry_price=None, stop_trigger_price=None, take_profit_price=None, ...)`：一次性提交 Bracket 结构；进场成交后自动挂出止损/止盈，并在双退出单场景下自动绑定 OCO。\n\n```python\nfrom akquant import OrderStatus, Strategy\n\nclass BracketHelperStrategy(Strategy):\n    def __init__(self):\n        self.entry_order_id = \"\"\n\n    def on_bar(self, bar):\n        if self.get_position(bar.symbol) > 0 or self.entry_order_id:\n            return\n\n        self.entry_order_id = self.place_bracket(\n            symbol=bar.symbol,\n            quantity=100,\n            stop_trigger_price=bar.close * 0.98,\n            take_profit_price=bar.close * 1.04,\n            entry_tag=\"entry\",\n            stop_tag=\"stop\",\n            take_profit_tag=\"take\",\n        )\n\n    def on_order(self, order):\n        if order.id == self.entry_order_id and order.status in (\n            OrderStatus.Cancelled,\n            OrderStatus.Rejected,\n        ):\n            self.entry_order_id = \"\"\n```\n\n可直接运行完整示例：\n\n```bash\npython examples/06_complex_orders.py\n```\n\n## 流式回测 (Streaming)\n\n如果你希望在回测执行过程中实时消费事件，可直接使用 `run_backtest` 并传入 `on_event`：\n\n```python\ndef on_event(event):\n    if event[\"event_type\"] == \"finished\":\n        payload = event[\"payload\"]\n        print(\"status:\", payload.get(\"status\"))\n        print(\"callback_error_count:\", payload.get(\"callback_error_count\"))\n\nresult = aq.run_backtest(\n    data=df,\n    strategy=MyStrategy,\n    symbols=\"sh600000\",\n    on_event=on_event,\n    show_progress=False,\n    stream_progress_interval=10,\n    stream_equity_interval=10,\n    stream_batch_size=32,\n    stream_max_buffer=256,\n    stream_error_mode=\"continue\",\n)\n```\n\n`on_event` 为可选参数：不传时保持传统阻塞语义，传入时可实时消费事件。\n\n关键参数：\n\n*   `stream_progress_interval` / `stream_equity_interval`: 进度与权益事件采样间隔\n*   `stream_batch_size` / `stream_max_buffer`: 缓冲与批量刷新控制\n*   `stream_error_mode`: 回调异常策略，支持 `\"continue\"` 与 `\"fail_fast\"`\n\n## 可视化 (Visualization)\n\nAKQuant 内置了基于 **Plotly** 的强大可视化模块，仅需一行代码即可生成包含权益曲线、回撤分析、月度热力图等详细指标的交互式 HTML 报告。\n\n```python\n# 生成交互式 HTML 报告，自动在浏览器中打开\nresult.viz.report(\n    show=True,\n    compact_currency=True,  # 金额列按 K/M/B 紧凑显示（默认 True）\n)\n\n# 如果你希望金额列保留原始数值精度（不缩写），可关闭：\nresult.viz.report(\n    show=False,\n    filename=\"report_raw_amount.html\",\n    compact_currency=False,\n)\n```\n\n你也可以直接复用结构化分析结果做二次研究：\n\n```python\nexposure = result.exposure_df()             # 暴露分解（净暴露/总暴露/杠杆）\nattr_by_symbol = result.attribution_df(by=\"symbol\")\nattr_by_tag = result.attribution_df(by=\"tag\")\ncapacity = result.capacity_df()             # 容量代理（成交率/换手等）\norders_by_strategy = result.orders_by_strategy()         # 按策略归属聚合订单\nexecutions_by_strategy = result.executions_by_strategy() # 按策略归属聚合成交\n```\n\n<p align=\"center\">\n  <img src=\"assets/dashboard_preview.png\" alt=\"Strategy Dashboard\" width=\"800\">\n  <br>\n  👉 <a href=\"https://akquant.akfamily.xyz/report_demo/\">点击查看交互式报表示例 (Interactive Demo)</a>\n</p>\n\n## 文档索引\n\n*   📖 **[核心特性与架构](docs/zh/index.md#核心特性)**: 了解 AKQuant 的设计理念与性能优势。\n*   🛠️ **[安装指南](docs/zh/start/installation.md)**: 详细的安装步骤（含源码编译）。\n*   🚀 **[快速入门](docs/zh/start/quickstart.md)**: 更多示例与基础用法。\n*   🤖 **[机器学习指南](docs/zh/advanced/ml.md)**: 如何使用内置的 ML 框架进行滚动训练。\n*   📚 **[API 参考](docs/zh/reference/api.md)**: 详细的类与函数文档。\n*   💻 **[贡献指南](CONTRIBUTING.md)**: 如何参与项目开发。\n\n## 🧪 测试与质量保证\n\nAKQuant 采用严格的测试流程以确保回测引擎的准确性：\n\n*   **单元测试**: 覆盖核心 Rust 组件与 Python 接口。\n*   **黄金测试 (Golden Tests)**: 使用合成数据验证关键业务逻辑（如 T+1、涨跌停、保证金、期权希腊值），并与锁定的基线结果进行比对，防止算法回退。\n\n运行测试：\n```bash\n# 1. 使用 uv 环境运行命令\nuv sync\n\n# 2. 构建并绑定 Rust 扩展\n# 注意：不要使用 `uv run maturin develop`，它会先尝试安装当前项目，\n# 对于以 maturin 作为 build backend 的仓库可能卡在 Preparing packages。\nuvx maturin develop\n\n# 3. 运行所有测试\nuv run pytest\n\n# 4. ","default_branch":"main","files":723,"tree":[".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/workflows/deploy-docs.yml",".github/workflows/docs-quality.yml",".github/workflows/release.yml",".gitignore",".pre-commit-config.yaml","CHANGELOG.md","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Cargo.lock","Cargo.toml","LICENSE","README.md","assets/dashboard_preview.png","assets/logo.svg","assets/social_preview.png","docs/CNAME","docs/assets/akquant-icon.svg","docs/assets/akquant-logo.svg","docs/assets/reports/akquant_report.html","docs/en/advanced/analyzer_plugin_spec.md","docs/en/advanced/broker_capability_matrix.md","docs/en/advanced/custom_broker_production_checklist.md","docs/en/advanced/custom_broker_registry.md","docs/en/advanced/data_feed_adapter_spec.md","docs/en/advanced/live_functional_quickstart.md","docs/en/advanced/llm.md","docs/en/advanced/ml.md","docs/en/advanced/multi_strategy_guide.md","docs/en/advanced/multi_timeframe_feed_api.md","docs/en/advanced/runtime_config.md","docs/en/advanced/signal_ingestion.md","docs/en/advanced/strategy_style_decision.md","docs/en/advanced/timezone.md","docs/en/advanced/warm_start.md","docs/en/guide/analysis.md","docs/en/guide/cross_section_checklist.md","docs/en/guide/custom_indicator.md","docs/en/guide/data.md","docs/en/guide/examples.md","docs/en/guide/factor.md","docs/en/guide/indicator_scenario_quickref.md","docs/en/guide/optimization.md","docs/en/guide/python_basics.md","docs/en/guide/quant_basics.md","docs/en/guide/rust_indicator_reference.md","docs/en/guide/strategy.md","docs/en/guide/talib_indicator_playbook.md","docs/en/guide/testing.md","docs/en/guide/visualization.md","docs/en/index.md","docs/en/meta/architecture.md","docs/en/meta/internals.md","docs/en/reference/api.md","docs/en/start/first_strategy.md","docs/en/start/installation.md","docs/en/start/quickstart.md","docs/en/start/setup_guide.md","docs/en/textbook/01_foundations.md","docs/en/textbook/02_programming.md","docs/en/textbook/03_data.md","docs/en/textbook/04_backtest_engine.md","docs/en/textbook/05_strategy.md","docs/en/textbook/06_stock_a.md","docs/en/textbook/07_futures.md","docs/en/textbook/08_options.md","docs/en/textbook/09_funds.md","docs/en/textbook/10_analysis.md","docs/en/textbook/11_optimization.md","docs/en/textbook/12_ml.md","docs/en/textbook/13_visualization.md","docs/en/textbook/14_factor.md","docs/en/textbook/15_live_trading.md","docs/en/textbook/16_rust_indicators.md","docs/en/textbook/index.md","docs/javascripts/mathjax.js","docs/javascripts/search-lang-filter.js","docs/robots.txt","docs/zh/advanced/adding_a_broker.md","docs/zh/advanced/analyzer_plugin_spec.md","docs/zh/advanced/broker_capability_matrix.md","docs/zh/advanced/custom_broker_production_checklist.md","docs/zh/advanced/custom_broker_registry.md","docs/zh/advanced/data_feed_adapter_spec.md","docs/zh/advanced/live_functional_quickstart.md","docs/zh/advanced/llm.md","docs/zh/advanced/ml.md","docs/zh/advanced/multi_strategy_guide.md","docs/zh/advanced/multi_timeframe_feed_api.md","docs/zh/advanced/runtime_config.md","docs/zh/advanced/signal_ingestion.md","docs/zh/advanced/strategy_style_decision.md","docs/zh/advanced/tick_size_alignment.md","docs/zh/advanced/timezone.md","docs/zh/advanced/warm_start.md","docs/zh/guide/analysis.md","docs/zh/guide/cross_section_checklist.md","docs/zh/guide/custom_indicator.md","docs/zh/guide/data.md","docs/zh/guide/examples.md","docs/zh/guide/factor.md","docs/zh/guide/indicator_scenario_quickref.md","docs/zh/guide/optimization.md","docs/zh/guide/python_basics.md","docs/zh/guide/quant_basics.md","docs/zh/guide/rust_indicator_reference.md","docs/zh/guide/strategy.md","docs/zh/guide/talib_indicator_playbook.md","docs/zh/guide/testing.md","docs/zh/guide/visualization.md","docs/zh/index.md","docs/zh/meta/architecture.md","docs/zh/meta/columnar-rfc.md","docs/zh/meta/hooks-rfc.md","docs/zh/meta/internals.md","docs/zh/meta/issue-329-fix-plan.md","docs/zh/meta/logging-rfc.md","docs/zh/meta/signal-ingestion-rfc.md","docs/zh/meta/timer-api-rfc.md","docs/zh/meta/viz-namespace-and-lwc-review-rfc.md","docs/zh/meta/warm-start-config-and-merge-rfc.md","docs/zh/reference/api.md","docs/zh/start/first_strategy.md","docs/zh/start/installation.md","docs/zh/start/quickstart.md","docs/zh/start/setup_guide.md","docs/zh/textbook/00_glossary.md","docs/zh/textbook/01_foundations.md","docs/zh/textbook/02_programming.md","docs/zh/textbook/03_data.md","docs/zh/textbook/04_backtest_engine.md","docs/zh/textbook/05_strategy.md","docs/zh/textbook/06_stock_a.md","docs/zh/textbook/07_futures.md","docs/zh/textbook/08_options.md","docs/zh/textbook/09_funds.md","docs/zh/textbook/10_analysis.md","docs/zh/textbook/11_optimization.md","docs/zh/textbook/12_ml.md","docs/zh/textbook/13_visualization.md","docs/zh/textbook/14_factor.md","docs/zh/textbook/15_live_trading.md","docs/zh/textbook/16_rust_indicators.md","docs/zh/textbook/ROADMAP.md","docs/zh/textbook/appendix_cite.md","docs/zh/textbook/appendix_pitfalls.md","docs/zh/textbook/appendix_setup.md","docs/zh/textbook/capstone.md","docs/zh/textbook/index.md","examples/01_quickstart.py","examples/02_parameter_optimization.py","examples/03_parameter_optimization_advanced.py","examples/04_mixed_assets.py","examples/05_live_trading_ctp.py","examples/06_complex_orders.py","examples/07_option_test.py","examples/08_event_callbacks.py","examples/09_ml_framework.py","examples/10_ml_walk_forward.py","examples/11_plot_visualization.py","examples/12_wfo_integrated.py","examples/13_quantstats_report.py","examples/14_multi_frequency.py","examples/15_plot_intraday.py","examples/16_adj_returns_signal.py","examples/17_readme_demo.py","examples/18_benchmark_multisymbol.py","examples/19_factor_expression.py","examples/20_risk_management_demo.py","examples/21_warm_start_demo.py","examples/22_strategy_runtime_config_demo.py","examples/23_functional_callbacks_demo.py","examples/24_functional_tick_simulation_demo.py","examples/25_streaming_backtest_demo.py","examples/26_streaming_quickstart.py","examples/27_streaming_monitoring_console.py","examples/28_streaming_alerts_and_persist.py","examples/29_streaming_event_report.py","examples/30_streaming_report_oneclick.py","examples/31_streaming_live_console.py","examples/32_streaming_live_web.py","examples/33_report_and_analysis_outputs.py","examples/34_multi_strategy_demo.py","examples/35_custom_broker_registry_demo.py","examples/36_trailing_orders.py","examples/37_feed_replay_alignment_demo.py","examples/38_live_functional_strategy_demo.py","examples/39_live_broker_submit_order_demo.py","examples/39_live_mixed_broker_demo.py","examples/40_functional_multi_slot_risk_demo.py","examples/41_live_multi_slot_orchestration_demo.py","examples/42_live_broker_event_audit_demo.py","examples/43_target_weights_rebalance.py","examples/44_strategy_source_loader_demo.py","examples/45_talib_indicator_playbook_demo.py","examples/46_broker_profile_demo.py","examples/47_margin_liquidation_audit_demo.py","examples/48_margin_liquidation_priority_compare.py","examples/49_on_expiry_demo.py","examples/50_framework_hooks_demo.py","examples/51_class_tick_callbacks_demo.py","examples/52_pre_open_demo.py","examples/53_timer_to_pre_open_demo.py","examples/54_functional_pre_open_demo.py","examples/55_functional_ml_walk_forward.py","examples/56_functional_warm_start_demo.py","examples/57_functional_multi_slot_warm_start_demo.py","examples/58_incremental_bootstrap_demo.py","examples/59_akshare_etf_rotation.py","examples/60_custom_indicator_demo.py","examples/61_indicator_visualization_export_demo.py","examples/61_signal_platform_webhook.py","examples/62_indicator_streaming_demo.py","examples/63_indicator_ws_bridge_demo.py","examples/64_indicator_live_web.py","examples/65_bar_generator.py","examples/66_logging_audit_demo.py","examples/67_lwc_trade_review.py","examples/68_backtest_tick_demo.py","examples/README.md","examples/benchmark_utils.py","examples/pb_mock.py","examples/strategies/01_stock_dual_moving_average.py","examples/strategies/02_stock_grid_trading.py","examples/strategies/03_stock_atr_breakout.py","examples/strategies/04_stock_momentum_rotation.py","examples/strategies/05_stock_momentum_rotation_timer.py","examples/strategies/06_stock_momentum_rotation_bucket.py","examples/strategies/07_stock_momentum_rotation_on_timer.py","examples/strategies/08_target_positions_long_short.py","examples/strategies/09_stock_momentum_rotation_after_bar.py","examples/strategies/README.md","examples/textbook/ch01_quickstart.py","examples/textbook/ch01_quickstart_functional.py","examples/textbook/ch02_programming.py","examples/textbook/ch03_data.py","examples/textbook/ch04_comparison.py","examples/textbook/ch04_comparison_functional.py","examples/textbook/ch05_strategy.py","examples/textbook/ch05_strategy_functional.py","examples/textbook/ch06_stock_a.py","examples/textbook/ch06_stock_a_functional.py","examples/textbook/ch07_futures.py","examples/textbook/ch07_futures_functional.py","examples/textbook/ch08_options.py","examples/textbook/ch08_options_functional.py","examples/textbook/ch09_funds.py","examples/textbook/ch09_funds_functional.py","examples/textbook/ch09_portfolio.py","examples/textbook/ch09_portfolio_functional.py","examples/textbook/ch10_analysis.py","examples/textbook/ch10_analysis_functional.py","examples/textbook/ch11_optimization.py","examples/textbook/ch11_optimization_functional.py","examples/textbook/ch12_ml.py","examples/textbook/ch12_ml_functional.py","examples/textbook/ch13_visualization.py","examples/textbook/ch13_visualization_functional.py","examples/textbook/ch14_factor.py","examples/textbook/ch15_live_trading.py","examples/textbook/ch15_live_trading_functional.py","examples/textbook/ch15_strategy_loader.py","examples/textbook/ch15_strategy_loader_functional.py","examples/textbook/ch16_indicators.py","examples/textbook/ch16_indicators_functional.py","mkdocs.yml","pyproject.toml","python/akquant/__init__.py","python/akquant/akquant.pyi","python/akquant/analysis/__init__.py","python/akquant/analysis/benchmark.py","python/akquant/analyzer_plugin.py","python/akquant/backtest/__init__.py","python/akquant/backtest/__init__.pyi","python/akquant/backtest/_viz.py","python/akquant/backtest/engine.py","python/akquant/backtest/fill_mode.py","python/akquant/backtest/merge.py","python/akquant/backtest/result.py","python/akquant/backtest/tick_input.py","python/akquant/bar_generator.py","python/akquant/chart/__init__.py","python/akquant/chart/_normalize.py","python/akquant/checkpoint.py","python/akquant/config.py","python/akquant/data.py","python/akquant/execution/__init__.py","python/akquant/execution/base.py","python/akquant/execution/sim.py","python/akquant/factor/__init__.py","python/akquant/factor/engine.py","python/akquant/factor/ops.py","python/akquant/factor/parser.py","python/akquant/feed_adapter.py","python/akquant/fund/__init__.py","python/akquant/futures/__init__.py","python/akquant/gateway/__init__.py","python/akquant/gateway/base.py","python/akquant/gateway/broker_event_adapter.py","python/akquant/gateway/broker_event_bridge.py","python/akquant/gateway/broker_event_mapper.py","python/akquant/gateway/broker_execution.py","python/akquant/gateway/broker_models.py","python/akquant/gateway/broker_recovery.py","python/akquant/gateway/broker_runtime.py","python/akquant/gateway/broker_state_cache.py","python/akquant/gateway/broker_strategy_api.py","python/akquant/gateway/brokers/__init__.py","python/akquant/gateway/brokers/builtins.py","python/akquant/gateway/brokers/ctp/__init__.py","python/akquant/gateway/brokers/ctp/adapter.py","python/akquant/gateway/brokers/ctp/native.py","python/akquant/gateway/brokers/miniqmt/__init__.py","python/akquant/gateway/brokers/miniqmt/stub.py","python/akquant/gateway/brokers/plugins.py","python/akquant/gateway/brokers/ptrade/__init__.py","python/akquant/gateway/brokers/ptrade/stub.py","python/akquant/gateway/brokers/replay/__init__.py","python/akquant/gateway/brokers/replay/gateway.py","python/akquant/gateway/ctp_adapter.py","python/akquant/gateway/ctp_native.py","python/akquant/gateway/factory.py","python/akquant/gateway/local_stop_book.py","python/akquant/gateway/mapper.py","python/akquant/gateway/miniqmt.py","python/akquant/gateway/models.py","python/akquant/gateway/order_audit.py","python/akquant/gateway/order_receipt.py","python/akquant/gateway/order_submitter.py","python/akquant/gateway/protocols.py","python/akquant/gateway/ptrade.py","python/akquant/gateway/registry.py","python/akquant/gateway/trader_base.py","python/akquant/indicator.py","python/akquant/indicator_recording.py","python/akquant/indicator_stream.py","python/akquant/live/__init__.py","python/akquant/live/_facade.py","python/akquant/live/_gateway_setup.py","python/akquant/live/_payload_utils.py","python/akquant/live/_runner.py","python/akquant/live/_strategy_maps.py","python/akquant/live/_stream_sink.py","python/akquant/log.py","python/akquant/lwc/__init__.py","python/akquant/lwc/_payload.py","python/akquant/lwc/_template.py","python/akquant/lwc/assets/LICENSE.lightweight-charts","python/akquant/lwc/assets/NOTICE.md","python/akquant/lwc/assets/lightweight-charts.standalone.production.js","python/akquant/lwc/review.py","python/akquant/ml/__init__.py","python/akquant/ml/model.py","python/akquant/normalize.py","python/akquant/optimize.py","python/akquant/option/__init__.py","python/akquant/params.py","python/akquant/params_adapter.py","python/akquant/plot/__init__.py","python/akquant/plot/_market_data.py","python/akquant/plot/analysis.py","python/akquant/plot/dashboard.py","python/akquant/plot/indicator.py","python/akquant/plot/report.py","python/akquant/plot/strategy.py","python/akquant/plot/utils.py","python/akquant/py.typed","python/akquant/risk.py","python/akquant/schema.py","python/akquant/signal/__init__.py","python/akquant/signal/dedup.py","python/akquant/signal/dispatcher.py","python/akquant/signal/models.py","python/akquant/signal/protocols.py","python/akquant/signal/registry.py","python/akquant/signal/security.py","python/akquant/signal/sinks.py","python/akquant/signal/sources/__init__.py","python/akquant/signal/sources/http.py","python/akquant/signal/sources/queue.py","python/akquant/signal/sources/redis_stream.py","python/akquant/sizer.py","python/akquant/stock/__init__.py","python/akquant/strategy.py","python/akquant/strategy_events.py","python/akquant/strategy_framework_hooks.py","python/akquant/strategy_history.py","python/akquant/strategy_loader.py","python/akquant/strategy_logging.py","python/akquant/strategy_ml.py","python/akquant/strategy_order_events.py","python/akquant/strategy_position.py","python/akquant/strategy_scheduler.py","python/akquant/strategy_time.py","python/akquant/strategy_trading_api.py","python/akquant/stream_schema.py","python/akquant/talib/__init__.py","python/akquant/talib/backend.py"],"storefront":"/r/akfamily","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/akfamily/akquant/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}