{
  "checked_date": "2026-11-12 Asia/Taipei",
  "method": "相关高星量化/研究项目10个样本，非GitHub全站排名；GitHub REST仓库元数据读取stars，GitHub连接器读取README及核心源码，官网核对当前供应商说明；未实测收费行情接口。",
  "rows": [
    {
      "project": "TradingAgents",
      "type": "AI交易研究",
      "scheme": "默认yfinance；可选Alpha Vantage；SEC EDGAR财务、FRED宏观。不是购买项目就得到独立行情库。",
      "source": "https://github.com/TauricResearch/TradingAgents/blob/main/tradingagents/default_config.py",
      "repo": "TauricResearch/TradingAgents",
      "stars": 122028,
      "stars_source": "https://api.github.com/repos/TauricResearch/TradingAgents"
    },
    {
      "project": "OpenBB / ODP",
      "type": "数据研究平台",
      "scheme": "当前V5连接Cboe、Nasdaq、SEC、FRED、EIA等。yfinance/FMP/Tiingo等属于已移除的V4连接器，不能列为V5现用方案。原仓库URL现跳转openbq-org/OpenBB。",
      "source": "https://docs.openbb.co/odp/python/extensions/providers",
      "repo": "OpenBB-finance/OpenBB",
      "stars": 75335,
      "stars_source": "https://api.github.com/repos/OpenBB-finance/OpenBB"
    },
    {
      "project": "AI Hedge Fund",
      "type": "AI投资研究",
      "scheme": "Financial Datasets 提供价格、基本面、财报；README要求独立数据密钥。",
      "source": "https://github.com/virattt/ai-hedge-fund",
      "repo": "virattt/ai-hedge-fund",
      "stars": 64631,
      "stars_source": "https://api.github.com/repos/virattt/ai-hedge-fund"
    },
    {
      "project": "Freqtrade",
      "type": "加密货币策略/回测",
      "scheme": "CCXT对接Binance、Kraken等交易所；CCXT是适配库，交易所才是数据来源。非美股/A股解决方案。",
      "source": "https://github.com/freqtrade/freqtrade/blob/develop/docs/exchanges.md",
      "repo": "freqtrade/freqtrade",
      "stars": 56769,
      "stars_source": "https://api.github.com/repos/freqtrade/freqtrade"
    },
    {
      "project": "Qlib",
      "type": "机器学习量化",
      "scheme": "Yahoo Finance采集器支持US/CN；也接受本地/社区数据。README提示官方数据集暂停、Yahoo数据可能不完善。",
      "source": "https://github.com/microsoft/qlib/blob/main/scripts/data_collector/README.md",
      "repo": "microsoft/qlib",
      "stars": 50217,
      "stars_source": "https://api.github.com/repos/microsoft/qlib"
    },
    {
      "project": "VeighNa / vn.py",
      "type": "交易及研究框架",
      "scheme": "历史datafeed适配器：RQData、Tushare、Polygon；海外IB属于券商网关，不能等同独立历史数据订阅。",
      "source": "https://github.com/vnpy/vnpy",
      "repo": "vnpy/vnpy",
      "stars": 46340,
      "stars_source": "https://api.github.com/repos/vnpy/vnpy"
    },
    {
      "project": "NautilusTrader",
      "type": "回测/实盘引擎",
      "scheme": "Databento；IB券商；CoinAPI、FinFeed标beta；Tardis加密。按市场分供应商。",
      "source": "https://github.com/nautechsystems/nautilus_trader",
      "repo": "nautechsystems/nautilus_trader",
      "stars": 31458,
      "stars_source": "https://api.github.com/repos/nautechsystems/nautilus_trader"
    },
    {
      "project": "Backtrader",
      "type": "经典回测框架",
      "scheme": "Yahoo Finance、IB、CSV/Pandas自带数据接入。仓库最后push为2024-08-19，README含旧Yahoo说明，存在接口不代表今天可运行。",
      "source": "https://github.com/mementum/backtrader/blob/master/README.rst",
      "repo": "mementum/backtrader",
      "stars": 23717,
      "stars_source": "https://api.github.com/repos/mementum/backtrader"
    },
    {
      "project": "LEAN / QuantConnect",
      "type": "量化回测/交易引擎",
      "scheme": "QuantConnect数据及Local；lean-cli列Polygon、AlphaVantage、IQFeed、FactSet、Databento、Alpaca、IB等历史提供者。各自账户/订阅，不是统一免费源。",
      "source": "https://github.com/QuantConnect/lean-cli",
      "repo": "QuantConnect/Lean",
      "stars": 22486,
      "stars_source": "https://api.github.com/repos/QuantConnect/Lean"
    },
    {
      "project": "FinRL",
      "type": "强化学习量化研究",
      "scheme": "当前核心DataProcessor实际支持Yahoo Finance、Alpaca、WRDS、FXMacroData；README更广的历史生态清单不等于都在当前核心实现。继任FinRL-X描述Yahoo→FMP→WRDS。",
      "source": "https://github.com/AI4Finance-Foundation/FinRL/blob/master/finrl/meta/data_processor.py",
      "repo": "AI4Finance-Foundation/FinRL",
      "stars": 17047,
      "stars_source": "https://api.github.com/repos/AI4Finance-Foundation/FinRL"
    }
  ],
  "readme_evidence": [
    {
      "repo": "TauricResearch/TradingAgents",
      "content": "<p align=\"center\">\n  <img src=\"tradingagents/assets/tauric-logo.svg\" width=\"60%\" alt=\"Tauric Research\">\n</p>\n\n# TradingAgents: Multi-Agents LLM Financial Trading Framework\n\n<div align=\"center\" style=\"line-height: 1;\">\n  <a href=\"https://arxiv.org/abs/2412.20138\" target=\"_blank\"><img alt=\"arXiv\" src=\"https://img.shields.io/badge/arXiv-2412.20138-B31B1B?logo=arxiv\"/></a>\n  <a href=\"https://discord.com/invite/hk9PGKShPK\" target=\"_blank\"><img alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-TradingResearch-7289da?logo=discord&logoColor=white&color=7289da\"/></a>\n  <a href=\"https://x.com/TauricResearch\" target=\"_blank\"><img alt=\"X Follow\" src=\"https://img.shields.io/badge/X-TauricResearch-white?logo=x&logoColor=white\"/></a>\n  <a href=\"https://github.com/TauricResearch/\" target=\"_blank\"><img alt=\"Community\" src=\"https://img.shields.io/badge/GitHub_Community-TauricResearch-14C290?logo=discourse\"/></a>\n</div>\n\n<br>\n<div align=\"center\">\n  <a href=\"https://github.com/TauricResearch\" target=\"_blank\"><img alt=\"TradingAgents #1 Repository of the Day\" src=\"https://trendshift.io/api/badge/repositories/16192\" width=\"250\" height=\"55\"/></a>\n</div>\n\n## Latest: [Trading-R1](https://github.com/TauricResearch/Trading-R1) is now in early access\n\nAfter so many requests from the community, Trading-R1 has officially launched!\n\n<p align=\"center\">\n  <a href=\"https://github.com/TauricResearch/Trading-R1\" target=\"_blank\"><img src=\"https://raw.githubusercontent.com/TauricResearch/Trading-R1/main/assets/trading-r1.gif\" alt=\"Trading-R1 answering a research question in the terminal\" width=\"100%\"></a>\n</p>\n\n<h3 align=\"center\"><a href=\"https://github.com/TauricResearch/Trading-R1\" target=\"_blank\">Register for early access ↗</a></h3>\n\n## News\n\n<!-- news:start -->\n- [2026-11] **Trading-R1 v0.1.0** released, and [early access](https://github.com/TauricResearch/Trading-R1) is open.\n- [2026-10] **TradingAgents v0.7.1** released with decisions scored only on final closes and settled across long market holidays, a fix for model dates that could read filings made after the run date, and fixes to portfolios, prices, SEC statements and reports.\n- [2026-10] **TradingAgents v0.7.0** released with runs on your own ChatGPT Plus or Pro plan, backtests scored from the first close after each decision, a note at start-up when a newer release is out, and a wheel attached to each GitHub release.\n\n<details>\n<summary>Earlier news</summary>\n\n- [2026-10] **TradingAgents v0.6.0** released with reports saved as one HTML page, a provider per model tier so the managers and analysts can run on different models, past decisions settled for every ticker while the analysts work, and company news read from Yahoo search while Yahoo's news feed is down.\n- [2026-09] **TradingAgents v0.5.2** released with parallel analysts for a faster analysis, a CLI that runs without prompts from flags such as `--ticker` and `--date`, the run's settings recorded in every report, and backtests that see only data published by each analysis date.\n- [2026-09] **TradingAgents v0.5.1** released with a package layout organised by what each module holds (import paths moved), optional Jev screening of social posts, GPT-6 Sol and Luna as the default models, and fixes to run isolation and SEC EDGAR statements.\n- [2026-09] **TradingAgents v0.5.0** released with point-in-time integrity across every dated path, SEC EDGAR fundamentals served as filed, backtesting over a ticker and date grid, portfolio-aware runs, and current model lineups across every provider.\n- [2026-08] **TradingAgents v0.4.0** released with look-ahead / point-in-time fixes across FRED macro, social sentiment, and the decision-log memory; clearer decision signals; working CLI checkpoint resume; Trader price grounding; and the GPT-5.6 and GLM-5.3 models.\n- [2026-07] **TradingAgents v0.3.1** released with correctness and stability fixes: Alpha Vantage look-ahead filtering, graph-router crash-safety, graph-shape-aware checkpoint resume, working crypto sentiment sources, a configurable LLM retry budget, Bedrock API-key auth, and Claude Sonnet 5 / Fable 5 support.\n- [2026-06] **TradingAgents v0.3.0** released with a verified data-access contract, an expanded provider registry (NVIDIA, Kimi, Groq, Mistral, Bedrock, and any OpenAI-compatible endpoint), FRED and Polymarket data vendors, a current-generation model catalog, and a CI gate.\n- [2026-05] **TradingAgents v0.2.5** released with the grounded Sentiment Analyst, GPT-5.5 etc. model coverage, Qwen/GLM/MiniMax dual-region support, `TRADINGAGENTS_*` env-var configurability with API-key auto-detection, remote Ollama support, non-US alpha benchmarks, and ticker path-traversal hardening.\n- [2026-04] **TradingAgents v0.2.4** released with structured-output agents (Research Manager, Trader, Portfolio Manager), LangGraph checkpoint resume, persistent decision log, DeepSeek/Qwen/GLM/Azure provider support, Docker, and a Windows UTF-8 encoding fix.\n- [2026-03] **TradingAgents v0.2.3** released with multi-language support, GPT-5.4 family models, unified model catalog, backtesting date fidelity, and proxy support.\n- [2026-03] **TradingAgents v0.2.2** released with GPT-5.4/Gemini 3.1/Claude 4.6 model coverage, five-tier rating scale, OpenAI Responses API, Anthropic effort control, and cross-platform stability.\n- [2026-02] **TradingAgents v0.2.0** released with multi-provider LLM support (GPT-5.x, Gemini 3.x, Claude 4.x, Grok 4.x) and improved system architecture.\n- [2026-01] **Trading-R1** [Technical Report](https://arxiv.org/abs/2509.11420) released, with [Terminal](https://github.com/TauricResearch/Trading-R1) expected to land soon.\n\n</details>\n<!-- news:end -->\n\n<div align=\"center\">\n\n🚀 [TradingAgents](#tradingagents-framework) | ⚡ [Installation & CLI](#installation-and-cli) | 🎬 [Demo](https://www.youtube.com/watch?v=90gr5lwjIho) | 📦 [Package Usage](#tradingagents-package) | 🤝 [Contributing](#contributing) | 📄 [Citation](#citation)\n\n</div>\n\n> 🎉 **TradingAgents** officially released! We have received numerous inquiries about the work, and we would like to express our thanks for the enthusiasm in our community.\n>\n> So we decided to fully open-source the framework. Looking forward to building impactful projects with you!\n\n## TradingAgents Framework\n\nTradingAgents is a multi-agent trading framework that mirrors the dynamics of real-world trading firms. By deploying specialized LLM-powered agents: from fundamental analysts, sentiment experts, and technical analysts, to trader, risk management team, the platform collaboratively evaluates market conditions and informs trading decisions. Moreover, these agents engage in dynamic discussions to pinpoint the optimal strategy.\n\n<p align=\"center\">\n  <img src=\"assets/schema.png\" style=\"width: 100%; height: auto;\">\n</p>\n\n> TradingAgents framework is designed for research purposes. Trading performance may vary based on many factors, including the chosen backbone language models, model temperature, trading periods, the quality of data, and other non-deterministic factors. [It is not intended as financial, investment, or trading advice.](https://tauric.ai/disclaimer/)\n\nOur framework decomposes complex trading tasks into specialized roles.\n\n### Analyst Team\n- Fundamentals Analyst: Evaluates company financials and performance metrics, identifying intrinsic values and potential red flags.\n- Sentiment Analyst: Aggregates news headlines, StockTwits, and Reddit chatter into a single sentiment read to gauge short-term market mood.\n- News Analyst: Monitors global news and macroeconomic indicators, interpreting the impact of events on market conditions.\n- Technical Analyst: Utilizes technical indicators (like MACD and RSI) to detect trading patterns and forecast price movements.\n\nThe selected analysts work at the same time, each on its own tools, and the research debate starts once all of their reports are in.\n\n<p align=\"center\">\n  <img src=\"assets/analyst.png\" width=\"100%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\n### Researcher Team\n- Comprises both bullish and bearish researchers who critically assess the insights provided by the Analyst Team. Through structured debates, they balance potential gains against inherent risks.\n\n<p align=\"center\">\n  <img src=\"assets/researcher.png\" width=\"70%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\n### Trader Agent\n- Composes reports from the analysts and researchers to make informed trading decisions, determining the timing and magnitude of trades.\n\n<p align=\"center\">\n  <img src=\"assets/trader.png\" width=\"70%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\n### Risk Management and Portfolio Manager\n- Continuously evaluates portfolio risk by assessing market volatility, liquidity, and other risk factors. The risk management team evaluates and adjusts trading strategies, providing assessment reports to the Portfolio Manager for final decision.\n- The Portfolio Manager approves/rejects the transaction proposal. If approved, the order will be sent to the simulated exchange and executed.\n\n<p align=\"center\">\n  <img src=\"assets/risk.png\" width=\"70%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\n## Installation and CLI\n\n### Installation\n\nClone TradingAgents:\n```bash\ngit clone https://github.com/TauricResearch/TradingAgents.git\ncd TradingAgents\n```\n\nTradingAgents needs Python 3.11 or later. Create a virtual environment in any of your favorite environment managers:\n```bash\nconda create -n tradingagents python=3.13\nconda activate tradingagents\n```\n\nOr with [uv](https://docs.astral.sh/uv/):\n```bash\nuv venv --python 3.13\nsource .venv/bin/activate\n```\n\nInstall the package and its dependencies (`uv pip install .` with uv):\n```bash\npip install .\n```\n\n### Docker\n\nAlternatively, run with Docker:\n```bash\ncp .env.example .env  # add your API keys\ndocker compose run --rm tradingagents\n```\n\nAfter updating the repository, rebuild the image with `docker compose build`.\n\nResults, reports, the memory log and the cache live in the `tradingagents_data` volume. To keep them in a folder on the host instead, create the folder and point `TRADINGAGENTS_DATA_DIR` at it, in `.env` or the shell: `mkdir -p data && TRADINGAGENTS_DATA_DIR=./data docker compose run --rm tradingagents`.\n\nFor local models with Ollama:\n```bash\ndocker compose --profile ollama run --rm tradingagents-ollama\n```\n\n### Required APIs\n\nTradingAgents supports multiple LLM providers. Set the API key for your chosen provider:\n\n```bash\nexport OPENAI_API_KEY=...          # OpenAI (GPT)\nexport GOOGLE_API_KEY=...          # Google (Gemini)\nexport ANTHROPIC_API_KEY=...       # Anthropic (Claude)\nexport XAI_API_KEY=...             # xAI (Grok)\nexport DEEPSEEK_API_KEY=...        # DeepSeek\nexport DASHSCOPE_API_KEY=...       # Qwen (international, dashscope-intl.aliyuncs.com)\nexport DASHSCOPE_CN_API_KEY=...    # Qwen (China, dashscope.aliyuncs.com)\nexport ZHIPU_API_KEY=...           # GLM via Z.AI (international)\nexport ZHIPU_CN_API_KEY=...        # GLM via BigModel (China, open.bigmodel.cn)\nexport MINIMAX_API_KEY=...         # MiniMax (global, api.minimax.io)\nexport MINIMAX_CN_API_KEY=...      # MiniMax (China, api.minimaxi.com)\nexport OPENROUTER_API_KEY=...      # OpenRouter\nexport MISTRAL_API_KEY=...         # Mistral\nexport MOONSHOT_API_KEY=...        # Kimi (Moonshot)\nexport GROQ_API_KEY=...            # Groq\nexport NVIDIA_API_KEY=...          # NVIDIA NIM\nexport FRED_API_KEY=...            # FRED macro data (free, optional)\nexport ALPHA_VANTAGE_API_KEY=...   # Alpha Vantage\nexport TYPESAFE_API_KEY=...        # Jev social-post screening (optional)\n```\n\nFor Azure OpenAI, copy `.env.enterprise.example` to `.env.enterprise` and fill in your credentials. With Docker, put these keys in `.env` instead: the image does not include `.env` files.\n\nTo run on your ChatGPT Plus or Pro plan instead of an API key, choose \"Subscription\" in the CLI's provider menu, or set `llm_provider: \"chatgpt\"`. Sign in once with `tradingagents login chatgpt`: it prints an address to open in your browser, which returns to this machine on `127.0.0.1`. When the browser runs on another machine, or TradingAgents runs in Docker (`docker compose run --rm tradingagents login chatgpt`), paste the address the browser ends up on. The sign-in is kept in `~/.tradingagents/chatgpt-auth.json`, and `tradingagents logout chatgpt` revokes it. Runs count toward your plan's usage limits, and the plan does not accept `temperature` or `max_tokens`.\n\nFor AWS Bedrock, install the extra with `pip install \".[bedrock]\"`, set `llm_provider: \"bedrock\"`, configure AWS credentials (environment variables, `~/.aws/credentials`, or an IAM role) and `AWS_DEFAULT_REGION`, and use a Bedrock model ID, e.g. `us.anthropic.claude-opus-5-5`.\n\nFor local models, configure Ollama with `llm_provider: \"ollama\"`. The default endpoint is `http://localhost:11434/v1`; set `OLLAMA_BASE_URL` to point at a remote `ollama-serve`. Pull models with `ollama pull <name>`, and pick \"Custom model ID\" in the CLI for any model not listed by default.\n\nFor any other OpenAI-compatible server (vLLM, LM Studio, llama.cpp, or a custom relay), use `llm_provider: \"openai_compatible\"` and set the endpoint via `backend_url` (or `TRADINGAGENTS_LLM_BACKEND_URL`), e.g. `http://localhost:8000/v1` for vLLM or `http://localhost:1234/v1` for LM Studio. The model is whatever your server serves. No key is needed for local servers; set `OPENAI_COMPATIBLE_API_KEY` when the endpoint requires one.\n\nWith `TYPESAFE_API_KEY` set, the Sentiment Analyst screens StockTwits and Reddit posts with TypeSafe's Jev before reading them. Posts that are not about the company are dropped, and each source opens with a count of the remaining posts by stance: bullish, bearish, neutral, or unclear. Without the key, posts pass through unscreened. `jev-latest` moves with new releases; set `TYPESAFE_DEFAULT_MODEL` to a versioned ID such as `jev-1.13.0` to hold it fixed across runs. To reach Jev through OpenRouter, put an OpenRouter key in `TYPESAFE_API_KEY` and set `TYPESAFE_BASE_URL=https://openrouter.ai/api`.\n\nAlternatively, copy `.env.example` to `.env` and fill in your keys:\n```bash\ncp .env.example .env\n```\n\n### CLI Usage\n\nLaunch the interactive CLI:\n```bash\ntradingagents          # installed command\npython -m cli.main     # alternative: run directly from source\n```\nYou will see a screen where you can select your desired tickers, analysis date, LLM provider, research depth, and more. Your previous run's answers come back as the defaults, so pressing Enter accepts them. The `TRADINGAGENTS_*` variables in `.env` still skip their step entirely.\n\nTo run without questions, for a scheduled job or a script, answer the per-run steps with flags and the rest with `TRADINGAGENTS_*` variables:\n```bash\nexport TRADINGAGENTS_LLM_PROVIDER=openai TRADINGAGENTS_QUICK_THINK_LLM=gpt-6-luna TRADINGAGENTS_DEEP_THINK_LLM=gpt-6-sol\nexport TRADINGAGENTS_OUTPUT_LANGUAGE=English TRADINGAGENTS_MAX_DEBATE_ROUNDS=1 TRADINGAGENTS_MAX_RISK_ROUNDS=1\ntradingagents --ticker NVDA --date 2026-09-23 --analysts market,news,fundamentals --save --no-show\n```\nEach flag skips only its own question. Run without a terminal, a missing answer stops the run before it starts and names the flag or variable to set.\n\nAt start-up the interactive CLI mentions a newer release and notices from Tauric Research. It checks at most once a day, in the background, and sends nothing about your runs; set `TRADINGAGENTS_NO_UPDATE_CHECK=1` to turn it off. Runs without a terminal never check.\n\nA saved report also includes `complete_report.html`, the report as one page with its sections listed beside the text, for reading in a browser, on a phone or in print. Answering the save question at the prompt also asks about the page and can open it in your browser; `--no-html` skips it, and so does `ta.save_reports(state, \"NVDA\", html=False)` from Python.\n\n### Markets and tickers\n\nTradingAgents works with any market Yahoo Finance covers, using the exchange-suffixed ticker. Company identity and the alpha benchmark resolve automatically per market.\n\n- US: `AAPL`, `SPY`\n- Hong Kong: `0700.HK` · Tokyo: `7203.T` · London: `AZN.L`\n- India: `RELIANCE.NS`, `.BO` · Canada: `.TO` · Australia: `.AX`\n- China A-shares: Shanghai `.SS`, Shenzhen `.SZ` (e.g. `600519.SS` for Kweichow Moutai)\n- Crypto: `BTC-USD`, `ETH-USD`\n\n<p align=\"center\">\n  <img src=\"assets/cli/cli_init.png\" width=\"100%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\nAn interface will appear showing results as they load, letting you track the agent's progress as it runs.\n\n<p align=\"center\">\n  <img src=\"assets/cli/cli_news.png\" width=\"100%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/cli/cli_transaction.png\" width=\"100%\" style=\"display: inline-block; margin: 0 2%;\">\n</p>\n\n## TradingAgents Package\n\n### Implementation Details\n\nWe built TradingAgents with LangGraph to ensure flexibility and modularity. The framework supports multiple LLM providers: OpenAI, Google, Anthropic, xAI, DeepSeek, Qwen (Alibaba DashScope, international and China endpoints), GLM (Zhipu), MiniMax (global + China), OpenRouter, Ollama for local models, Azure OpenAI for enterprise, and your own ChatGPT plan.\n\n### Python Usage\n\nTo use TradingAgents inside your code, you can import the `tradingagents` module and initialize a `TradingAgentsGraph()` object. The `.propagate()` function will return a decision. You can run `main.py`, here's also a quick example:\n\n```python\nfrom tradingagents.graph.trading_graph import TradingAgentsGraph\nfrom tradingagents.default_config import DEFAULT_CONFIG\n\nta = TradingAgentsGraph(debug=True, config=DEFAULT_CONFIG.copy())\n\n# forward propagate\nstate, decision = ta.propagate(\"NVDA\", \"2026-09-01\")\nprint(decision)\n\n# the same report tree the CLI saves, under results_dir/reports\nta.save_reports(state, \"NVDA\")\n```\n\nYou can also adjust the default configuration to set your own choice of LLMs, debate rounds, etc.\n\n```python\nfrom tradingagents.graph.trading_graph import TradingAgentsGraph\nfrom tradingagents.default_config import DEFAULT_CONFIG\n\nconfig = DEFAULT_CONFIG.copy()\nconfig[\"llm_provider\"] = \"openai\"        # e.g. openai, google, anthropic, deepseek, groq, ollama; openai_compatible covers any OpenAI-compatible endpoint (vLLM, LM Studio, llama.cpp, ...)\nconfig[\"deep_think_llm\"] = \"gpt-6-sol\"    # Model for complex reasoning\nconfig[\"quick_think_llm\"] = \"gpt-6-luna\"   # Model for quick tasks\nconfig[\"max_debate_rounds\"] = 2\n\nta = TradingAgentsGraph(debug=True, config=config)\n_, decision = ta.propagate(\"NVDA\", \"2026-09-01\")\nprint(decision)\n```\n\nThe quick model serves the analysts, researchers, debaters and trader; the deep model serves the research and portfolio managers. Each can run on its own provider, for example the managers on Claude while the rest run on OpenAI:\n\n```python\nconfig[\"deep_think_provider\"] = \"anthropic\"\nconfig[\"deep_think_llm\"] = \"claude-opus-5-5\"\n```\n\nA tier on its own provider uses that provider's key and default endpoint; set `quick_think_backend_url` or `deep_think_backend_url` for a local or relay endpoint. The `TRADINGAGENTS_DEEP_THINK_PROVIDER` and `TRADINGAGENTS_QUICK_THINK_PROVIDER` variables set them for the CLI, together with the tier's model variable.\n\nSee `tradingagents/default_config.py` for all configuration options.\n\n### Fundamentals as filed\n\nUS company statements come from SEC EDGAR, which records the date every figure was filed. A run dated in the past reads the statements exactly as they stood that day: a fiscal year that has ended but has not been filed yet is not served, and a figure restated later still reads as first reported. Apple's 2008 total assets were filed as $39.6B and restated to $36.2B in 2010, so a run dated in between reads $39.6B. EDGAR needs no account or API key.\n\nOther companies' statements come from Yahoo Finance, which dates a statement by the period it covers rather than by when it was published. A run dated today reads them; a run dated in the past is told they are withheld, since Yahoo cannot say which figures were public by then.\n\nInsider trades are dated by when they happened, not when they were filed, so a run dated in the past is told they are withheld as well.\n\nSEC asks callers to identify themselves and refuses requests that carry no contact address, so a default one is sent. Set your own so SEC can reach you rather than the project:\n\n```bash\nSEC_EDGAR_USER_AGENT=\"Your Name your@email.com\"\n```\n\nIt covers companies that file with the SEC, including foreign companies listed in the US. Anything else, such as Hong Kong or A-share listings, falls through to the next vendor in the chain. EDGAR's machine-readable filings begin in 2009, and a fourth quarter is reported as unavailable rather than derived, because filers publish it only inside the annual figure.\n\n### Current holdings\n\nBy default the agents do not know what you hold, so their guidance is written for a reader who applies it to their own position. Pass a portfolio to have the trader, the risk analysts and the portfolio manager work against your actual book.\n\n```python\nfrom tradingagents.portfolio import PortfolioContext\n\nportfolio = PortfolioContext.model_validate({\n    \"cash\": 25000.0,\n    \"currency\": \"USD\",\n    \"positions\": [{\"ticker\": \"NVDA\", \"quantity\": 120, \"average_price\": 150.0}],\n})\n_, decision = ta.propagate(\"NVDA\", \"2026-09-01\", portfolio=portfolio)\n```\n\nThe CLI takes the same content as a JSON file: `tradingagents --portfolio my_book.json`.\n\nAn empty `positions` list means a flat book, which is different from passing nothing. A run without a portfolio is never treated as flat.\n\n## Persistence and Recovery\n\nTradingAgents persists two kinds of state across runs.\n\n### Memory log\n\nThe memory log is always on. Each completed run appends its decision to `~/.tradingagents/memory/trading_memory.md`. While the analysts of a later run work, TradingAgents settles every logged decision whose holding period has passed: it fetches the realised return (raw, and alpha against the instrument's regional benchmark) and generates a one-paragraph reflection. The Portfolio Manager then reads the most recent decisions for the same ticker plus recent lessons from other tickers, so each analysis carries forward what worked and what didn't. If settling fails, the run goes on and its report says so.\n\nOverride the path with `TRADINGAGENTS_MEMORY_LOG_PATH`.\n\nTo settle decisions without running an analysis, for a scheduled job, call `ta.settle_all_pending()`; it returns the decisions it settled and any it could not.\n\n### Checkpoint resume\n\nCheckpoint resume is opt-in via `--checkpoint`. When enabled, LangGraph saves state after each node so a crashed or interrupted run resumes from the last successful step instead of starting over. The run view says whether it resumed a saved run or started fresh. Checkpoints are cleared automatically on successful completion.\n\nPer-ticker SQLite databases live at `~/.tradingagents/cache/checkpoints/<TICKER>.db` (override the base with `TRADINGAGENTS_CACHE_DIR`). Use `--clear-checkpoints` to reset all of them before a run.\n\n```bash\ntradingagents --checkpoint           # enable for this run\ntradingagents --clear-checkpoints    # reset before running\n```\n\n```python\nconfig = DEFAULT_CONFIG.copy()\nconfig[\"checkpoint_enabled\"] = True\nta = TradingAgentsGraph(config=config)\n_, decision = ta.propagate(\"NVDA\", \"2026-09-01\")\n```\n\n## Evaluating decisions over time\n\nOne run gives one decision, which cannot tell you whether the system decides well. `run_backtest` runs the same pipeline over a grid of tickers and dates, writes to a memory log of its own, and scores the decisions whose holding window has since traded.\n\n```python\nfrom tradingagents.backtest import iter_grid, run_backtest, summarize\n\ndates = iter_grid(\"2026-06-01\", \"2026-08-01\", every_n_days=7)\nresult = run_backtest([\"NVDA\", \"AAPL\"], dates, config, selected_analysts=[\"market\", \"news\"])\nprint(summarize(result).render())\n```\n\nFrom the CLI:\n\n```bash\ntradingagents backtest NVDA,AAPL --start 2026-06-01 --end 2026-08-01 --every 7\n```\n\nEach cell is scored on realized alpha against the instrument's regional benchmark, grouped by rating. A decision is entered at the first close after its date, because a run reads news published after that day's close. Your own memory log is never written to, and re-running the same grid with `run_id=result.run_id` skips the cells that already ran, so an interrupted sweep continues where it stopped.\n\n## Reproducibility\n\nTradingAgents is LLM-driven, so two runs of the same ticker and date can differ. This is expected for a research tool built on language models, not a defect. The variation comes from a few distinct sources, and it helps to separate them.\n\nLanguage model sampling is non-deterministic. Even at a fixed temperature, providers do not guarantee byte-identical output across calls, and reasoning models (the default GPT-6 family, and any thinking-mode model) vary the most because their internal reasoning is itself sampled.\n\nLive data moves. News, StockTwits, and Reddit return different content as time passes, so a run today sees different inputs than a run last week even for the same historical trade date. Pin the analysis date to hold the price and indicator window fixed, but the social and news sources still reflect \"now\".\n\nTo reduce variation you can lower the sampling temperature. Set `temperature` in your config (or `TRADINGAGENTS_TEMPERATURE` in `.env`); lower values make models that honor it more repeatable. The current curated models are reasoning-first and largely ignore temperature, so for tighter reproducibility name a non-reasoning model in your config, or in `TRADINGAGENTS_DEEP_THINK_LLM` and `TRADINGAGENTS_QUICK_THINK_LLM`. Any model ID your provider serves is accepted, whether or not the picker lists it.\n\n```python\nconfig = DEFAULT_CONFIG.copy()\nconfig[\"llm_provider\"] = \"openai\"\nconfig[\"temperature\"] = 0.0\n# Reasoning models ignore temperature. For tighter reproducibility, name a\n# non-reasoning model in deep_think_llm / quick_think_llm.\n```\n\nWhat does not vary anymore: the analyzed company identity is resolved deterministically from the ticker before any agent runs, and the market analyst grounds exact price and indicator claims in a verified data snapshot. Earlier reports of \"different companies\" or fabricated price levels across runs are addressed by these two mechanisms.\n\nBacktest results are not guaranteed to match any published figure. Returns depend on the model, the temperature, the date range, data quality, and the sampling above. Treat the framework as a research scaffold for studying multi-agent analysis, not as a strategy with a fixed, replicable return.\n\n## Contributing\n\nContributions are welcome: bug fixes, documentation, and feature ideas; past contributions are credited per release in [`CHANGELOG.md`](CHANGELOG.md).\n\n## Citation\n\nPlease reference our work if you find *TradingAgents* provides you with some help :)\n\n```\n@misc{xiao2025tradingagentsmultiagentsllmfinancial,\n      title={TradingAgents: Multi-Agents LLM Financial Trading Framework}, \n      author={Yijia Xiao and Edward Sun and Di Luo and Wei Wang},\n      year={2025},\n      eprint={2412.20138},\n      archivePrefix={arXiv},\n      primaryClass={q-fin.TR},\n      url={https://arxiv.org/abs/2412.20138}, \n}\n```\n"
    },
    {
      "repo": "virattt/ai-hedge-fund",
      "content": "# AI Hedge Fund\n\nThis is a proof of concept for an AI-powered hedge fund. The goal of this project is to explore the use of AI to make trading decisions. This project is for **educational** purposes only and is not intended for real trading or investment.\n\n<img width=\"2400\" height=\"1460\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e3985623-c226-4c1a-a587-e03fb4eca31e\" />\n\n\nNote: the system does not actually make any trades.\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/virattt?style=social)](https://twitter.com/virattt)\n\n## Disclaimer\n\nThis project is for **educational and research purposes only**.\n\n- Not intended for real trading or investment\n- No investment advice or guarantees provided\n- Creator assumes no liability for financial losses\n- Consult a financial advisor for investment decisions\n- Past performance does not indicate future results\n\nBy using this software, you agree to use it solely for learning purposes.\n\n## How to Install\n\n```bash\npipx install aihf\n```\n\n(or `uv tool install aihf`, or `pip install aihf` into an environment of your choice)\n\nThen run it from anywhere:\n\n```bash\naihf\n```\n\n### API keys\n\nThe app asks for keys the first time it needs them and saves them to `~/.hedge-fund/.env` — nothing to configure up front. It needs:\n\n- A [Financial Datasets](https://financialdatasets.ai) API key, for prices, fundamentals, and earnings. Or, instead of a key, the private key of a Base wallet holding USDC: every call then pays for itself with [x402](https://docs.financialdatasets.ai/x402) (`pip install 'aihf[x402]'`; last 365 days of data, non-professional use).\n- One model API key for the investor agents. Supported providers: Anthropic, OpenAI, DeepSeek, Google, xAI, Kimi, TypeSafe (Jev).\n\nKeys exported in your shell always win over the saved file.\n\n## How to Run\n\n### Interactive app\n\n```bash\naihf\n```\n\nWith no arguments, this launches the interactive terminal app. It has two modes:\n\n- **Paper trading** — your funds, each with a ledger of real market days and fake money. Highlight a fund to see what its next run will do; press enter to run it through the next completed session (an approval step shows the exact decision about to execute before anything trades), `s` for its full session history, `h`/`r` for the kill switch. Build a new fund from the same list: strategies, capital, cadence, tickers, and it is live. Every session is appended to a hash-chained ledger in `~/.hedge-fund/paper/<name>/`, so NAV is a track record, not a reset.\n- **Backtesting** — replay a fund over history and watch its equity curve draw against its benchmark. Results are saved to `~/.hedge-fund/research/`. Fund definitions live in `~/.hedge-fund/mandates/` and carry no tickers; you pick the universe per backtest.\n\n\n\n## Development\n\n```bash\ngit clone https://github.com/virattt/ai-hedge-fund.git\ncd ai-hedge-fund\npoetry install\npoetry run aihf\npoetry run pytest hedge_fund\n```\n\n## How to Contribute\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n\n**Important**: Please keep your pull requests small and focused. This will make it easier to review and merge.\n\n## Feature Requests\n\nIf you have a feature request, please open an [issue](https://github.com/virattt/ai-hedge-fund/issues) and make sure it is tagged with `enhancement`.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n"
    },
    {
      "repo": "OpenBB-finance/OpenBB",
      "content": null
    },
    {
      "repo": "freqtrade/freqtrade",
      "content": "# ![freqtrade](https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docs/assets/freqtrade_poweredby.svg)\n\n[![Freqtrade CI](https://github.com/freqtrade/freqtrade/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/freqtrade/freqtrade/actions/workflows/ci.yml)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864)\n[![codecov](https://codecov.io/gh/freqtrade/freqtrade/branch/develop/graph/badge.svg?token=AD5BG3ATKI)](https://codecov.io/gh/freqtrade/freqtrade)\n[![Documentation](https://readthedocs.org/projects/freqtrade/badge/)](https://www.freqtrade.io)\n[![Discord Server](https://img.shields.io/badge/Freqtrade_Discord-4E4E4E?logo=discord)](https://discord.gg/p7nuUNVfP7)\n\nFreqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram or webUI. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning.\n\n![freqtrade](https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docs/assets/freqtrade-screenshot.png)\n\n## Disclaimer\n\nThis software is for educational purposes only. Do not risk money which\nyou are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS\nAND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.\n\nAlways start by running a trading bot in Dry-Run and do not engage money\nbefore you understand how it works and what profit/loss you should\nexpect.\n\nWe strongly recommend you to have coding and Python knowledge. Do not\nhesitate to read the source code and understand the mechanism of this bot.\n\n## Supported Exchange marketplaces\n\nPlease read the [exchange-specific notes](https://www.freqtrade.io/en/stable/exchanges/) to learn about special configurations that maybe needed for each exchange.\n\n### Supported Spot Exchanges\n\n- [X] [Binance](https://www.binance.com/)\n- [X] [BingX](https://bingx.com/invite/0EM9RX)\n- [X] [Bitget](https://www.bitget.com/)\n- [X] [Bybit EU](https://bybit.eu/)\n- [X] [Bybit](https://bybit.com/)\n- [X] [Gate EU](https://www.gate.com/en-eu)\n- [X] [Gate](https://www.gate.com/ref/6266643)\n- [X] [HTX](https://www.htx.com/)\n- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)\n- [X] [Kraken](https://kraken.com/)\n- [X] [MyOKX](https://okx.com/) (OKX EEA)\n- [X] [OKX](https://okx.com/)\n- [ ] [potentially many others](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_\n\n### Supported Futures Exchanges\n\n- [X] [Binance](https://www.binance.com/)\n- [X] [Bitget](https://www.bitget.com/)\n- [X] [Bybit](https://bybit.com/)\n- [X] [Gate](https://www.gate.com/ref/6266643)\n- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)\n- [X] [Kraken](https://www.kraken.com/features/futures)\n- [X] [OKX](https://okx.com/)\n\nPlease make sure to read the [exchange specific notes](https://www.freqtrade.io/en/stable/exchanges/), as well as the [trading with leverage](https://www.freqtrade.io/en/stable/leverage/) documentation before diving in.\n\n### Community tested\n\nExchanges confirmed working by the community:\n\n- [X] [Bitvavo](https://bitvavo.com/)\n- [X] [Kucoin](https://www.kucoin.com/)\n\n## Documentation\n\nWe invite you to read the bot documentation to ensure you understand how the bot is working.\n\nPlease find the complete documentation on the [freqtrade website](https://www.freqtrade.io).\n\n## Features\n\n- [x] **Based on Python 3.12+**: For botting on any operating system - Windows, macOS and Linux.\n- [x] **Persistence**: Persistence is achieved through sqlite.\n- [x] **Dry-run**: Run the bot without paying money.\n- [x] **Backtesting**: Run a simulation of your buy/sell strategy.\n- [x] **Strategy Optimization by machine learning**: Use machine learning to optimize your buy/sell strategy parameters with real exchange data.\n- [X] **Adaptive prediction modeling**: Build a smart strategy with FreqAI that self-trains to the market via adaptive machine learning methods. [Learn more](https://www.freqtrade.io/en/stable/freqai/)\n- [x] **Whitelist crypto-currencies**: Select which crypto-currency you want to trade or use dynamic whitelists.\n- [x] **Blacklist crypto-currencies**: Select which crypto-currency you want to avoid.\n- [x] **Builtin WebUI**: Builtin web UI to manage your bot.\n- [x] **Manageable via Telegram**: Manage the bot with Telegram.\n- [x] **Display profit/loss in fiat**: Display your profit/loss in fiat currency.\n- [x] **Performance status report**: Provide a performance status of your current trades.\n\n## Quick start\n\nPlease refer to the [Docker Quickstart documentation](https://www.freqtrade.io/en/stable/docker_quickstart/) on how to get started quickly.\n\nFor further (native) installation methods, please refer to the [Installation documentation page](https://www.freqtrade.io/en/stable/installation/).\n\n## Basic Usage\n\n### Bot commands\n\n```\nusage: freqtrade [-h] [-V]\n                 {trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}\n                 ...\n\nFree, open source crypto trading bot\n\npositional arguments:\n  {trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}\n    trade               Trade module.\n    create-userdir      Create user-data directory.\n    new-config          Create new config\n    show-config         Show resolved config\n    new-strategy        Create new strategy\n    download-data       Download backtesting data.\n    convert-data        Convert candle (OHLCV) data from one format to\n                        another.\n    convert-trade-data  Convert trade data from one format to another.\n    trades-to-ohlcv     Convert trade data to OHLCV data.\n    list-data           List downloaded data.\n    backtesting         Backtesting module.\n    backtesting-show    Show past Backtest results\n    backtesting-analysis\n                        Backtest Analysis module.\n    hyperopt            Hyperopt module.\n    hyperopt-list       List Hyperopt results\n    hyperopt-show       Show details of Hyperopt results\n    list-exchanges      Print available exchanges.\n    list-markets        Print markets on exchange.\n    list-pairs          Print pairs on exchange.\n    list-strategies     Print available strategies.\n    list-hyperoptloss   Print available hyperopt loss functions.\n    list-freqaimodels   Print available freqAI models.\n    list-timeframes     Print available timeframes for the exchange.\n    show-trades         Show trades.\n    test-pairlist       Test your pairlist configuration.\n    convert-db          Migrate database to different system\n    install-ui          Install FreqUI\n    plot-dataframe      Plot candles with indicators.\n    plot-profit         Generate plot showing profits.\n    webserver           Webserver module.\n    strategy-updater    updates outdated strategy files to the current version\n    lookahead-analysis  Check for potential look ahead bias.\n    recursive-analysis  Check for potential recursive formula issue.\n\noptions:\n  -h, --help            show this help message and exit\n  -V, --version         show program's version number and exit\n```\n\n### Telegram RPC commands\n\nTelegram is not mandatory. However, this is a great way to control your bot. More details and the full command list on the [documentation](https://www.freqtrade.io/en/stable/telegram-usage/)\n\n- `/start`: Starts the trader.\n- `/stop`: Stops the trader.\n- `/stopentry`: Stop entering new trades.\n- `/status <trade_id>|[table]`: Lists all or specific open trades.\n- `/profit [<n>]`: Lists cumulative profit from all finished trades, over the last n days.\n- `/profit_long [<n>]`: Lists cumulative profit from all finished long trades, over the last n days.\n- `/profit_short [<n>]`: Lists cumulative profit from all finished short trades, over the last n days.\n- `/forceexit <trade_id>|all`: Instantly exits the given trade (Ignoring `minimum_roi`).\n- `/fx <trade_id>|all`: Alias to `/forceexit`\n- `/performance`: Show performance of each finished trade grouped by pair\n- `/balance`: Show account balance per currency.\n- `/daily <n>`: Shows profit or loss per day, over the last n days.\n- `/help`: Show help message.\n- `/version`: Show version.\n\n\n## Development branches\n\nThe project is currently setup in two main branches:\n\n- `develop` - This branch has often new features, but might also contain breaking changes. We try hard to keep this branch as stable as possible.\n- `stable` - This branch contains the latest stable release. This branch is generally well tested.\n- `feat/*` - These are feature branches, which are being worked on heavily. Please don't use these unless you want to test a specific feature.\n\n## Support\n\n### Help / Discord\n\nFor any questions not covered by the documentation or for further information about the bot, or to simply engage with like-minded individuals, we encourage you to join the Freqtrade [discord server](https://discord.gg/p7nuUNVfP7).\n\n### [Bugs / Issues](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue)\n\nIf you discover a bug in the bot, please\n[search the issue tracker](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue)\nfirst. If it hasn't been reported, please\n[create a new issue](https://github.com/freqtrade/freqtrade/issues/new/choose) and\nensure you follow the template guide so that the team can assist you as\nquickly as possible.\n\nFor every [issue](https://github.com/freqtrade/freqtrade/issues/new/choose) created, kindly follow up and mark satisfaction or reminder to close issue when equilibrium ground is reached.\n\n--Maintain github's [community policy](https://docs.github.com/en/site-policy/github-terms/github-community-code-of-conduct)--\n\n### [Feature Requests](https://github.com/freqtrade/freqtrade/labels/enhancement)\n\nHave you a great idea to improve the bot you want to share? Please,\nfirst search if this feature was not [already discussed](https://github.com/freqtrade/freqtrade/labels/enhancement).\nIf it hasn't been requested, please\n[create a new request](https://github.com/freqtrade/freqtrade/issues/new/choose)\nand ensure you follow the template guide so that it does not get lost\nin the bug reports.\n\n### [Pull Requests](https://github.com/freqtrade/freqtrade/pulls)\n\nFeel like the bot is missing a feature? We welcome your pull requests!\n\nPlease read the\n[Contributing document](https://github.com/freqtrade/freqtrade/blob/develop/CONTRIBUTING.md)\nto understand the requirements before sending your pull-requests.\n\nCoding is not a necessity to contribute - maybe start with improving the documentation?\nIssues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/good%20first%20issue) can be good first contributions, and will help get you familiar with the codebase.\n\n**Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [discord](https://discord.gg/p7nuUNVfP7) (please use the #dev channel for this). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.\n\n**Important:** Always create your PR against the `develop` branch, not `stable`.\n\n## Requirements\n\n### Up-to-date clock\n\nThe clock must be accurate, synchronized to a NTP server very frequently to avoid problems with communication to the exchanges.\n\n### Minimum hardware required\n\nTo run this bot we recommend you a cloud instance with a minimum of:\n\n- Minimal (advised) system requirements: 2GB RAM, 1GB disk space, 2vCPU\n\n### Software requirements\n\n- [Python >= 3.12](http://docs.python-guide.org/en/latest/starting/installation/)\n- [pip](https://pip.pypa.io/en/stable/installing/)\n- [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n- [TA-Lib](https://ta-lib.github.io/ta-lib-python/)\n- [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended)\n- [Docker](https://www.docker.com/products/docker) (Recommended)\n"
    },
    {
      "repo": "microsoft/qlib",
      "content": "[![Python Versions](https://img.shields.io/pypi/pyversions/pyqlib.svg?logo=python&logoColor=white)](https://pypi.org/project/pyqlib/#files)\n[![Platform](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-lightgrey)](https://pypi.org/project/pyqlib/#files)\n[![PypI Versions](https://img.shields.io/pypi/v/pyqlib)](https://pypi.org/project/pyqlib/#history)\n[![Upload Python Package](https://github.com/microsoft/qlib/workflows/Upload%20Python%20Package/badge.svg)](https://pypi.org/project/pyqlib/)\n[![Github Actions Test Status](https://github.com/microsoft/qlib/workflows/Test/badge.svg?branch=main)](https://github.com/microsoft/qlib/actions)\n[![Documentation Status](https://readthedocs.org/projects/qlib/badge/?version=latest)](https://qlib.readthedocs.io/en/latest/?badge=latest)\n[![License](https://img.shields.io/pypi/l/pyqlib)](LICENSE)\n[![Join the chat at https://gitter.im/Microsoft/qlib](https://badges.gitter.im/Microsoft/qlib.svg)](https://gitter.im/Microsoft/qlib?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n## Unreleased breaking change: artifact loading\n\nNew source builds introduce a **backward-incompatible safety default**: recorder\nloads are restricted. If you reload saved models/datasets, resume online or delayed\ntraining, or use DDG-DA, verify the artifact writer and storage permissions before\nopting in with `trusted=True` (CLI: `--trusted=True`). Fresh in-memory training and\nsupported data-only reads need no opt-in. HIST mappings and high-frequency cache\npaths also have migration requirements.\n\nFollow the [artifact loading migration guide](https://qlib.readthedocs.io/en/latest/start/artifact_migration.html)\nbefore upgrading. Merging into `main` affects source installs before a new PyPI\nrelease; this change remains **unreleased until the first tagged release containing\nit**. That release's versioned upgrade notes should link to the same guide.\n\n> **Upgrading configuration-driven workflows?** See the\n> [configuration migration guide](docs/start/config_migration.rst) for the\n> unreleased source changes: per-component `trusted: true` for local `.py`\n> imports, restricted expressions, and explicit extension mappings. Package\n> imports remain available. Match this guide to your checkout; PR source,\n> `main`, and tagged/PyPI releases may differ.\n\n## :newspaper: **What's NEW!** &nbsp;   :sparkling_heart: \n\nRecent released features\n\n### Introducing <a href=\"https://github.com/microsoft/RD-Agent\"><img src=\"docs/_static/img/rdagent_logo.png\" alt=\"RD_Agent\" style=\"height: 2em\"></a>: LLM-Based Autonomous Evolving Agents for Industrial Data-Driven R&D\n\nWe are excited to announce the release of **RD-Agent**📢, a powerful tool that supports automated factor mining and model optimization in quant investment R&D.\n\nRD-Agent is now available on [GitHub](https://github.com/microsoft/RD-Agent), and we welcome your star🌟!\n\nTo learn more, please visit the [RD-Agent repository](https://github.com/microsoft/RD-Agent). We have prepared several public demo videos for you:\n\n| Scenario | Demo video (English) | Demo video (中文) |\n| --                      | ------    | ------    |\n| Quant Factor Mining | [YouTube](https://www.youtube.com/watch?v=X4DK2QZKaKY&t=6s) | [YouTube](https://www.youtube.com/watch?v=X4DK2QZKaKY&t=6s) |\n| Quant Factor Mining from reports | [YouTube](https://www.youtube.com/watch?v=ECLTXVcSx-c) | [YouTube](https://www.youtube.com/watch?v=ECLTXVcSx-c) |\n| Quant Model Optimization | [YouTube](https://www.youtube.com/watch?v=dm0dWL49Bc0&t=104s) | [YouTube](https://www.youtube.com/watch?v=dm0dWL49Bc0&t=104s) |\n\n- 📃**Paper**: [R&D-Agent-Quant: A Multi-Agent Framework for Data-Centric Factors and Model Joint Optimization](https://arxiv.org/abs/2505.15155)\n- 👾**Code**: https://github.com/microsoft/RD-Agent/\n```BibTeX\n@misc{li2025rdagentquant,\n    title={R\\&D-Agent-Quant: A Multi-Agent Framework for Data-Centric Factors and Model Joint Optimization},\n    author={Yuante Li and Xu Yang and Xiao Yang and Minrui Xu and Xisen Wang and Weiqing Liu and Jiang Bian},\n    year={2025},\n    eprint={2505.15155},\n    archivePrefix={arXiv},\n    primaryClass={cs.AI}\n}\n```\n![image](https://github.com/user-attachments/assets/3198bc10-47ba-4ee0-8a8e-46d5ce44f45d)\n\n***\n\n| Feature | Status |\n| --                      | ------    |\n| [R&D-Agent-Quant](https://arxiv.org/abs/2505.15155) Published | Apply R&D-Agent to Qlib for quant trading | \n| BPQP for End-to-end learning | 📈Coming soon!([Under review](https://github.com/microsoft/qlib/pull/1863)) |\n| 🔥LLM-driven Auto Quant Factory🔥 | 🚀 Released in [♾️RD-Agent](https://github.com/microsoft/RD-Agent) on Aug 8, 2024 |\n| KRNN and Sandwich models | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/1414/) on May 26, 2023 |\n| Release Qlib v0.9.0 | :octocat: [Released](https://github.com/microsoft/qlib/releases/tag/v0.9.0) on Dec 9, 2022 |\n| RL Learning Framework | :hammer: :chart_with_upwards_trend: Released on Nov 10, 2022. [#1332](https://github.com/microsoft/qlib/pull/1332), [#1322](https://github.com/microsoft/qlib/pull/1322), [#1316](https://github.com/microsoft/qlib/pull/1316),[#1299](https://github.com/microsoft/qlib/pull/1299),[#1263](https://github.com/microsoft/qlib/pull/1263), [#1244](https://github.com/microsoft/qlib/pull/1244), [#1169](https://github.com/microsoft/qlib/pull/1169), [#1125](https://github.com/microsoft/qlib/pull/1125), [#1076](https://github.com/microsoft/qlib/pull/1076)|\n| HIST and IGMTF models | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/1040) on Apr 10, 2022 |\n| Qlib [notebook tutorial](https://github.com/microsoft/qlib/tree/main/examples/tutorial) | 📖 [Released](https://github.com/microsoft/qlib/pull/1037) on Apr 7, 2022 | \n| Ibovespa index data | :rice: [Released](https://github.com/microsoft/qlib/pull/990) on Apr 6, 2022 |\n| Point-in-Time database | :hammer: [Released](https://github.com/microsoft/qlib/pull/343) on Mar 10, 2022 |\n| Arctic Provider Backend & Orderbook data example | :hammer: [Released](https://github.com/microsoft/qlib/pull/744) on Jan 17, 2022 |\n| Meta-Learning-based framework & DDG-DA  | :chart_with_upwards_trend:  :hammer: [Released](https://github.com/microsoft/qlib/pull/743) on Jan 10, 2022 | \n| Planning-based portfolio optimization | :hammer: [Released](https://github.com/microsoft/qlib/pull/754) on Dec 28, 2021 | \n| Release Qlib v0.8.0 | :octocat: [Released](https://github.com/microsoft/qlib/releases/tag/v0.8.0) on Dec 8, 2021 |\n| ADD model | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/704) on Nov 22, 2021 |\n| ADARNN  model | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/689) on Nov 14, 2021 |\n| TCN  model | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/668) on Nov 4, 2021 |\n| Nested Decision Framework | :hammer: [Released](https://github.com/microsoft/qlib/pull/438) on Oct 1, 2021. [Example](https://github.com/microsoft/qlib/blob/main/examples/nested_decision_execution/workflow.py) and [Doc](https://qlib.readthedocs.io/en/latest/component/highfreq.html) |\n| Temporal Routing Adaptor (TRA) | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/531) on July 30, 2021 |\n| Transformer & Localformer | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/508) on July 22, 2021 |\n| Release Qlib v0.7.0 | :octocat: [Released](https://github.com/microsoft/qlib/releases/tag/v0.7.0) on July 12, 2021 |\n| TCTS Model | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/491) on July 1, 2021 |\n| Online serving and automatic model rolling | :hammer:  [Released](https://github.com/microsoft/qlib/pull/290) on May 17, 2021 | \n| DoubleEnsemble Model | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/286) on Mar 2, 2021 | \n| High-frequency data processing example | :hammer: [Released](https://github.com/microsoft/qlib/pull/257) on Feb 5, 2021  |\n| High-frequency trading example | :chart_with_upwards_trend: [Part of code released](https://github.com/microsoft/qlib/pull/227) on Jan 28, 2021  | \n| High-frequency data(1min) | :rice: [Released](https://github.com/microsoft/qlib/pull/221) on Jan 27, 2021 |\n| Tabnet Model | :chart_with_upwards_trend: [Released](https://github.com/microsoft/qlib/pull/205) on Jan 22, 2021 |\n\nFeatures released before 2021 are not listed here.\n\n<p align=\"center\">\n  <img src=\"docs/_static/img/logo/1.png\" />\n</p>\n\nQlib is an open-source, AI-oriented quantitative investment platform that aims to realize the potential, empower research, and create value using AI technologies in quantitative investment, from exploring ideas to implementing productions. Qlib supports diverse machine learning modeling paradigms, including supervised learning, market dynamics modeling, and reinforcement learning.\n\nAn increasing number of SOTA Quant research works/papers in diverse paradigms are being released in Qlib to collaboratively solve key challenges in quantitative investment. For example, 1) using supervised learning to mine the market's complex non-linear patterns from rich and heterogeneous financial data, 2) modeling the dynamic nature of the financial market using adaptive concept drift technology, and 3) using reinforcement learning to model continuous investment decisions and assist investors in optimizing their trading strategies.\n\nIt contains the full ML pipeline of data processing, model training, back-testing; and covers the entire chain of quantitative investment: alpha seeking, risk modeling, portfolio optimization, and order execution. \nFor more details, please refer to our paper [\"Qlib: An AI-oriented Quantitative Investment Platform\"](https://arxiv.org/abs/2009.11189).\n\n\n<table>\n  <tbody>\n    <tr>\n      <th>Frameworks, Tutorial, Data & DevOps</th>\n      <th>Main Challenges & Solutions in Quant Research</th>\n    </tr>\n    <tr>\n      <td>\n        <li><a href=\"#plans\"><strong>Plans</strong></a></li>\n        <li><a href=\"#framework-of-qlib\">Framework of Qlib</a></li>\n        <li><a href=\"#quick-start\">Quick Start</a></li>\n          <ul dir=\"auto\">\n            <li type=\"circle\"><a href=\"#installation\">Installation</a> </li>\n            <li type=\"circle\"><a href=\"#data-preparation\">Data Preparation</a></li>\n            <li type=\"circle\"><a href=\"#auto-quant-research-workflow\">Auto Quant Research Workflow</a></li>\n            <li type=\"circle\"><a href=\"#building-customized-quant-research-workflow-by-code\">Building Customized Quant Research Workflow by Code</a></li></ul>\n        <li><a href=\"#quant-dataset-zoo\"><strong>Quant Dataset Zoo</strong></a></li>\n        <li><a href=\"#learning-framework\">Learning Framework</a></li>\n        <li><a href=\"#more-about-qlib\">More About Qlib</a></li>\n        <li><a href=\"#offline-mode-and-online-mode\">Offline Mode and Online Mode</a>\n        <ul>\n          <li type=\"circle\"><a href=\"#performance-of-qlib-data-server\">Performance of Qlib Data Server</a></li></ul>\n        <li><a href=\"#related-reports\">Related Reports</a></li>\n        <li><a href=\"#contact-us\">Contact Us</a></li>\n        <li><a href=\"#contributing\">Contributing</a></li>\n      </td>\n      <td valign=\"baseline\">\n        <li><a href=\"#main-challenges--solutions-in-quant-research\">Main Challenges &amp; Solutions in Quant Research</a>\n          <ul>\n            <li type=\"circle\"><a href=\"#forecasting-finding-valuable-signalspatterns\">Forecasting: Finding Valuable Signals/Patterns</a>\n              <ul>\n                <li type=\"disc\"><a href=\"#quant-model-paper-zoo\"><strong>Quant Model (Paper) Zoo</strong></a>\n                  <ul>\n                    <li type=\"circle\"><a href=\"#run-a-single-model\">Run a Single Model</a></li>\n                    <li type=\"circle\"><a href=\"#run-multiple-models\">Run Multiple Models</a></li>\n                  </ul>\n                </li>\n              </ul>\n            </li>\n          <li type=\"circle\"><a href=\"#adapting-to-market-dynamics\">Adapting to Market Dynamics</a></li>\n          <li type=\"circle\"><a href=\"#reinforcement-learning-modeling-continuous-decisions\">Reinforcement Learning: modeling continuous decisions</a></li>\n          </ul>\n        </li>\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n# Plans\nNew features under development(order by estimated release time).\nYour feedbacks about the features are very important.\n<!-- | Feature                        | Status      | -->\n<!-- | --                      | ------    | -->\n\n# Framework of Qlib\n\n<div style=\"align: center\">\n<img src=\"docs/_static/img/framework-abstract.jpg\" />\n</div>\n\nThe high-level framework of Qlib can be found above(users can find the [detailed framework](https://qlib.readthedocs.io/en/latest/introduction/introduction.html#framework) of Qlib's design when getting into nitty gritty).\nThe components are designed as loose-coupled modules, and each component could be used stand-alone.\n\nQlib provides a strong infrastructure to support Quant research. [Data](https://qlib.readthedocs.io/en/latest/component/data.html) is always an important part.\nA strong learning framework is designed to support diverse learning paradigms (e.g. [reinforcement learning](https://qlib.readthedocs.io/en/latest/component/rl.html), [supervised learning](https://qlib.readthedocs.io/en/latest/component/workflow.html#model-section)) and patterns at different levels(e.g. [market dynamic modeling](https://qlib.readthedocs.io/en/latest/component/meta.html)).\nBy modeling the market, [trading strategies](https://qlib.readthedocs.io/en/latest/component/strategy.html) will generate trade decisions that will be executed. Multiple trading strategies and executors in different levels or granularities can be [nested to be optimized and run together](https://qlib.readthedocs.io/en/latest/component/highfreq.html).\nAt last, a comprehensive [analysis](https://qlib.readthedocs.io/en/latest/component/report.html) will be provided and the model can be [served online](https://qlib.readthedocs.io/en/latest/component/online.html) in a low cost.\n\n\n# Quick Start\n\nThis quick start guide tries to demonstrate\n1. It's very easy to build a complete Quant research workflow and try your ideas with _Qlib_.\n2. Though with *public data* and *simple models*, machine learning technologies **work very well** in practical Quant investment.\n\nHere is a quick **[demo](https://terminalizer.com/view/3f24561a4470)** shows how to install ``Qlib``, and run LightGBM with ``qrun``. **But**, please make sure you have already prepared the data following the [instruction](#data-preparation).\n\n\n## Installation\n\nThis table demonstrates the supported Python version of `Qlib`:\n|               | install with pip      | install from source  |        plot        |\n| ------------- |:---------------------:|:--------------------:|:------------------:|\n| Python 3.8    | :heavy_check_mark:    | :heavy_check_mark:   | :heavy_check_mark: |\n| Python 3.9    | :heavy_check_mark:    | :heavy_check_mark:   | :heavy_check_mark: |\n| Python 3.10   | :heavy_check_mark:    | :heavy_check_mark:   | :heavy_check_mark: |\n| Python 3.11   | :heavy_check_mark:    | :heavy_check_mark:   | :heavy_check_mark: |\n| Python 3.12   | :heavy_check_mark:    | :heavy_check_mark:   | :heavy_check_mark: |\n\n**Note**: \n1. **Conda** is suggested for managing your Python environment. In some cases, using Python outside of a `conda` environment may result in missing header files, causing the installation failure of certain packages.\n2. Please pay attention that installing cython in Python 3.6 will raise some error when installing ``Qlib`` from source. If users use Python 3.6 on their machines, it is recommended to *upgrade* Python to version 3.8 or higher, or use `conda`'s Python to install ``Qlib`` from source.\n\n### Install with pip\nUsers can easily install ``Qlib`` by pip according to the following command.\n\n```bash\n  pip install pyqlib\n```\n\n**Note**: pip will install the latest stable qlib. However, the main branch of qlib is in active development. If you want to test the latest scripts or functions in the main branch. Please install qlib with the methods below.\n\n### Install from source\nAlso, users can install the latest dev version ``Qlib`` by the source code according to the following steps:\n\n* Before installing ``Qlib`` from source, users need to install some dependencies:\n\n  ```bash\n  pip install numpy\n  pip install --upgrade cython\n  ```\n\n* Clone the repository and install ``Qlib`` as follows.\n    ```bash\n    git clone https://github.com/microsoft/qlib.git && cd qlib\n    pip install .  # `pip install -e .[dev]` is recommended for development. check details in docs/developer/code_standard_and_dev_guide.rst\n    ```\n\n**Tips**: If you fail to install `Qlib` or run the examples in your environment,  comparing your steps and the [CI workflow](.github/workflows/test_qlib_from_source.yml) may help you find the problem.\n\n**Tips for Mac**: If you are using Mac with M1, you might encounter issues in building the wheel for LightGBM, which is due to missing dependencies from OpenMP. To solve the problem, install openmp first with ``brew install libomp`` and then run ``pip install .`` to build it successfully. \n\n## Data Preparation\n❗ Due to more restrict data security policy. The official dataset is disabled temporarily. You can try [this data source](https://github.com/chenditc/investment_data/releases) contributed by the community.\nHere is an example to download the latest data.\n```bash\nwget https://github.com/chenditc/investment_data/releases/latest/download/qlib_bin.tar.gz\nmkdir -p ~/.qlib/qlib_data/cn_data\ntar -zxvf qlib_bin.tar.gz -C ~/.qlib/qlib_data/cn_data --strip-components=1\nrm -f qlib_bin.tar.gz\n```\n\nThe official dataset below will resume in short future.\n\n\n----\n\nLoad and prepare data by running the following code:\n\n### Get with module\n  ```bash\n  # get 1d data\n  python -m qlib.cli.data qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn\n\n  # get 1min data\n  python -m qlib.cli.data qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --region cn --interval 1min\n\n  ```\n\n### Get from source\n\n  ```bash\n  # get 1d data\n  python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn\n\n  # get 1min data\n  python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --region cn --interval 1min\n\n  ```\n\nThis dataset is created by public data collected by [crawler scripts](scripts/data_collector/), which have been released in\nthe same repository.\nUsers could create the same dataset with it. [Description of dataset](https://github.com/microsoft/qlib/tree/main/scripts/data_collector#description-of-dataset)\n\n*Please pay **ATTENTION** that the data is collected from [Yahoo Finance](https://finance.yahoo.com/lookup), and the data might not be perfect.\nWe recommend users to prepare their own data if they have a high-quality dataset. For more information, users can refer to the [related document](https://qlib.readthedocs.io/en/latest/component/data.html#converting-csv-format-into-qlib-format)*.\n\n### Automatic update of daily frequency data (from yahoo finance)\n  > This step is *Optional* if users only want to try their models and strategies on history data.\n  > \n  > It is recommended that users update the data manually once (--trading_date 2021-05-25) and then set it to update automatically.\n  >\n  > **NOTE**: Users can't incrementally  update data based on the offline data provided by Qlib(some fields are removed to reduce the data size). Users should use [yahoo collector](https://github.com/microsoft/qlib/tree/main/scripts/data_collector/yahoo#automatic-update-of-daily-frequency-datafrom-yahoo-finance) to download Yahoo data from scratch and then incrementally update it.\n  > \n  > For more information, please refer to: [yahoo collector](https://github.com/microsoft/qlib/tree/main/scripts/data_collector/yahoo#automatic-update-of-daily-frequency-datafrom-yahoo-finance)\n\n  * Automatic update of data to the \"qlib\" directory each trading day(Linux)\n      * use *crontab*: `crontab -e`\n      * set up timed tasks:\n\n        ```\n        * * * * 1-5 python <script path> update_data_to_bin --qlib_data_1d_dir <user data dir>\n        ```\n        * **script path**: *scripts/data_collector/yahoo/collector.py*\n\n  * Manual update of data\n      ```\n      python scripts/data_collector/yahoo/collector.py update_data_to_bin --qlib_data_1d_dir <user data dir> --trading_date <start date> --end_date <end date>\n      ```\n      * *trading_date*: start of trading day\n      * *end_date*: end of trading day(not included)\n\n### Checking the health of the data\n  * We provide a script to check the health of the data, you can run the following commands to check whether the data is healthy or not.\n    ```\n    python scripts/check_data_health.py check_data --qlib_dir ~/.qlib/qlib_data/cn_data\n    ```\n  * Of course, you can also add some parameters to adjust the test results, such as this.\n    ```\n    python scripts/check_data_health.py check_data --qlib_dir ~/.qlib/qlib_data/cn_data --missing_data_num 30055 --large_step_threshold_volume 94485 --large_step_threshold_price 20\n    ```\n  * If you want more information about `check_data_health`, please refer to the [documentation](https://qlib.readthedocs.io/en/latest/component/data.html#checking-the-health-of-the-data).\n\n<!-- \n- Run the initialization code and get stock data:\n\n  ```python\n  import qlib\n  from qlib.data import D\n  from qlib.constant import REG_CN\n\n  # Initialization\n  mount_path = \"~/.qlib/qlib_data/cn_data\"  # target_dir\n  qlib.init(mount_path=mount_path, region=REG_CN)\n\n  # Get stock data by Qlib\n  # Load trading calendar with the given time range and frequency\n  print(D.calendar(start_time='2010-01-01', end_time='2017-12-31', freq='day')[:2])\n\n  # Parse a given market name into a stockpool config\n  instruments = D.instruments('csi500')\n  print(D.list_instruments(instruments=instruments, start_time='2010-01-01', end_time='2017-12-31', as_list=True)[:6])\n\n  # Load features of certain instruments in given time range\n  instruments = ['SH600000']\n  fields = ['$close', '$volume', 'Ref($close, 1)', 'Mean($close, 3)', '$high-$low']\n  print(D.features(instruments, fields, start_time='2010-01-01', end_time='2017-12-31', freq='day').head())\n  ```\n -->\n\n## Docker images\n1. Pulling a docker image from a docker hub repository\n    ```bash\n    docker pull pyqlib/qlib_image_stable:stable\n    ```\n2. Start a new Docker container\n    ```bash\n    docker run -it --name <container name> -v <Mounted local directory>:/app pyqlib/qlib_image_stable:stable\n    ```\n3. At this point you are in the docker environment and can run the qlib scripts. An example:\n    ```bash\n    >>> python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn\n    >>> python qlib/cli/run.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml\n    ```\n4. Exit the container\n    ```bash\n    >>> exit\n    ```\n5. Restart the container\n    ```bash\n    docker start -i -a <container name>\n    ```\n6. Stop the container\n    ```bash\n    docker stop <container name>\n    ```\n7. Delete the container\n    ```bash\n    docker rm <container name>\n    ```\n8. If you want to know more information, please refer to the [documentation](https://qlib.readthedocs.io/en/latest/developer/how_to_build_image.html).\n\n## Auto Quant Research Workflow\nQlib provides a tool named `qrun` to run the whole workflow automatically (including building dataset, training models, backtest and evaluation). You can start an auto quant research workflow and have a graphical reports analysis according to the following steps: \n\n1. Quant Research Workflow: Run  `qrun` with lightgbm workflow config ([workflow_config_lightgbm_Alpha158.yaml](examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml) as following.\n    ```bash\n      cd examples  # Avoid running program under the directory contains `qlib`\n      qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml\n    ```\n    If users want to use `qrun` under debug mode, please use the following command:\n    ```bash\n    python -m pdb qlib/cli/run.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml\n    ```\n    The result of `qrun` is as follows, please refer to [docs](https://qlib.readthedocs.io/en/latest/component/strategy.html#result) for more explanations about the result. \n\n    ```bash\n\n    'The following are analysis results of the excess return without cost.'\n                           risk\n    mean               0.000708\n    std                0.005626\n    annualized_return  0.178316\n    information_ratio  1.996555\n    max_drawdown      -0.081806\n    'The following are analysis results of the excess return with cost.'\n                           risk\n    mean               0.000512\n    std                0.005626\n    annualized_return  0.128982\n    information_ratio  1.444287\n    max_drawdown      -0.091078\n    ```\n    Here are detailed documents for `qrun` and [workflow](https://qlib.readthedocs.io/en/latest/component/workflow.html).\n\n2. Graphical Reports Analysis: First, run `python -m pip install .[analysis]` to install the required dependencies. Then run `examples/workflow_by_code.ipynb` with `jupyter notebook` to get graphical reports. \n    - Forecasting signal (model prediction) analysis\n      - Cumulative Return of groups\n      ![Cumulative Return](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/analysis_model_cumulative_return.png)\n      - Return distribution\n      ![long_short](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/analysis_model_long_short.png)\n      - Information Coefficient (IC)\n      ![Information Coefficient](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/analysis_model_IC.png)\n      ![Monthly IC](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/analysis_model_monthly_IC.png)\n      ![IC](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/analysis_model_NDQ.png)\n      - Auto Correlation of forecasting signal (model prediction)\n      ![Auto Correlation](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/analysis_model_auto_correlation.png)\n\n    - Portfolio analysis\n      - Backtest return\n      ![Report](https://github.com/microsoft/qlib/blob/main/docs/_static/img/analysis/report.png)\n      <!-- \n      - Score IC\n      ![Score IC](docs/_static/img/score_ic.png)\n      - Cumulative Return\n      ![Cumulative Return](docs/_static/img/cumulative_return.png)\n      - Risk Analysis\n      ![Risk Analysis](docs/_static/img/risk_analysis.png)\n      - Rank Label\n      ![Rank Label](docs/_static/img/rank_label.png)\n      -->\n   - [Explanation](https://qlib.readthedocs.io/en/latest/component/report.html) of above results\n\n## Building Customized Quant Research Workflow by Code\nThe automatic workflow may not suit the research workflow of all Quant researchers. To support a flexible Quant research workflow, Qlib also provides a modularized interface to allow researchers to build their own workflow by code. [Here](examples/workflow_by_code.ipynb) is a demo for customized Quant research workflow by code.\n\n# Main Challenges & Solutions in Quant Research\nQuant investment is a very unique scenario with lots of key challenges to be solved.\nCurrently, Qlib provides some solutions for several of them.\n\n## Forecasting: Finding Valuable Signals/Patterns\nAccurate forecasting of the stock price trend is a very important part to construct profitable portfolios.\nHowever, huge amount of data with various formats in the financial market which make it challenging to build forecasting models.\n\nAn increasing number of SOTA Quant research works/papers, which focus on building forecasting models to mine valuable signals/patterns in complex financial data, are released in `Qlib`\n\n\n### [Quant Model (Paper) Zoo](examples/benchmarks)\n\nHere is a list of models built on `Qlib`.\n- [GBDT based on XGBoost (Tianqi Chen, et al. KDD 2016)](examples/benchmarks/XGBoost/)\n- [GBDT based on LightGBM (Guolin Ke, et al. NIPS 2017)](examples/benchmarks/LightGBM/)\n- [GBDT based on Catboost (Liudmila Prokhorenkova, et al. NIPS 2018)](examples/benchmarks/CatBoost/)\n- [MLP based on pytorch](examples/benchmarks/MLP/)\n- [LSTM based on pytorch (Sepp Hochreiter, et al. Neural computation 1997)](examples/benchmarks/LSTM/)\n- [GRU based on pytorch (Kyunghyun Cho, et al. 2014)](examples/benchmarks/GRU/)\n- [ALSTM based on pytorch (Yao Qin, et al. IJCAI 2017)](examples/benchmarks/ALSTM)\n- [GATs based on pytorch (Petar Velickovic, et al. 2017)](examples/benchmarks/GATs/)\n- [SFM based on pytorch (Liheng Zhang, et al. KDD 2017)](examples/benchmarks/SFM/)\n- [TFT based on tensorflow (Bryan Lim, et al. International Journal of Forecasting 2019)](examples/benchmarks/TFT/)\n- [TabNet based on pytorch (Sercan O. Arik, et al. AAAI 2019)](examples/benchmarks/TabNet/)\n- [DoubleEnsemble based on LightGBM (Chuheng Zhang, et al. ICDM 2020)](examples/benchmarks/DoubleEnsemble/)\n- [TCTS based on pytorch (Xueqing Wu, et al. ICML 2021)](examples/benchmarks/TCTS/)\n- [Transformer based on pytorch (Ashish Vaswani, et al. NeurIPS 2017)](examples/benchmarks/Transformer/)\n- [Localformer based on pytorch (Juyong Jiang, et al.)](examples/benchmarks/Localformer/)\n- [TRA based on pytorch (Hengxu, Dong, et al. KDD 2021)](examples/benchmarks/TRA/)\n- [TCN based on pytorch (Shaojie Bai, et al. 2018)](examples/benchmarks/TCN/)\n- [ADARNN based on pytorch (YunTao Du, et al. 2021)](examples/benchmarks/ADARNN/)\n- [ADD based on pytorch (Hongshun Tang, et al.2020)](examples/benchmarks/ADD/)\n- [IGMTF based on pytorch (Wentao Xu, et al.2021)](examples/benchmarks/IGMTF/)\n- [HIST based on pytorch (Wentao Xu, et al.2021)](examples/benchmarks/HIST/)\n- [KRNN based on pytorch](examples/benchmarks/KRNN/)\n- [Sandwich based on pytorch](examples/benchmarks/Sandwich/)\n\nYour PR of new Quant models is highly welcomed.\n\nThe performance of each model on the `Alpha158` and `Alpha360` datasets can be found [here](examples/benchmarks/README.md).\n\n### Run a single model\nAll the models listed above are runnable with ``Qlib``. Users can find the config files we provide and some details about the model through the [benchmarks](examples/benchmarks) folder. More information can be retrieved at the model files listed above.\n\n`Qlib` provides three different ways to run a single model, users can pick the one that fits their cases best:\n- Users can use the tool `qrun` mentioned above to run a model's workflow based from a config file.\n- Users can create a `workflow_by_code` python script based on the [one](examples/workflow_by_code.py) listed in the `examples` folder.\n\n- Users can use the script [`run_all_model.py`](examples/run_all_model.py) listed in the `examples` folder to run a model. Here is an example of the specific shell command to be used: `python run_all_model.py run --models=lightgbm`, where the `--models` arguments can take any number of models listed above(the available models can be found  in [benchmarks](examples/benchmarks/)). For more use cases, please refer to the file's [docstrings](examples/run_all_model.py).\n    - **NOTE**: Each baseline has different environment dependencies, please make sure that your python version aligns with the requirements(e.g. TFT only supports Python 3.6~3.7 due to the limitation of `tensorflow==1.15.0`)\n\n### Run multiple models\n`Qlib` also provides a script [`run_all_model.py`](examples/run_all_model.py) which can run multiple models for several iterations. (**Note**: the script only support *Linux* for now. Other OS will be supported in the future. Besides, it doesn't support parallel running the same model for multiple times as well, and this will be fixed in the future development too.)\n\nThe script will create a unique virtual environment for each model, and delete the environments after training. Thus, only experiment results such as `IC` and `backtest` results will be generated and stored.\n\nHere is an example of running all the models for 10 iterations:\n```python\npython run_all_model.py run 10\n```\n\nIt also provides the API to run specific models at once. For more use cases, please refer to the file's [docstrings](examples/run_all_model.py). \n\n### Break change\nIn `pandas`, `group_key` is one of the parameters of the `groupby` method. From version 1.5 to 2.0 of `pandas`, the default value of `group_key` has been changed from `no default` to `True`, which will cause qlib to report an error during operation. So we set `group_key=False`, but it doesn't guarantee that some programmes will run correctly, including:\n* qlib\\examples\\rl_order_execution\\scripts\\gen_training_orders.py\n* qlib\\examples\\benchmarks\\TRA\\src\\dataset.MTSDatasetH.py\n* qlib\\examples\\benchmarks\\TFT\\tft.py\n\n\n\n## [Adapting to Market Dynamics](examples/benchmarks_dynamic)\n\nDue to the non-stationary nature of the environment of the financial market, the data distribution may change in different periods, which makes the performance of models build on training data decays in the future test data.\nSo adapting the forecasting models/strategies to market dynamics is very important to the model/strategies' performance.\n\nHere is a list of solutions built on `Qlib`.\n- [Rolling Retraining](examples/benchmarks_dynamic/baseline/)\n- [DDG-DA on pytorch (Wendi, et al. AAAI 2022)](examples/benchmarks_dynamic/DDG-DA/)\n\n##  Reinforcement Learning: modeling continuous decisions\nQlib now supports reinforcement learning, a feature designed to model continuous investment decisions. This functionality assists investors in optimizing their trading strategies by learning from interactions with the environment to maximize some notion of cumulative reward.\n\nHere is a list of solutions built on `Qlib` categorized by scenarios.\n\n### [RL for order execution](examples/rl_order_execution)\n[Here](https://qlib.readthedocs.io/en/latest/component/rl/overall.html#order-execution) is the introduction of this scenario.  All the methods below are compared [here](examples/rl_order_execution).\n- [TWAP](examples/rl_order_execution/exp_configs/backtest_twap.yml)\n- [PPO: \"An End-to-End Optimal Trade Execution Framework based on Proximal Policy Optimization\", IJCAL 2020](examples/rl_order_execution/exp_configs/backtest_ppo.yml)\n- [OPDS: \"Universal Trading for Order Execution with Oracle Policy Distillation\", AAAI 2021](examples/rl_order_execution/exp_configs/backtest_opds.yml)\n\n# Quant Dataset Zoo\nDataset plays a very important role in Quant. Here is a list of the datasets built on `Qlib`:\n\n| Dataset                                    | US Market | China Market |\n| --                                         | --        | --           |\n| [Alpha360](./qlib/contrib/data/handler.py) |  √        |  √           |\n| [Alpha158](./qlib/contrib/data/handler.py) |  √        |  √           |\n\n[Here](https://qlib.readthedocs.io/en/latest/advanced/alpha.html) is a tutorial to build dataset with `Qlib`.\nYour PR to build new Quant dataset is highly welcomed.\n\n\n# Learning Framework\nQlib is high customizable and a lot of its components are learnable.\nThe learnable components are instances of `Forecast Model` and `Trading Agent`. They are learned based on the `Learning Framework` layer and then applied to multiple scenarios in `Workflow` layer.\nThe learning framework leverages the `Workflow` layer as well(e.g. sharing `Information Extractor`, creating environments based on `Execution Env`).\n\nBased on learning paradigms, they can be categorized into reinforcement learning and supervised learning.\n- For supervised learning, the detailed docs can be found [here](https://qlib.readthedocs.io/en/latest/component/model.html).\n- For reinforcement learning, the detailed docs can be found [here](https://qlib.readthedocs.io/en/latest/component/rl.html). Qlib's RL learning framework leverages `Execution Env` in `Workflow` layer to create environments.  It's worth noting that `NestedExecutor` is supported as well. This empowers users to optimize different level of strategies/models/agents together (e.g. optimizing an order execution strategy for a specific portfolio management strategy).\n\n\n# More About Qlib\nIf you want to have a quick glance at the most frequently used components of qlib, you can try notebooks [here](examples/tutorial/).\n\nThe detailed documents are organized in [docs](docs/).\n[Sphinx](http://www.sphinx-doc.org) and the readthedocs theme is required to build the documentation in html formats. \n```bash\ncd docs/\nconda install sphinx sphinx_rtd_theme -y\n# Otherwise, you can install them with pip\n# pip install sphinx sphinx_rtd_theme\nmake html\n```\nYou can also view the [latest document](http://qlib.readthedocs.io/) online directly.\n\nQlib is in active and continuing development. Our plan is in the roadmap, which is managed as a [github project](https://github.com/microsoft/qlib/projects/1).\n\n\n\n# Offline Mode and Online Mode\nThe data server of Qlib can either deployed as `Offline` mode or `Online` mode. The default mode is offline mode.\n\nUnder `Offline` mode, the data will be deployed locally. \n\nUnder `Online` mode, the data will be deployed as a shared data service. The data and their cache will be shared by all the clients. The data retrieval performance is expected to be improved due to a higher rate of cache hits. It will consume less disk space, too. The documents of the online mode can be found in [Qlib-Server](https://qlib-server.readthedocs.io/). The online mode can be deployed automatically with [Azure CLI based scripts](https://qlib-server.readthedocs.io/en/latest/build.html#one-click-deployment-in-azure). The source code of online data server can be found in [Qlib-Server repository](https://github.com/microsoft/qlib-server).\n\n## Performance of Qlib Data Server\nThe performance of data processing is important to data-driven methods like AI technologies. As an AI-oriented platform, Qlib provides a solution for data storage and data processing. To demonstrate the performance of Qlib data server, we\ncompare it with several other data storage solutions. \n\nWe evaluate the performance of several storage solutions by finishing the same task,\nwhich creates a dataset (14 features/factors) from the basic OHLCV daily data of a stock market (800 stocks each day from 2007 to 2020). The task involves data queries and processing.\n\n|                         | HDF5      | MySQL     | MongoDB   | InfluxDB  | Qlib -E -D  | Qlib +E -D   | Qlib +E +D  |\n| --                      | ------    | ------    | --------  | --------- | ----------- | ------------ | ----------- |\n| Total (1CPU) (seconds)  | 184.4±3.7 | 365.3±7.5 | 253.6±6.7 | 368.2±3.6 | 147.0±8.8   | 47.6±1.0     | **7.4±0.3** |\n| Total (64CPU) (seconds) |           |           |           |           | 8.8±0.6     | **4.2±0.2**  |             |\n* `+(-)E` indicates with (out) `ExpressionCache`\n* `+(-)D` indicates with (out) `DatasetCache`\n\nMost general-purpose databases take too much time to load data. After looking into the underlying implementation, we find that data go through too many layers of interfaces and unnecessary format transformations in general-purpose database solutions.\nSuch overheads greatly slow down the data loading process.\nQlib data are stored in a compact format, which is efficient to be combined into arrays for scientific computation.\n\n# Related Reports\n- [Guide To Qlib: Microsoft’s AI Investment Platform](https://analyticsindiamag.com/qlib/)\n- [微软也搞AI量化平台？还是开源的！](https://mp.weixin.qq.com/s/47bP5YwxfTp2uTHjUBzJQQ)\n- [微矿Qlib：业内首个AI量化投资开源平台](https://mp.weixin.qq.com/s/vsJv7lsgjEi-ALYUz4CvtQ)\n\n# Contact Us\n- If you have any issues, please create issue [here](https://github.com/microsoft/qlib/issues/new/choose) or send messages in [gitter](https://gitter.im/Microsoft/qlib).\n- If you want to make contributions to `Qlib`, please [create pull requests](https://github.com/microsoft/qlib/compare). \n- For other reasons, you are welcome to contact us by email([qlib@microsoft.com](mailto:qlib@microsoft.com)).\n  - We are recruiting new members(both FTEs and interns), your resumes are welcome!\n\nJoin IM discussion groups:\n|[Gitter](https://gitter.im/Microsoft/qlib)|\n|----|\n|![image](https://github.com/microsoft/qlib/blob/main/docs/_static/img/qrcode/gitter_qr.png)|\n\n# Contributing\nWe appreciate all contributions and thank all the contributors!\n<a href=\"https://github.com/microsoft/qlib/graphs/contributors\"><img src=\"https://contrib.rocks/image?repo=microsoft/qlib\" /></a>\n\nBefore we released Qlib as an open-source project on Github in Sep 2020, Qlib is an internal project in our group. Unfortunately, the internal commit history is not kept. A lot of members in our group have also contributed a lot to Qlib, which includes Ruihua Wang, Yinda Zhang, Haisu Yu, Shuyu Wang, Bochen Pang, and [Dong Zhou](https://github.com/evanzd/evanzd). Especially thanks to [Dong Zhou](https://github.com/evanzd/evanzd) due to his initial version of Qlib.\n\n## Guidance\n\nThis project welcomes contributions and suggestions.  \n**Here are some \n[code standards and development guidance](docs/developer/code_standard_and_dev_guide.rst) for submiting a pull request.**\n\nMaking contributions is not a hard thing. Solving an issue(maybe just answering a question raised in [issues list](https://github.com/microsoft/qlib/issues) or [gitter](https://gitter.im/Microsoft/qlib)), fixing/issuing a bug, improving the documents and even fixing a typo are important contributions to Qlib.\n\nFor example, if you want to contribute to Qlib's document/code, you can follow the steps in the figure below.\n<p align=\"center\">\n  <img src=\"https://github.com/demon143/qlib/blob/main/docs/_static/img/change%20doc.gif\" />\n</p>\n\nIf you don't know how to start to contribute, you can refer to the following examples.\n| Type | Examples |\n| -- | -- |\n| Solving issues | [Answer a question](https://github.com/microsoft/qlib/issues/749);  [issuing](https://github.com/microsoft/qlib/issues/765) or [fixing](https://github.com/microsoft/qlib/pull/792) a bug |\n| Docs | [Improve docs quality](https://github.com/microsoft/qlib/pull/797/files) ;  [Fix a typo](https://github.com/microsoft/qlib/pull/774) | \n| Feature |  Implement a [requested feature](https://github.com/microsoft/qlib/projects) like [this](https://github.com/microsoft/qlib/pull/754); [Refactor interfaces](https://github.com/microsoft/qlib/pull/539/files) |\n| Dataset | [Add a dataset](https://github.com/microsoft/qlib/pull/733) | \n| Models |  [Implement a new model](https://github.com/microsoft/qlib/pull/689), [some instructions to contribute models](https://github.com/microsoft/qlib/tree/main/examples/benchmarks#contributing) |\n\n[Good first issues](https://github.com/microsoft/qlib/labels/good%20first%20issue) are labelled to indicate that they are easy to start your contributions.\n\nYou can find some impefect implementation in Qlib by  `rg 'TODO|FIXME' qlib`\n \nIf you would like to become one of Qlib's maintainers to contribute more (e.g. help merge PR, triage issues), please contact us by email([qlib@microsoft.com](mailto:qlib@microsoft.com)).  We are glad to help to upgrade your permission.\n\n## License\nMost contributions require you to agree to a\nContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us\nthe right to use your contribution. For details, visit https://cla.opensource.microsoft.com.\n\nWhen you submit a pull request, a CLA bot will automatically determine whether you need to provide\na CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions\nprovided by the bot. You will only need to do this once across all repos using our CLA.\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\nFor more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n"
    },
    {
      "repo": "vnpy/vnpy",
      "content": "# VeighNa - By Traders, For Traders, AI-Powered.\n\n<p align=\"center\">\n  <img src =\"https://vnpy.oss-cn-shanghai.aliyuncs.com/veighna-logo.png\"/>\n</p>\n\n💬 Want to read this in **english** ? Go [**here**](README_ENG.md)\n\n<p align=\"center\">\n    <img src =\"https://img.shields.io/badge/version-4.5.0-blueviolet.svg\"/>\n    <img src =\"https://img.shields.io/badge/platform-windows|linux|macos-yellow.svg\"/>\n    <img src =\"https://img.shields.io/badge/python-3.10|3.11|3.12|3.13-blue.svg\" />\n    <img src =\"https://img.shields.io/github/actions/workflow/status/vnpy/vnpy/pythonapp.yml?branch=master\"/>\n    <img src =\"https://img.shields.io/github/license/vnpy/vnpy.svg?color=orange\"/>\n</p>\n\nVeighNa是一套基于Python的开源量化交易系统开发框架，在开源社区持续不断的贡献下一步步成长为多功能量化交易平台，自发布以来已经积累了众多来自金融机构或相关领域的用户，包括私募基金、证券公司、期货公司等。\n\n在使用VeighNa进行二次开发（策略、模块等）的过程中有任何疑问，请查看[**VeighNa项目文档**](https://www.vnpy.com/docs/cn/index.html)，如果无法解决请前往[**官方社区论坛**](https://www.vnpy.com/forum/)的【提问求助】板块寻求帮助，也欢迎在【经验分享】板块分享你的使用心得！\n\n**想要更便捷地上手期货量化交易？** VeighNa Fusion现已在合作期货公司上线，带来一站式CTA量化交易与智能投研体验：\n\n* **开箱即用**：通过合作期货公司申请开通权限，无需自行完成繁琐的接入测试\n* **数据中心**：提供历史数据下载和管理能力，降低量化初学者的数据准备门槛\n* **智策投研**：根据策略描述辅助梳理逻辑、生成代码，并衔接历史回测与参数优化流程\n\n阅读[产品介绍文章](https://mp.weixin.qq.com/s/VknqBMnR3tUpWoKuTA8V4A)或查看[VeighNa Fusion文档](https://www.vnpy.com/docs/cn/fusion/index.html)。\n\n如需咨询开通，请扫描下方二维码添加【Fusion小助手】：\n\n<p align=\"center\">\n  <img src=\"https://vnpy.oss-cn-shanghai.aliyuncs.com/Fusion%E5%B0%8F%E5%8A%A9%E6%89%8B.png\" width=\"250\" alt=\"Fusion小助手\">\n</p>\n\n## AI-Powered\n\n\nVeighNa发布十周年之际正式推出4.0版本，重磅新增面向AI量化策略的[vnpy.alpha](./vnpy/alpha)模块，为专业量化交易员提供**一站式多因子机器学习（ML）策略开发、投研和实盘交易解决方案**：\n\n<p align=\"center\">\n  <img src =\"https://vnpy.oss-cn-shanghai.aliyuncs.com/alpha_demo.jpg\"/, width=500>\n</p>\n\n* :bar_chart: **[dataset](./vnpy/alpha/dataset)**：因子特征工程\n\n    * 专为ML算法训练优化设计，支持高效批量特征计算与处理\n    * 内置丰富的因子特征表达式计算引擎，实现快速一键生成训练数据\n    * 支持自定义表达式函数注册，并提供缺失值填充、无穷值替换、时序标准化、特征删除等常用数据处理函数\n    * [Alpha 158](./vnpy/alpha/dataset/datasets/alpha_158.py)：源于微软Qlib项目的股票市场特征集合，涵盖K线形态、价格趋势、时序波动等多维度量化因子\n\n* :bulb: **[model](./vnpy/alpha/model)**：预测模型训练\n\n    * 提供标准化的ML模型开发模板，大幅简化模型构建与训练流程\n    * 统一API接口设计，支持无缝切换不同算法进行性能对比测试\n    * 集成多种主流机器学习算法：\n        * [Lasso](./vnpy/alpha/model/models/lasso_model.py)：经典Lasso回归模型，通过L1正则化实现特征选择\n        * [LightGBM](./vnpy/alpha/model/models/lgb_model.py)：高效梯度提升决策树，针对大规模数据集优化的训练引擎\n        * [MLP](./vnpy/alpha/model/models/mlp_model.py)：多层感知机神经网络，适用于复杂非线性关系建模\n\n* :robot: **[strategy](./vnpy/alpha/strategy)**：策略投研开发\n\n    * 基于ML信号预测模型快速构建量化交易策略\n    * 支持截面多标的和时序单标的两种策略类型\n\n* :microscope: **[lab](./vnpy/alpha/lab.py)**：投研流程管理\n\n    * 集成数据管理、模型训练、信号生成和策略回测等完整工作流程\n    * 简洁API设计，内置可视化分析工具，直观评估策略表现和模型效果\n\n* :book: **[notebook](./examples/alpha_research)**：量化投研Demo\n\n    * [download_data_rq](./examples/alpha_research/download_data_rq.ipynb)：基于RQData下载A股指数成分股数据，包含指数成分变化跟踪及历史行情获取\n    * [download_data_xt](./examples/alpha_research/download_data_xt.ipynb)：基于迅投研数据服务，下载获取A股指数成分历史变化和股票K线数据\n    * [research_workflow_lasso](./examples/alpha_research/research_workflow_lasso.ipynb)：基于Lasso回归模型的量化投研工作流，展示线性模型特征选择与预测能力\n    * [research_workflow_lgb](./examples/alpha_research/research_workflow_lgb.ipynb)：基于LightGBM梯度提升树的量化投研工作流，利用高效集成学习方法进行预测\n    * [research_workflow_mlp](./examples/alpha_research/research_workflow_mlp.ipynb)：基于多层感知机神经网络的量化投研工作流，展示深度学习在量化交易中的应用\n\nvnpy.alpha模块的设计理念受到[Qlib](https://github.com/microsoft/qlib)项目的启发，在保持易用性的同时提供强大的AI量化能力，特此向Qlib开发团队致以诚挚感谢！\n\n\n## 功能特点\n\n带有 :arrow_up: 的模块代表已经完成4.0版本的升级适配测试，同时4.0核心框架采用了优先保证兼容性的升级方式，因此大多数模块也都可以直接使用（涉及到C++ API封装的接口必须升级后才能使用）。 \n\n1. :arrow_up: 多功能量化交易平台（trader），整合了多种交易接口，并针对具体策略算法和功能开发提供了简洁易用的API，用于快速构建交易员所需的量化交易应用。\n\n2. 覆盖国内外所拥有的下述交易品种的交易接口（gateway）：\n\n    * 国内市场\n\n        * :arrow_up: CTP（[ctp](https://www.github.com/vnpy/vnpy_ctp)）：国内期货、期权\n\n        * :arrow_up: CTP Mini（[mini](https://www.github.com/vnpy/vnpy_mini)）：国内期货、期权\n\n        * :arrow_up: CTP证券（[sopt](https://www.github.com/vnpy/vnpy_sopt)）：ETF期权\n\n        * :arrow_up: 飞马（[femas](https://www.github.com/vnpy/vnpy_femas)）：国内期货\n\n        * :arrow_up: 易盛（[esunny](https://www.github.com/vnpy/vnpy_esunny)）：国内期货、黄金TD\n\n        * :arrow_up: 顶点HTS（[hts](https://www.github.com/vnpy/vnpy_hts)）：ETF期权\n\n        * :arrow_up: 顶点飞创（[sec](https://www.github.com/vnpy/vnpy_sec)）：ETF期权\n\n        * :arrow_up: 中泰XTP（[xtp](https://www.github.com/vnpy/vnpy_xtp)）：国内证券（A股）、ETF期权\n\n        * :arrow_up: 华鑫奇点（[tora](https://www.github.com/vnpy/vnpy_tora)）：国内证券（A股）、ETF期权\n\n        * 飞鼠（[sgit](https://www.github.com/vnpy/vnpy_sgit)）：黄金TD、国内期货\n\n        * :arrow_up: 金仕达黄金（[ksgold](https://www.github.com/vnpy/vnpy_ksgold)）：黄金TD\n\n        * :arrow_up: 利星资管（[lstar](https://www.github.com/vnpy/vnpy_lstar)）：期货资管\n\n        * :arrow_up: 融航（[rohon](https://www.github.com/vnpy/vnpy_rohon)）：期货资管\n\n        * :arrow_up: 杰宜斯（[jees](https://www.github.com/vnpy/vnpy_jees)）：期货资管\n\n        * :arrow_up: TTS（[tts](https://www.github.com/vnpy/vnpy_tts)）：国内期货（仿真）\n\n    * 海外市场\n\n        * :arrow_up: Interactive Brokers（[ib](https://www.github.com/vnpy/vnpy_ib)）：海外证券、期货、期权、贵金属等\n\n        * :arrow_up: 易盛9.0外盘（[tap](https://www.github.com/vnpy/vnpy_tap)）：海外期货\n\n        * :arrow_up: 直达期货（[da](https://www.github.com/vnpy/vnpy_da)）：海外期货\n\n    * 特殊应用\n\n        * :arrow_up: RQData行情（[rqdata](https://www.github.com/vnpy/vnpy_rqdata)）：跨市场（股票、指数、ETF、期货）实时行情\n\n        * :arrow_up: 迅投研行情（[xt](https://www.github.com/vnpy/vnpy_xt)）：跨市场（股票、指数、可转债、ETF、期货、期权）实时行情\n\n        * :arrow_up: RPC服务（[rpc](https://www.github.com/vnpy/vnpy_rpcservice)）：跨进程通讯接口，用于分布式架构\n\n3. 覆盖下述各类量化策略的交易应用（app）：\n\n    * :arrow_up: [cta_strategy](https://www.github.com/vnpy/vnpy_ctastrategy)：CTA策略引擎模块，在保持易用性的同时，允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制（降低交易滑点、实现高频策略）\n\n    * :arrow_up: [cta_backtester](https://www.github.com/vnpy/vnpy_ctabacktester)：CTA策略回测模块，无需使用Jupyter Notebook，直接使用图形界面进行策略回测分析、参数优化等相关工作\n\n    * :arrow_up: [spread_trading](https://www.github.com/vnpy/vnpy_spreadtrading)：价差交易模块，支持自定义价差，实时计算价差行情和持仓，支持价差算法交易以及自动价差策略两种模式\n\n    * :arrow_up: [option_master](https://www.github.com/vnpy/vnpy_optionmaster)：期权交易模块，针对国内期权市场设计，支持多种期权定价模型、隐含波动率曲面计算、希腊值风险跟踪等功能\n\n    * :arrow_up: [portfolio_strategy](https://www.github.com/vnpy/vnpy_portfoliostrategy)：组合策略模块，面向同时交易多合约的量化策略（Alpha、期权套利等），提供历史数据回测和实盘自动交易功能\n\n    * :arrow_up: [algo_trading](https://www.github.com/vnpy/vnpy_algotrading)：算法交易模块，提供多种常用的智能交易算法：TWAP、Sniper、Iceberg、BestLimit等\n\n    * :arrow_up: [script_trader](https://www.github.com/vnpy/vnpy_scripttrader)：脚本策略模块，面向多标的类量化策略和计算任务设计，同时也可以在命令行中实现REPL指令形式的交易，不支持回测功能\n\n    * :arrow_up: [paper_account](https://www.github.com/vnpy/vnpy_paperaccount)：本地仿真模块，纯本地化实现的仿真模拟交易功能，基于交易接口获取的实时行情进行委托撮合，提供委托成交推送以及持仓记录\n\n    * :arrow_up: [chart_wizard](https://www.github.com/vnpy/vnpy_chartwizard)：K线图表模块，基于RQData数据服务（期货）或者交易接口获取历史数据，并结合Tick推送显示实时行情变化\n\n    * :arrow_up: [portfolio_manager](https://www.github.com/vnpy/vnpy_portfoliomanager)：交易组合管理模块，以独立的策略交易组合（子账户）为基础，提供委托成交记录管理、交易仓位自动跟踪以及每日盈亏实时统计功能\n\n    * :arrow_up: [rpc_service](https://www.github.com/vnpy/vnpy_rpcservice)：RPC服务模块，允许将某一进程启动为服务端，作为统一的行情和交易路由通道，允许多客户端同时连接，实现多进程分布式系统\n\n    * :arrow_up: [data_manager](https://www.github.com/vnpy/vnpy_datamanager)：历史数据管理模块，通过树形目录查看数据库中已有的数据概况，选择任意时间段数据查看字段细节，支持CSV文件的数据导入和导出\n\n    * :arrow_up: [data_recorder](https://www.github.com/vnpy/vnpy_datarecorder)：行情记录模块，基于图形界面进行配置，根据需求实时录制Tick或者K线行情到数据库中，用于策略回测或者实盘初始化\n\n    * :arrow_up: [excel_rtd](https://www.github.com/vnpy/vnpy_excelrtd)：Excel RTD（Real Time Data）实时数据服务，基于pyxll模块实现在Excel中获取各类数据（行情、合约、持仓等）的实时推送更新\n\n    * :arrow_up: [risk_manager](https://www.github.com/vnpy/vnpy_riskmanager)：风险管理模块，提供包括交易流控、下单数量、活动委托、撤单总数等规则的统计和限制，有效实现前端风控功能\n\n    * :arrow_up: [web_trader](https://www.github.com/vnpy/vnpy_webtrader)：Web服务模块，针对B-S架构需求设计，实现了提供主动函数调用（REST）和被动数据推送（Websocket）的Web服务器\n\n4. Python交易API接口封装（api），提供上述交易接口的底层对接实现。\n\n    * :arrow_up: REST Client（[rest](https://www.github.com/vnpy/vnpy_rest)）：基于协程异步IO的高性能REST API客户端，采用事件消息循环的编程模型，支持高并发实时交易请求发送\n\n    * :arrow_up: Websocket Client（[websocket](https://www.github.com/vnpy/vnpy_websocket)）：基于协程异步IO的高性能Websocket API客户端，支持和REST Client共用事件循环并发运行\n\n5. :arrow_up: 简洁易用的事件驱动引擎（event），作为事件驱动型交易程序的核心。\n\n6. 对接各类数据库的适配器接口（database）：\n\n    * SQL类\n\n        * :arrow_up: SQLite（[sqlite](https://www.github.com/vnpy/vnpy_sqlite)）：轻量级单文件数据库，无需安装和配置数据服务程序，VeighNa的默认选项，适合入门新手用户\n\n        * :arrow_up: MySQL（[mysql](https://www.github.com/vnpy/vnpy_mysql)）：主流的开源关系型数据库，文档资料极为丰富，且可替换其他NewSQL兼容实现（如TiDB）\n\n        * :arrow_up: PostgreSQL（[postgresql](https://www.github.com/vnpy/vnpy_postgresql)）：特性更为丰富的开源关系型数据库，支持通过扩展插件来新增功能，只推荐熟手使用\n\n    * NoSQL类\n\n        * :arrow_up: QuestDB（[questdb](https://www.github.com/vnpy/vnpy_questdb)）：开源高性能列式时序数据库，兼容PostgreSQL协议和SQL查询，擅长高吞吐写入与低延时分析场景\n\n        * DolphinDB（[dolphindb](https://www.github.com/vnpy/vnpy_dolphindb)）：一款高性能分布式时序数据库，适用于对速度要求极高的低延时或实时性任务\n\n        * :arrow_up: TDengine（[taos](https://www.github.com/vnpy/vnpy_taos)）：分布式、高性能、支持SQL的时序数据库，带有内建的缓存、流式计算、数据订阅等系统功能，能大幅减少研发和运维的复杂度\n\n        * :arrow_up: MongoDB（[mongodb](https://www.github.com/vnpy/vnpy_mongodb)）：基于分布式文件储存（bson格式）的文档式数据库，内置的热数据内存缓存提供更快读写速度\n\n7. 对接下述各类数据服务的适配器接口（datafeed）：\n\n    * :arrow_up: 迅投研（[xt](https://www.github.com/vnpy/vnpy_xt)）：股票、期货、期权、基金、债券\n\n    * :arrow_up: 米筐RQData（[rqdata](https://www.github.com/vnpy/vnpy_rqdata)）：股票、期货、期权、基金、债券、黄金TD\n\n    * :arrow_up: MultiCharts（[mcdata](https://www.github.com/vnpy/vnpy_mcdata)）：期货、期货期权\n\n    * :arrow_up: TuShare（[tushare](https://www.github.com/vnpy/vnpy_tushare)）：股票、期货、期权、基金\n\n    * :arrow_up: 万得Wind（[wind](https://www.github.com/vnpy/vnpy_wind)）：股票、期货、基金、债券\n\n    * :arrow_up: 同花顺iFinD（[ifind](https://www.github.com/vnpy/vnpy_ifind)）：股票、期货、基金、债券\n\n    * :arrow_up: 天勤TQSDK（[tqsdk](https://www.github.com/vnpy/vnpy_tqsdk)）：期货\n\n    * :arrow_up: 掘金（[gm](https://www.github.com/vnpy/vnpy_gm)）：股票\n\n    * :arrow_up: polygon（[polygon](https://www.github.com/vnpy/vnpy_polygon)）：股票、期货、期权\n\n8. :arrow_up: 跨进程通讯标准组件（rpc），用于实现分布式部署的复杂交易系统。\n\n9. :arrow_up: Python高性能K线图表（chart），支持大数据量图表显示以及实时数据更新功能。\n\n10. [社区论坛](http://www.vnpy.com/forum)和[知乎专栏](http://zhuanlan.zhihu.com/vn-py)，内容包括VeighNa项目的开发教程和Python在量化交易领域的应用研究等内容。\n\n11. 官方交流群262656087（QQ），管理严格（定期清除长期潜水的成员），入群费将捐赠给VeighNa社区基金。\n\n注：以上关于功能特点的说明为根据说明文档发布时情况罗列，后续可能存在更新或调整。若功能描述同实际存在出入，欢迎通过Issue联系进行调整。\n\n## 环境准备\n\n* 推荐使用VeighNa团队为量化交易专门打造的Python发行版[VeighNa Studio-4.4.0](https://download.vnpy.com/veighna_studio-4.4.0.exe)，集成内置了VeighNa框架以及VeighNa Station量化管理平台，无需手动安装\n* 支持的系统版本：Windows 11以上 / Windows Server 2022以上 / Ubuntu 22.04 LTS以上\n* 支持的Python版本：Python 3.10以上（64位），**推荐使用Python 3.13**\n\n## 安装步骤\n\n在[这里](https://github.com/vnpy/vnpy/releases)下载Release发布版本，解压后运行以下命令安装：\n\n**Windows**\n\n```\ninstall.bat\n```\n\n**Ubuntu**\n\n```\nbash install.sh\n```\n\n**Macos**\n\n```\nbash install_osx.sh\n```\n\n## 使用指南\n\n1. 在[SimNow](http://www.simnow.com.cn/)注册CTP仿真账号，并在[该页面](http://www.simnow.com.cn/product.action)获取经纪商代码以及交易行情服务器地址。\n\n2. 在[VeighNa社区论坛](https://www.vnpy.com/forum/)注册获得VeighNa Station账号密码（论坛账号密码即是）\n\n3. 启动VeighNa Station（安装VeighNa Studio后会在桌面自动创建快捷方式），输入上一步的账号密码登录\n\n4. 点击底部的**VeighNa Trader**按钮，开始你的交易！！！\n\n注意：\n\n* 在VeighNa Trader的运行过程中请勿关闭VeighNa Station（会自动退出）\n\n## 脚本运行\n\n除了基于VeighNa Station的图形化启动方式外，也可以在任意目录下创建run.py，写入以下示例代码：\n\n```Python\nfrom vnpy.event import EventEngine\nfrom vnpy.trader.engine import MainEngine\nfrom vnpy.trader.ui import MainWindow, create_qapp\n\nfrom vnpy_ctp import CtpGateway\nfrom vnpy_ctastrategy import CtaStrategyApp\nfrom vnpy_ctabacktester import CtaBacktesterApp\n\n\ndef main():\n    \"\"\"Start VeighNa Trader\"\"\"\n    qapp = create_qapp()\n\n    event_engine = EventEngine()\n    main_engine = MainEngine(event_engine)\n    \n    main_engine.add_gateway(CtpGateway)\n    main_engine.add_app(CtaStrategyApp)\n    main_engine.add_app(CtaBacktesterApp)\n\n    main_window = MainWindow(main_engine, event_engine)\n    main_window.showMaximized()\n\n    qapp.exec()\n\n\nif __name__ == \"__main__\":\n    main()\n```\n\n在该目录下打开CMD（按住Shift->点击鼠标右键->在此处打开命令窗口/PowerShell）后运行下列命令启动VeighNa Trader：\n\n    python run.py\n\n## 贡献代码\n\nVeighNa使用Github托管其源代码，如果希望贡献代码请使用github的PR（Pull Request）的流程:\n\n1. [创建 Issue](https://github.com/vnpy/vnpy/issues/new) - 对于较大的改动（如新功能，大型重构等）建议先开issue讨论一下，较小的improvement（如文档改进，bugfix等）直接发PR即可\n\n2. Fork [VeighNa](https://github.com/vnpy/vnpy) - 点击右上角**Fork**按钮\n\n3. Clone你自己的fork: ```git clone https://github.com/$userid/vnpy.git```\n\t* 如果你的fork已经过时，需要手动sync：[同步方法](https://help.github.com/articles/syncing-a-fork/)\n\n4. 从**dev**创建你自己的feature branch: ```git checkout -b $my_feature_branch dev```\n\n5. 在$my_feature_branch上修改并将修改push到你的fork上\n\n6. 创建从你的fork的$my_feature_branch分支到主项目的**dev**分支的[Pull Request] -  [在此](https://github.com/vnpy/vnpy/compare?expand=1)点击**compare across forks**，选择需要的fork和branch创建PR\n\n7. 等待review, 需要继续改进，或者被Merge!\n\n在提交代码的时候，请遵守以下规则，以提高代码质量：\n\n  * 使用[ruff](https://github.com/astral-sh/ruff)检查你的代码样式，确保没有error和warning。在项目根目录下运行```ruff check .```即可。\n  * 使用[mypy](https://github.com/python/mypy)进行静态类型检查，确保类型注解正确。在项目根目录下运行```mypy vnpy```即可。\n\n## 其他内容\n\n* [获取帮助](https://github.com/vnpy/vnpy/blob/dev/.github/SUPPORT.md)\n* [社区行为准则](https://github.com/vnpy/vnpy/blob/dev/.github/CODE_OF_CONDUCT.md)\n* [Issue模板](https://github.com/vnpy/vnpy/blob/dev/.github/ISSUE_TEMPLATE.md)\n* [PR模板](https://github.com/vnpy/vnpy/blob/dev/.github/PULL_REQUEST_TEMPLATE.md)\n\n**想要获取更多关于VeighNa开源社区的资讯？** 请扫描下方二维码添加小助手加入【VeighNa社区交流微信群】：\n\n<p align=\"center\">\n  <img src=\"https://vnpy.oss-cn-shanghai.aliyuncs.com/github_wx.png\" width=\"250\" alt=\"VeighNa社区交流微信群\">\n</p>\n\n## 版权说明\n\nMIT\n"
    },
    {
      "repo": "nautechsystems/nautilus_trader",
      "content": "# <img src=\"https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-trader-logo.png\" alt=\"NautilusTrader\" width=\"500\">\n\n[![rustc](https://img.shields.io/crates/msrv/nautilus-core?color=ea7233&logo=rust&label=rustc)](https://crates.io/crates/nautilus-core)\n[![crates.io](https://img.shields.io/crates/v/nautilus-core?logo=rust)](https://crates.io/crates/nautilus-core)\n[![codspeed](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/nautechsystems/nautilus_trader)\n![pythons](https://img.shields.io/pypi/pyversions/nautilus_trader)\n![pypi-version](https://img.shields.io/pypi/v/nautilus_trader)\n[![Downloads](https://api.pepy.tech/personalized-badge/nautilus-trader?period=total&units=international_system&left_color=grey&right_color=blue&left_text=downloads)](https://pepy.tech/projects/nautilus-trader)\n[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/NautilusTrader)\n\n| Branch    | Version                                                                                                                                                                                                                     | Status                                                                                                                                                                                            |\n| :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `master`  | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fmaster%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html)  | [![build](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml)  |\n| `nightly` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fnightly%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml/badge.svg?branch=nightly)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) |\n| `develop` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fdevelop%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) |\n\n| Platform           | Rust   | Python    |\n| :----------------- | :----- | :-------- |\n| `Linux (x86_64)`   | 1.99.1 | 3.13-3.15 |\n| `Linux (ARM64)`    | 1.99.1 | 3.13-3.15 |\n| `macOS (ARM64)`    | 1.99.1 | 3.13-3.15 |\n| `Windows (x86_64)` | 1.99.1 | 3.13-3.15 |\n\n- **Docs**: <https://nautilustrader.io/docs/>\n- **Website**: <https://nautilustrader.io>\n- **Support**: [support@nautilustrader.io](mailto:support@nautilustrader.io)\n\n## Introduction\n\nNautilusTrader is an open-source, production-grade, Rust-native engine for multi-asset,\nmulti-venue trading systems.\n\nThe system spans research, deterministic simulation, and live execution within a single\nevent-driven architecture, with Python serving as the control plane for strategy logic,\nconfiguration, and orchestration.\n\nThis separation provides the performance and safety of a compiled trading engine with\nthe flexibility of Python for system composition and strategy development.\nTrading systems can also be written entirely in Rust for mission-critical workloads.\n\nThe same strategy and execution-algorithm code can run across backtest and live systems, reducing\ndeployment divergence. Live execution still introduces venue, transport, timing, persistence,\nexternal-activity, and reconciliation behavior that a simulation may not reproduce. See\n[Backtest and live differences](docs/concepts/live.md#backtest-and-live-differences).\n\nNautilusTrader is asset-class-agnostic. Any venue with a REST API or WebSocket feed can be\nintegrated through modular adapters. Current integrations span crypto exchanges (CEX and\nDEX), traditional markets (FX, equities, futures, options), and betting exchanges.\n\n![nautilus-trader](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-trader.png \"nautilus-trader\")\n\n## Features\n\n- **Fast**: Rust core with the [mimalloc](https://crates.io/crates/mimalloc) allocator and asynchronous networking using [tokio](https://crates.io/crates/tokio).\n- **Reliable**: Type- and thread-safety backed by Rust, with optional Redis-backed state persistence.\n- **Portable**: Runs on Linux, macOS, and Windows. Deploy using Docker.\n- **Flexible**: Modular adapters integrate any REST API or WebSocket feed.\n- **Advanced**: Time in force `IOC`, `FOK`, `GTC`, `GTD`, `DAY`, `AT_THE_OPEN`, `AT_THE_CLOSE`, advanced order types and conditional triggers. Execution instructions `post-only`, `reduce-only`, and icebergs. Contingency orders including `OCO`, `OUO`, `OTO`.\n- **Customizable**: User-defined components, or assemble entire systems from scratch using the [cache](https://nautilustrader.io/docs/latest/concepts/cache) and [message bus](https://nautilustrader.io/docs/latest/concepts/message_bus).\n- **Backtesting**: Multiple venues, instruments, and strategies simultaneously using historical quote tick, trade tick, bar, order book, and custom data with nanosecond resolution.\n- **Live**: Identical strategy implementations between research and live deployment.\n- **Multi-venue**: Run market-making and cross-venue strategies across multiple venues simultaneously.\n- **AI Training**: Engine fast enough to train AI trading agents (RL/ES).\n\n![nautilus](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-art.png \"nautilus\")\n\n> *nautilus - from ancient Greek 'sailor' and naus 'ship'.*\n>\n> *The nautilus shell consists of modular chambers with a growth factor which approximates a logarithmic spiral.\n> The idea is that this can be translated to the aesthetics of design and architecture.*\n\n## Why NautilusTrader?\n\nTrading strategy research is often conducted in Python using vectorized approaches, while\nproduction trading systems are implemented separately using event-driven architectures in\ncompiled languages.\n\nNautilusTrader removes this separation.\n\nA Rust-native core provides a deterministic event-driven runtime for both research and live\nexecution, while Python serves as the control plane. The same architecture, execution\nsemantics, and time model operate across both environments, allowing strategies to move\nfrom research to production without reimplementation.\n\nPython bindings are provided via [PyO3](https://pyo3.rs) for the Rust-native v2 runtime.\nDuring the v2 transition, v1 receives only critical security backports on the `develop_v1` branch.\nSee the [v2 migration guide](https://github.com/nautechsystems/nautilus_trader/blob/develop/MIGRATION_V2.md) for migration steps and compatibility details.\nNo Rust toolchain is required to install prebuilt wheels.\n\nThis project makes the [Soundness Pledge](https://raphlinus.github.io/rust/2020/01/18/soundness-pledge.html):\n\n> \"The intent of this project is to be free of soundness bugs.\n> The developers will do their best to avoid them, and welcome help in analyzing and fixing them.\"\n\n> [!NOTE]\n>\n> **MSRV:** NautilusTrader relies heavily on improvements in the Rust language and compiler.\n> As a result, the Minimum Supported Rust Version (MSRV) is generally equal to the latest stable release of Rust.\n\n## Integrations\n\nNautilusTrader is modularly designed to work with *adapters*, enabling connectivity to trading venues\nand data providers by translating their raw APIs into a unified interface and normalized domain model.\n\nThe following integrations are available or planned; see [docs/integrations/](https://nautilustrader.io/docs/latest/integrations/) for details:\n\n| Name                                                       | ID                    | Type                    | Status                                               | Docs                                              |\n| :--------------------------------------------------------- | :-------------------- | :---------------------- | :--------------------------------------------------- | :------------------------------------------------ |\n| [AX Exchange](https://architect.exchange)                  | `AX`                  | Derivatives Exchange    | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/architect_ax.md)        |\n| [Betfair](https://betfair.com)                             | `BETFAIR`             | Sports Betting Exchange | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/betfair.md)             |\n| [Binance](https://binance.com)                             | `BINANCE`             | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/binance.md)             |\n| [Blockchain](docs/integrations/blockchain.md)              | `BLOCKCHAIN`          | DeFi Data Provider      | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/blockchain.md)          |\n| [Bybit](https://www.bybit.com)                             | `BYBIT`               | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/bybit.md)               |\n| [CoinAPI](https://www.coinapi.io/?ref=nautilus)            | `COINAPI`             | Data Provider           | ![status](https://img.shields.io/badge/beta-yellow)  | [Guide](docs/integrations/coinapi.md)             |\n| [Coinbase](https://coinbase.com)                           | `COINBASE`            | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/coinbase.md)            |\n| [Databento](https://databento.com)                         | `DATABENTO`           | Data Provider           | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/databento.md)           |\n| [Deribit](https://www.deribit.com)                         | `DERIBIT`             | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/deribit.md)             |\n| [Derive](https://www.derive.xyz)                           | `DERIVE`              | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/derive.md)              |\n| [dYdX](https://dydx.trade)                                 | `DYDX`                | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/dydx.md)                |\n| [FinFeed](https://www.finfeedapi.com/?ref=nautilus)        | `FINFEED`             | Data Provider           | ![status](https://img.shields.io/badge/beta-yellow)  | [Guide](docs/integrations/finfeed.md)             |\n| [Hyperliquid](https://hyperliquid.xyz)                     | `HYPERLIQUID`         | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/hyperliquid.md)         |\n| [Interactive Brokers](https://www.interactivebrokers.com)  | `INTERACTIVE_BROKERS` | Brokerage (multi-venue) | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/interactive_brokers.md) |\n| [Kalshi](https://kalshi.com)                               | `KALSHI`              | Prediction Market (CEX) | ![status](https://img.shields.io/badge/beta-yellow)  | [Guide](docs/integrations/kalshi.md)              |\n| [Kraken](https://kraken.com)                               | `KRAKEN`              | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/kraken.md)              |\n| [Lighter](https://lighter.xyz)                             | `LIGHTER`             | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/lighter.md)             |\n| [Lighter on Robinhood](https://robinhoodchain.lighter.xyz) | `LIGHTER_ROBINHOOD`   | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/lighter.md)             |\n| [OKX](https://okx.com)                                     | `OKX`                 | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/okx.md)                 |\n| [Polymarket](https://polymarket.com)                       | `POLYMARKET`          | Prediction Market (DEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/polymarket.md)          |\n| [Tardis](https://tardis.dev)                               | `TARDIS`              | Crypto Data Provider    | ![status](https://img.shields.io/badge/stable-green) | [Guide](docs/integrations/tardis.md)              |\n\n- **ID**: The default client ID for the integrations adapter clients.\n- **Type**: The type of integration (often the venue type).\n\nFor Lighter on Robinhood, `LIGHTER_ROBINHOOD` is the venue and explicit client ID to register. The\nshared Lighter factory keeps `LIGHTER` as its compatibility default.\n\n### Status\n\n- `planned`: Planned for future development.\n- `building`: Under construction and likely not in a usable state.\n- `beta`: Completed to a minimally working state and in a beta testing phase.\n- `stable`: Stabilized feature set and API, the integration has been tested by both developers and users to a reasonable level (some bugs may still remain).\n\nSee the [Integrations](https://nautilustrader.io/docs/latest/integrations/) documentation for further details.\n\n## Roadmap\n\nThe [Roadmap](https://github.com/nautechsystems/nautilus_trader/blob/develop/ROADMAP.md) outlines NautilusTrader's strategic direction.\nCurrent priorities include stabilizing the Rust-native core, improving documentation, and enhancing code ergonomics.\n\nThe open-source project focuses on single-node backtesting and live trading for individual and small-team quantitative traders.\nUI dashboards, distributed orchestration, and built-in AI/ML tooling are out of scope to maintain focus on the core engine and ecosystem sustainability.\nAdditional external integrations (such as databases, cloud services, and monitoring tools) are also out of scope\nunless explicitly listed in the [open-source scope](https://github.com/nautechsystems/nautilus_trader/blob/develop/ROADMAP.md#open-source-scope).\n\nNew integration proposals within the open-source scope should start with an RFC issue to discuss suitability before submitting a PR.\nSee [Community-contributed integrations](https://github.com/nautechsystems/nautilus_trader/blob/develop/ROADMAP.md#community-contributed-integrations) for guidelines.\n\n## Security\n\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/nautechsystems/nautilus_trader/badge)](https://scorecard.dev/viewer/?uri=github.com/nautechsystems/nautilus_trader)\n\nSecurity is a priority for the NautilusTrader project. We apply security controls across dependency selection,\ndevelopment, builds, and releases.\n\n- Rust dependencies come only from crates.io; lock files pin dependencies with cryptographic checksums.\n- New dependency and tooling versions observe a publication cooldown before adoption.\n- Third-party Python packages install from wheels only.\n- `cargo-vet` audits Rust dependency provenance.\n- `cargo-deny` enforces a license allow list compatible with `LGPL-3.0-only`.\n- TLS and most runtime cryptography use AWS-LC through Rust's [aws-lc-rs](https://github.com/aws/aws-lc-rs).\n- Ed25519 signing uses [ed25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek).\n- Gitleaks screens for secrets and Zizmor audits GitHub Actions at pre-commit.\n- CODEOWNERS require review of critical infrastructure, dependency manifests, and lock files.\n- Protected branches require signed commits and passing CI.\n- CodeQL runs on release PRs to `master` and pushes to `nightly`.\n- Audit-relevant PRs and daily audits run `cargo-audit`, `cargo-deny`, and `cargo-vet`.\n- OSV Scanner and `pip-audit` also run on audit-relevant PRs and daily.\n- `cargo-fuzz` targets cover selected adapter and signing surfaces.\n- GitHub Actions are pinned to commit SHAs; hardened CI runners restrict network egress to an allow list.\n- Python artifacts carry SLSA build provenance.\n- Container images are Sigstore-signed with attested SPDX SBOMs.\n- PyPI and crates.io use OIDC Trusted Publishing through a protected `release` environment.\n- The `release` environment never runs PR or fork code.\n- Release tags are immutable.\n\nOpenSSF Scorecard provides an automated repository-health signal alongside manual review, CI hardening, and security audits.\n\n### Reporting a vulnerability\n\nReport privately through [GitHub Security Advisories](https://github.com/nautechsystems/nautilus_trader/security/advisories/new)\nor email <security@nautechsystems.io> (PGP key available on request).\n\n- We acknowledge reports within 48 hours and patch critical vulnerabilities within 30 days.\n- We thank and credit reporters in the relevant advisory and release notes unless they prefer anonymity.\n\nSee the following for details:\n\n- [Security Policy](SECURITY.md): scope, coordinated disclosure, and step-by-step release verification.\n- [Security Architecture](docs/developer_guide/security.md): the release supply chain from build to publication.\n- [Responsible Disclosure](https://nautilustrader.io/security/responsible-disclosure/): full disclosure policy.\n- [Supply Chain Security](https://nautilustrader.io/security/supply-chain/): full supply chain policy.\n- [CI/CD security](.github/OVERVIEW.md#security): GitHub Actions security controls.\n\n## Versioning and releases\n\n> [!WARNING]\n>\n> **NautilusTrader is still under active development**. Some features may be incomplete, and while\n> the API is becoming more stable, breaking changes can occur between releases.\n> We strive to document these changes in the release notes on a **best-effort basis**.\n\nWe aim to follow a **bi-weekly release schedule**, though experimental or larger features may cause delays.\n\n### Branches\n\nWe aim to maintain a stable, passing build across all branches.\n\n- `master`: Reflects the source code for the latest released version; recommended for production use.\n- `nightly`: Daily snapshots of the `develop` branch for early testing; merged at **14:00 UTC** and as required.\n- `develop`: Active development branch for contributors and feature work.\n\n> [!NOTE]\n>\n> The v2 release-candidate line is the transition toward a **stable API for version 2.x**.\n> Once this milestone is reached, we plan to implement a formal deprecation process for any API changes.\n> This approach allows us to maintain a rapid development pace for now.\n\n## Precision mode\n\nNautilusTrader supports two precision modes for its core value types (`Price`, `Quantity`, `Money`),\nwhich differ in their internal bit-width and maximum decimal precision.\n\n- **High-precision**: 128-bit integers with up to 16 decimals of precision, and a larger value range.\n- **Standard-precision**: 64-bit integers with up to 9 decimals of precision, and a smaller value range.\n\n> [!NOTE]\n>\n> By default, the official Python wheels ship in high-precision (128-bit) mode on all supported platforms.\n>\n> For pure Rust crates, high-precision works on all platforms (including Windows) since Rust handles\n> `i128`/`u128` via software emulation. The default is standard-precision unless you explicitly enable\n> the `high-precision` feature flag.\n\nSee the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation) for further details.\n\n**Rust feature flag**: To enable high-precision mode in Rust, add the `high-precision` feature to your Cargo.toml:\n\n```toml\n[dependencies]\nnautilus-model = { version = \"*\", features = [\"high-precision\"] }\n```\n\n## Installation\n\nFor PyPI binary wheels, use Python 3.13-3.15. Install [nautilus_trader](https://pypi.org/project/nautilus_trader/)\nin a virtual environment to isolate dependencies.\n\n**There are two supported ways to install**:\n\n1. Pre-built binary wheel from PyPI *or* the Nautech Systems package index.\n2. Build from source.\n\n> [!TIP]\n>\n> We highly recommend installing using the [uv](https://docs.astral.sh/uv) package manager with a \"vanilla\" CPython.\n>\n> Conda and other Python distributions *may* work but aren't officially supported.\n\n### From PyPI\n\nThis repository and the [documentation](https://nautilustrader.io/docs/latest) cover v2. To install\nthe v2 release-candidate wheels from PyPI using Python's pip package manager:\n\n```bash\npip install -U nautilus_trader --pre\n```\n\nThe v2 release-candidate wheels use `2.0.0rcN` versions and are intended for community testing\nbefore the final `2.0.0` release. We do not recommend using release candidates in production\nenvironments, such as live trading controlling real capital.\n\nThe `--pre` flag is required until `2.0.0` is released. Without it, pip installs the latest stable\nv1 wheel, whose Python API differs from the v2 documentation:\n\n```bash\n# Installs the latest stable v1 wheel, which cannot run the v2 documentation\npip install -U nautilus_trader\n```\n\nInstall optional dependencies for interactive tearsheets and charts with the `visualization` extra:\n\n```bash\npip install -U \"nautilus_trader[visualization]\" --pre\n```\n\nSee the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation#extras) for details.\n\n### From the Nautech Systems package index\n\nThe Nautech Systems package index (`packages.nautechsystems.io`) complies with [PEP-503](https://peps.python.org/pep-0503/) and hosts both stable and development binary wheels for `nautilus_trader`.\nThis enables users to install either the latest stable release or pre-release versions for testing.\n\n#### Stable wheels\n\nStable wheels correspond to official releases of `nautilus_trader` on PyPI, and use standard\nversioning. As on PyPI, the latest stable release is still on the 1.x line, whose Python API differs\nfrom these v2 docs. This index also hosts development wheels, so `--pre` allows those versions too.\nTo install a specific 2.x release candidate, pin its version (`nautilus_trader==2.0.0rcN`).\n\nTo install the latest stable release:\n\n```bash\npip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple\n```\n\n> [!TIP]\n>\n> Use `--extra-index-url` instead of `--index-url` to search both PyPI and the Nautech Systems package index.\n> Pip selects the best matching version across both indexes without giving either index priority.\n\n#### Development wheels\n\nThe main package index publishes v2 development wheels from both the `nightly` and `develop`\nbranches, allowing users to test features and fixes ahead of stable releases.\n\nThis process also helps preserve compute resources and provides easy access to the exact binaries tested in CI pipelines,\nwhile adhering to [PEP-440](https://peps.python.org/pep-0440/) versioning standards:\n\n- `develop` wheels use the version suffix `.devYYYYMMDD+run`.\n- `nightly` wheels use `.devYYYYMMDD` when the base version is already a pre-release, and\n  `aYYYYMMDD` otherwise.\n\n| Platform           | Develop | Nightly |\n| :----------------- | :------ | :------ |\n| `Linux (x86_64)`   | ✓       | ✓       |\n| `Linux (ARM64)`    | -       | ✓       |\n| `macOS (ARM64)`    | -       | ✓       |\n| `Windows (x86_64)` | -       | ✓       |\n\n> [!WARNING]\n>\n> We do not recommend using development wheels in production environments, such as live trading controlling real capital.\n\n#### Installation commands\n\nBy default, pip will install the latest stable release. Adding the `--pre` flag ensures that pre-release versions, including development wheels, are considered.\n\nTo install the latest available pre-release (including development wheels):\n\n```bash\npip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple\n```\n\n#### Available versions\n\nYou can view all available versions of `nautilus_trader` on the [package index](https://packages.nautechsystems.io/simple/nautilus-trader/index.html).\n\nTo programmatically fetch and list available versions:\n\n```bash\ncurl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | sed -n 's/.*<a href=\"\\([^\"]*\\)\".*/\\1/p' | awk -F'#' '{print $1}' | sort\n```\n\n> [!IMPORTANT]\n>\n> On Linux, confirm your glibc version with `ldd --version` and ensure it reports **2.35** or newer before installing binary wheels.\n\n#### Branch updates\n\n- `develop` branch wheels (`.devYYYYMMDD+run`): Build and publish continuously with every merged commit.\n- `nightly` branch wheels (`.devYYYYMMDD` or `aYYYYMMDD`): Build and publish daily when we\n  automatically merge the `develop` branch at **14:00 UTC** (if there are changes).\n\n#### Retention policies\n\n- `develop` branch wheels: We retain only the most recent wheel build.\n- `nightly` branch wheels: We retain only the 30 most recent publication dates per platform.\n\n#### Verifying build provenance\n\nAll release artifacts published by the project carry cryptographic attestations\ngenerated by the CI/CD pipeline:\n\n- Python wheels and source distribution (PyPI, GitHub Releases, Nautech Systems package index): [SLSA](https://slsa.dev/) build provenance.\n- Docker images (`ghcr.io/nautechsystems/nautilus_trader`, `ghcr.io/nautechsystems/jupyterlab`): keyless [cosign](https://github.com/sigstore/cosign) signatures plus SPDX SBOM attestations.\n\nBoth are issued via [Sigstore](https://www.sigstore.dev/) and bound to a specific\ncommit SHA, so verification ensures the artifact was produced by the official\nNautilusTrader GitHub Actions workflow and has not been tampered with since.\n\nFor step-by-step verification commands, see [Verifying releases](SECURITY.md#verifying-releases) in `SECURITY.md`.\n\n> [!IMPORTANT]\n>\n> Verification requires the [GitHub CLI](https://cli.github.com/) (`gh`) for Python artifacts\n> and [cosign](https://github.com/sigstore/cosign) for Docker images.\n> Development wheels from `develop` and `nightly` branches are also attested.\n\n### From source\n\nIt's possible to install from source using pip if you first install the build dependencies as specified in the `pyproject.toml`.\n\n1. Install [rustup](https://rustup.rs/) (the Rust toolchain installer):\n   - Linux and macOS:\n\n       ```bash\n       curl https://sh.rustup.rs -sSf | sh\n       ```\n\n   - Windows:\n       - Download and install [`rustup-init.exe`](https://win.rustup.rs/x86_64)\n       - Install \"Desktop development with C++\" using [Build Tools for Visual Studio 2022](https://visualstudio.microsoft.com/visual-cpp-build-tools/)\n   - Verify (any system):\n       from a terminal session run: `rustc --version`\n\n2. Enable `cargo` in the current shell:\n   - Linux and macOS:\n\n       ```bash\n       source $HOME/.cargo/env\n       ```\n\n   - Windows:\n     - Start a new PowerShell\n\n3. Install [clang](https://clang.llvm.org/) (a C language frontend for LLVM):\n   - Linux (also installs [lld](https://lld.llvm.org/), used as the Rust linker for faster builds):\n\n       ```bash\n       sudo apt-get install clang lld\n       ```\n\n   - macOS:\n\n       ```bash\n       xcode-select --install\n       ```\n\n   - Windows:\n       1. Add Clang to your [Build Tools for Visual Studio 2022](https://visualstudio.microsoft.com/visual-cpp-build-tools/):\n          - Start | Visual Studio Installer | Modify | C++ Clang tools for Windows (latest) = checked | Modify\n       2. Enable `clang` in the current shell:\n\n          ```powershell\n          [System.Environment]::SetEnvironmentVariable('path', \"C:\\Program Files\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\Llvm\\x64\\bin\\;\" + $env:Path,\"User\")\n          ```\n\n   - Verify (any system):\n       from a terminal session run: `clang --version`\n\n4. Install uv (see the [uv installation guide](https://docs.astral.sh/uv/getting-started/installation) for more details):\n\n    - Linux and macOS:\n\n        ```bash\n        curl -LsSf https://astral.sh/uv/install.sh | sh\n        ```\n\n    - Windows (PowerShell):\n\n        ```powershell\n        irm https://astral.sh/uv/install.ps1 | iex\n        ```\n\n5. Clone the source with `git`, then sync its dependencies from the project root:\n\n    ```bash\n    git clone --branch develop --depth 1 https://github.com/nautechsystems/nautilus_trader\n    cd nautilus_trader\n    make sync\n    ```\n\n> [!NOTE]\n>\n> The `--depth 1` flag fetches just the latest commit for a faster, lightweight clone.\n\n6. Use the uv project environment.\n\n    The uv project environment lives at `python/.venv`, beside `python/pyproject.toml`. Run direct uv\n    project commands from `python/` or pass `--project python` from the repository root.\n\n    For PyO3 compilation on Linux and macOS, run these commands from the repository root after\n    `make sync` in Bash or Zsh. For Fish commands, see the developer guide's\n    [environment setup](docs/developer_guide/environment_setup.md#4-configure-environment-variables).\n    Set `PYO3_PYTHON` in each shell to this checkout's `python/.venv/bin/python`; replace any saved\n    export that still points to the root `.venv/bin/python`.\n\n    ```bash\n    # Set the Python executable path for PyO3\n    export PYO3_PYTHON=\"$PWD/python/.venv/bin/python\"\n\n    # Linux only: Set the library path for the uv-managed Python runtime\n    PYTHON_LIB_DIR=\"$(\"$PYO3_PYTHON\" -c 'import sysconfig; print(sysconfig.get_config_var(\"LIBDIR\"))')\"\n    export LD_LIBRARY_PATH=\"$PYTHON_LIB_DIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"\n\n    # Required for Rust tests when using uv-installed Python\n    export PYTHONHOME=\"$(\"$PYO3_PYTHON\" -c 'import sys; print(sys.base_prefix)')\"\n    ```\n\n> [!NOTE]\n>\n> The `LD_LIBRARY_PATH` export is Linux-specific and not needed on macOS.\n>\n> The `PYTHONHOME` variable is required when running `make cargo-test` with a `uv`-installed Python.\n> Without it, tests that depend on PyO3 may fail to locate the Python runtime.\n\n7. Build and install NautilusTrader in release mode:\n\n    ```bash\n    make build\n    ```\n\nSee the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation) for other options and further details.\n\n## Redis\n\nUsing [Redis](https://redis.io) with NautilusTrader is **optional** and only required if configured as the backend for a\n[cache](https://nautilustrader.io/docs/latest/concepts/cache) database or [message bus](https://nautilustrader.io/docs/latest/concepts/message_bus).\nSee the **Redis** section of the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation#redis) for further details.\n\n## Makefile\n\nA `Makefile` is provided to automate most installation and build tasks for development. Some of the targets include:\n\n- `make install`: Installs in `release` build mode with all dependency groups and extras.\n- `make install-debug`: Same as `make install` but with `debug` build mode.\n- `make sync`: Installs Python dependencies without building the package.\n- `make build`: Builds and installs the package in `release` mode (default).\n- `make build-debug`: Builds and installs the package in `debug` mode.\n- `make build-wheel`: Builds a wheel in `release` mode.\n- `make cargo-test`: Runs all Rust crate tests using `cargo-nextest`.\n- `make clean`: Deletes build artifacts, caches, and build directories.\n- `make distclean`: **CAUTION** Removes all artifacts not in the git index when run with\n  `FORCE=1`. This includes source files which have not been `git add`ed.\n- `make docs`: Builds the Python documentation with Sphinx and the Rust documentation with Cargo.\n- `make pre-commit`: Runs the pre-commit checks over all files.\n- `make ruff`: Runs Ruff over all files using `python/pyproject.toml` (with autofix).\n- `make pytest`: Runs all tests with `pytest`.\n- `make cargo-ci-benches`: Builds the Rust benchmarks used by CI.\n- `make cargo-codspeed-build`: Builds the Rust benchmark subset used for CodSpeed comparisons.\n\n> [!TIP]\n>\n> Run `make help` for documentation on all available make targets.\n\n> [!TIP]\n>\n> See the [crates/infrastructure/TESTS.md](https://github.com/nautechsystems/nautilus_trader/blob/develop/crates/infrastructure/TESTS.md) file for running the infrastructure integration tests.\n\n## Examples\n\nIndicators and strategies can be developed in Python or Rust. For performance and\nlatency-sensitive applications, we recommend Rust. Below are some examples:\n\n- [indicator](https://github.com/nautechsystems/nautilus_trader/tree/develop/crates/indicators/src/) implementations exposed through PyO3.\n- [backtest](https://github.com/nautechsystems/nautilus_trader/tree/develop/examples/backtest/) examples using a `BacktestEngine` directly.\n- [EMA crossover backtest](https://github.com/nautechsystems/nautilus_trader/blob/develop/crates/backtest/examples/engine_ema_cross.rs) example written in Rust.\n\n## Docker\n\nDocker containers are built with the following variant tags:\n\n- `nautilus_trader:latest` has the latest release version installed.\n- `nautilus_trader:nightly` has the head of the `nightly` branch installed.\n- `jupyterlab:latest` has the latest release version installed along with `jupyterlab` and an\n  example backtest notebook with accompanying data.\n- `jupyterlab:nightly` has the head of the `nightly` branch installed along with `jupyterlab` and an\n  example backtest notebook with accompanying data.\n\nYou can pull the container images as follows:\n\n```bash\ndocker pull ghcr.io/nautechsystems/<image_variant_tag> --platform linux/amd64\n```\n\nYou can launch the backtest example container by running:\n\n```bash\ndocker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64\ndocker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly\n```\n\nThen open your browser at the following address:\n\n```bash\nhttp://127.0.0.1:8888/lab\n```\n\n> [!WARNING]\n>\n> Examples use `log_level=\"ERROR\"` because Nautilus logging exceeds Jupyter's stdout rate limit,\n> causing notebooks to hang at lower log levels.\n\n## Development\n\nWe aim to provide the most pleasant developer experience possible for this hybrid Rust and Python codebase.\nSee the [Developer Guide](https://nautilustrader.io/docs/latest/developer_guide/) for helpful information.\n\n[Nautilus Engineering](https://github.com/nautechsystems/nautilus_engineering) maintains the\nengineering standards, lint configuration, pre-commit definitions, tool pins, and repository\nchecks shared across Nautilus projects. This repository vendors selected files at the revision\nrecorded in `.nautilus-engineering.lock`; project-specific policy and CI wiring remain local.\n\n> [!TIP]\n>\n> Run `make build-debug` to compile after Rust changes for the most efficient development workflow.\n\nAfter changes to PyO3 bindings, stub annotations, or wrapped Rust docs, regenerate the\ngenerated Python artifacts from the repository root:\n\n```bash\nmake py-stubs\n```\n\nCommit the generated `.pyi` files and PyO3 wrapper doc comments changed by this target. See\n[Generated Python artifacts](docs/developer_guide/rust.md#generated-python-artifacts) for details.\n\n### Testing with Rust\n\n[cargo-nextest](https://nexte.st) is the standard Rust test runner for NautilusTrader.\nIts key benefit is isolating each test in its own process, ensuring test reliability\nby avoiding interference. See the [Rust testing guidance](docs/developer_guide/testing.md#rust-tests)\nfor details about full-suite support and the limits of plain `cargo test`.\n\nYou can install cargo-nextest by running:\n\n```bash\ncargo install cargo-nextest\n```\n\n> [!TIP]\n>\n> Run Rust tests with `make cargo-test`, which uses **cargo-nextest** with an efficient profile.\n\n## Contributing\n\nThank you for considering a contribution to NautilusTrader. We welcome high-quality work that\nimproves the project. Before starting a substantial change, open an\n[issue](https://github.com/nautechsystems/nautilus_trader/issues) to discuss the problem and approach\nwith the team. Small, self-contained fixes do not require prior agreement.\n\nBefore getting started, be sure to review the [open-source scope](https://github.com/nautechsystems/nautilus_trader/blob/develop/ROADMAP.md#open-source-scope) outlined in the project's roadmap to understand what's in and out of scope.\n\nOnce you're ready to start working on your contribution, make sure to follow the guidelines\noutlined in the [CONTRIBUTING.md](https://github.com/nautechsystems/nautilus_trader/blob/develop/CONTRIBUTING.md) file. This includes signing a Contributor License Agreement (CLA)\nto ensure that your contributions can be included in the project.\n\n> [!NOTE]\n>\n> Pull requests should target the `develop` branch (the default branch). This is where new features and improvements are integrated before release.\n\nThank you again for your interest in NautilusTrader! We look forward to reviewing your contributions and working with you to improve the project.\n\n## Community\n\nJoin our community of users and contributors on [Discord](https://discord.gg/NautilusTrader) to chat\nand stay up-to-date with the latest announcements and features of NautilusTrader. Whether you're a\ndeveloper looking to contribute or just want to learn more about the platform, all are welcome on our Discord server.\n\nFeatures and integrations excluded by the [open-source scope](https://github.com/nautechsystems/nautilus_trader/blob/develop/ROADMAP.md#out-of-scope)\nare also out of scope for discussion across official NautilusTrader channels, including GitHub and Discord.\nThis includes \"Show & Tell\" posts about downstream implementations, even when no contribution is offered\nand no support or upstream inclusion is requested. Correctness and performance reports about the core trading engine\nremain welcome. Keep those reports focused on the core behavior.\n\n> [!WARNING]\n>\n> NautilusTrader does not issue, promote, or endorse any cryptocurrency tokens. Any claims or communications suggesting otherwise are unauthorized and false.\n>\n> All official updates and communications from NautilusTrader will be shared exclusively through <https://nautilustrader.io>, our [GitHub](https://github.com/nautechsystems), our [Discord server](https://discord.gg/NautilusTrader), or our verified X (Twitter) account: [@NautilusTrader](https://x.com/NautilusTrader).\n>\n> If you encounter any suspicious activity, please report it to the appropriate platform and contact us at <info@nautechsystems.io>.\n\n## License\n\nThe source code for NautilusTrader is available on GitHub under the [GNU Lesser General Public License v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html).\nContributions to the project are welcome and require the completion of a standard [Contributor License Agreement (CLA)](https://github.com/nautechsystems/nautilus_trader/blob/develop/CLA.md).\n\n---\n\nNautilusTrader™ is developed and maintained by Nautech Systems, a technology\ncompany specializing in the development of high-performance trading systems.\nFor more information, visit <https://nautilustrader.io>.\n\nUse of this software is subject to the [Disclaimer](https://nautilustrader.io/legal/disclaimer/).\n\n© 2015-2026 Nautech Systems Pty Ltd. All rights reserved.\n\n![nautechsystems](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/ns-logo.png \"nautechsystems\")\n<img src=\"https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/ferris.png\" alt=\"Ferris\" width=\"128\">\n"
    },
    {
      "repo": "mementum/backtrader",
      "content": null
    },
    {
      "repo": "QuantConnect/Lean",
      "content": null
    },
    {
      "repo": "AI4Finance-Foundation/FinRL",
      "content": "<div align=\"center\">\n<img align=\"center\" width=\"30%\" alt=\"image\" src=\"https://github.com/AI4Finance-Foundation/FinGPT/assets/31713746/e0371951-1ce1-488e-aa25-0992dafcc139\">\n</div>\n\n# FinRL: Financial Reinforcement Learning → FinRL-X\n\n<div align=\"center\">\n<img align=\"center\" src=figs/logo_transparent_background.png width=\"55%\"/>\n</div>\n\n[![Downloads](https://static.pepy.tech/badge/finrl)](https://pepy.tech/project/finrl)\n[![Downloads](https://static.pepy.tech/badge/finrl/week)](https://pepy.tech/project/finrl)\n[![Join Discord](https://img.shields.io/badge/Discord-Join-blue)](https://discord.gg/trsr8SXpW5)\n[![Python 3.6](https://img.shields.io/badge/python-3.6-blue.svg)](https://www.python.org/downloads/release/python-360/)\n[![PyPI](https://img.shields.io/pypi/v/finrl.svg)](https://pypi.org/project/finrl/)\n[![Documentation Status](https://readthedocs.org/projects/finrl/badge/?version=latest)](https://finrl.readthedocs.io/en/latest/?badge=latest)\n![License](https://img.shields.io/github/license/AI4Finance-Foundation/finrl.svg?color=brightgreen)\n![](https://img.shields.io/github/issues-raw/AI4Finance-Foundation/finrl?label=Issues)\n![](https://img.shields.io/github/issues-closed-raw/AI4Finance-Foundation/finrl?label=Closed+Issues)\n![](https://img.shields.io/github/issues-pr-raw/AI4Finance-Foundation/finrl?label=Open+PRs)\n![](https://img.shields.io/github/issues-pr-closed-raw/AI4Finance-Foundation/finrl?label=Closed+PRs)\n[![X](https://img.shields.io/badge/X-Share-black?logo=x)](https://twitter.com/intent/tweet?text=FinRL-Financial-Deep-Reinforcement-Learning%20&url=https://github.com/AI4Finance-Foundation/FinRL&hashtags=DRL,AI) [![LinkedIn](https://img.shields.io/badge/LinkedIn-Share-0A66C2?logo=linkedin&logoColor=white)](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2FAI4Finance-Foundation%2FFinRL)\n\n\n> [!IMPORTANT]\n> **FinRL-X** is the next-generation evolution of FinRL, designed for AI-native, modular, and production-oriented quantitative trading.\n>\n> - **This repository (`FinRL`)** preserves the original end-to-end educational and research framework.\n> - **For the latest architecture, live trading deployment, and production-focused development, please use [`FinRL-X / FinRL-Trading`](https://github.com/AI4Finance-Foundation/FinRL-Trading).**\n\n**FinRL®** is widely recognized as the first open-source framework for financial reinforcement learning.\nThis repository contains the original FinRL library for education, benchmarking, and research prototyping.\n\nFor the next-generation AI-native and production-oriented trading stack, please visit **[FinRL-X / FinRL-Trading](https://github.com/AI4Finance-Foundation/FinRL-Trading)**.\n\n## FinRL Ecosystem Roadmap\n\n| Generation | Positioning | Target Users | Repository | Description |\n|----|----|----|----|----|\n| FinRL-Meta | Market Environments | Practitioners | [FinRL-Meta](https://github.com/AI4Finance-Foundation/FinRL-Meta) | Gym-style financial market environments and benchmarks |\n| FinRL | Classic End-to-End Framework | Learners, Developers, Researchers | [FinRL](https://github.com/AI4Finance-Foundation/FinRL) | Original train-test-trade pipeline for financial reinforcement learning |\n| ElegantRL | Algorithm Layer | Researchers and Experts | [ElegantRL](https://github.com/AI4Finance-Foundation/ElegantRL) | Lightweight and elegant DRL algorithms |\n| **FinRL-X** | **Next Generation / Production** | **Professional traders, institutions, hedge funds** | [**FinRL-Trading**](https://github.com/AI4Finance-Foundation/FinRL-Trading) | **AI-native modular infrastructure for deployment-aware quantitative trading** |\n> **Recommended for new users:** Start with **[FinRL-X / FinRL-Trading](https://github.com/AI4Finance-Foundation/FinRL-Trading)** if you are building modern or production-oriented trading systems.\n\n### 🔄 FinRL-X vs. FinRL: What Changed\n\n| Capability | FinRL (Stage 1.0) | FinRL-X (Stage 3.0) |\n|---|---|---|\n| **Paradigm** | Deep Reinforcement Learning | AI-Native (ML + DRL + LLM-ready) |\n| **Architecture** | Three-layer coupled monolith | Fully decoupled modular layers |\n| **Strategies** | DRL agents (A2C, DDPG, PPO, SAC, TD3) | ML selection + DRL timing + extensible base |\n| **Data Layer** | 14 manually-wired processors | Auto-select: Yahoo Finance → FMP → WRDS |\n| **Backtesting** | Custom hand-rolled evaluation loops | Professional `bt` library engine |\n| **Live Trading** | Basic Alpaca support | Full multi-account integration + risk controls |\n| **Configuration** | `config.py` + `config_tickers.py` | Type-safe Pydantic + `.env` multi-env |\n| **Risk Management** | Gym environment constraints only | Order · portfolio · strategy-level controls |\n| **Target Users** | Researchers & students | Quants, institutions, production deployments |\n| **Paper** | [arXiv:2011.09607](https://arxiv.org/abs/2011.09607) | [arXiv:2603.21330](https://arxiv.org/abs/2603.21330) |\n\n[FinGPT](https://github.com/AI4Finance-Foundation/FinGPT): an open-source project for financial large language models, designed for research and real-world FinTech applications.\n\n![Visitors](https://api.visitorbadge.io/api/VisitorHit?user=AI4Finance-Foundation&repo=FinRL&countColor=%23B17A)\n[![Discord](https://dcbadge.limes.pink/api/server/trsr8SXpW5?v=20260320)](https://discord.gg/trsr8SXpW5)\n\n## Outline\n\n  - [Overview](#overview)\n  - [File Structure](#file-structure)\n  - [Supported Data Sources](#supported-data-sources)\n  - [Installation](#installation)\n  - [Status Update](#status-update)\n  - [Tutorials](#tutorials)\n  - [Publications](#publications)\n  - [News](#news)\n  - [Citing FinRL](#citing-finrl)\n  - [Join and Contribute](#join-and-contribute)\n    - [Contributors](#contributors)\n    - [Sponsorship](#sponsorship)\n  - [LICENSE](#license)\n\n## Project Contributors\n\nFinRL® is an open-source financial reinforcement learning framework developed by contributors from the AI4Finance community and maintained by the AI4Finance Foundation.\n\nKey contributors include:\n\n- [**Hongyang (Bruce) Yang**](https://www.linkedin.com/in/brucehy/) – research and development on financial reinforcement learning frameworks, market environments, and quantitative trading applications\n- [other contributors…]\n\n## Overview\n\nFinRL is the original open-source framework for financial reinforcement learning, organized around three core layers:\n\n- **Market Environments**\n- **DRL Agents**\n- **Financial Applications**\n\nFor a trading task, an agent interacts with a market environment and learns sequential decision-making policies.\n\nThis repository focuses on the **classic FinRL workflow** for education, experimentation, and research prototyping.\n\nFor the **next-generation production-oriented stack**, including modular deployment and AI-native trading infrastructure, please visit **[FinRL-X / FinRL-Trading](https://github.com/AI4Finance-Foundation/FinRL-Trading)**.\n\n<div align=\"center\">\n  <img src=\"https://github.com/AI4Finance-Foundation/FinRL-Trading/blob/master/figs/FinRL_X_Framework.png\" width=\"880\"/>\n</div>\n\n<div align=\"center\">\n<img align=\"center\" src=figs/finrl_framework.png>\n</div>\n\nVideos [FinRL](http://www.youtube.com/watch?v=ZSGJjtM-5jA) at [AI4Finance Youtube Channel](https://www.youtube.com/channel/UCrVri6k3KPBa3NhapVV4K5g).\n\n## FinRL Stock Trading 2026 Tutorial\nThis tutorial demonstrates the original FinRL workflow for educational and research purposes.\nFor the latest production-oriented pipeline, please use **[FinRL-X / FinRL-Trading](https://github.com/AI4Finance-Foundation/FinRL-Trading)**.\n### Step 1: Clone the Repository\n\n```bash\ngit clone https://github.com/AI4Finance-Foundation/FinRL.git\ncd FinRL\n```\n\n### Step 2: Create and Activate Virtual Environment\n\n```bash\npython3 -m venv venv\nsource venv/bin/activate\n```\n\n### Step 3: Install FinRL\n\n```bash\npip install -e .\n```\n\n### Step 4: Run the Scripts\n\n**1. Data Download & Preprocessing**\n\n```bash\npython examples/FinRL_StockTrading_2026_1_data.py\n```\n\nThis script downloads DOW 30 stock data from Yahoo Finance, adds technical indicators (MACD, RSI, etc.), VIX, and turbulence index, then splits the data into training set (2014–2025) and trading set (2026-01-01 to 2026-03-20), saving them as `train_data.csv` and `trade_data.csv`.\n\n**2. Train DRL Agents**\n\n```bash\npython examples/FinRL_StockTrading_2026_2_train.py\n```\n\nThis script trains 5 DRL agents (A2C, DDPG, PPO, TD3, SAC) using Stable Baselines 3 on the training data. Trained models are saved to the `trained_models/` directory.\n\n**3. Backtest**\n\n```bash\npython examples/FinRL_StockTrading_2026_3_Backtest.py\n```\n\nThis script loads the trained agents, runs them on the trading data, and compares their performance against two baselines: Mean Variance Optimization (MVO) and the DJIA index. Results are printed to the console and a plot is saved as `backtest_result.png`.\n\n\n## File Structure\n\nThe main folder **finrl** has three subfolders **applications, agents, meta**. We employ a **train-test-trade** pipeline with three files: train.py, test.py, and trade.py.\n\n```\nFinRL\n├── finrl (main folder)\n│   ├── applications\n│   \t├── Stock_NeurIPS2018\n│   \t├── imitation_learning\n│   \t├── cryptocurrency_trading\n│   \t├── high_frequency_trading\n│   \t├── portfolio_allocation\n│   \t└── stock_trading\n│   ├── agents\n│   \t├── elegantrl\n│   \t├── rllib\n│   \t└── stablebaseline3\n│   ├── meta\n│   \t├── data_processors\n│   \t├── env_cryptocurrency_trading\n│   \t├── env_portfolio_allocation\n│   \t├── env_stock_trading\n│   \t├── preprocessor\n│   \t├── data_processor.py\n│       ├── meta_config_tickers.py\n│   \t└── meta_config.py\n│   ├── config.py\n│   ├── config_tickers.py\n│   ├── main.py\n│   ├── plot.py\n│   ├── train.py\n│   ├── test.py\n│   └── trade.py\n│\n├── examples\n├── unit_tests (unit tests to verify codes on env & data)\n│   ├── environments\n│   \t└── test_env_cashpenalty.py\n│   └── downloaders\n│   \t├── test_yahoodownload.py\n│   \t└── test_alpaca_downloader.py\n├── setup.py\n├── requirements.txt\n└── README.md\n```\n\n## Supported Data Sources\n\n|Data Source |Type |Range and Frequency |Request Limits|Raw Data|Preprocessed Data|\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n|[Akshare](https://alpaca.markets/docs/introduction/)| CN Securities| 2015-now, 1day| Account-specific| OHLCV| Prices&Indicators|\n|[Alpaca](https://docs.alpaca.markets/docs/getting-started)| US Stocks, ETFs| 2015-now, 1min| Account-specific| OHLCV| Prices&Indicators|\n|[Baostock](http://baostock.com/baostock/index.php/Python_API%E6%96%87%E6%A1%A3)| CN Securities| 1990-12-19-now, 5min| Account-specific| OHLCV| Prices&Indicators|\n|[Binance](https://binance-docs.github.io/apidocs/spot/en/#public-api-definitions)| Cryptocurrency| API-specific, 1s, 1min| API-specific| Tick-level daily aggregated trades, OHLCV| Prices&Indicators|\n|[CCXT](https://docs.ccxt.com/en/latest/manual.html)| Cryptocurrency| API-specific, 1min| API-specific| OHLCV| Prices&Indicators|\n|[EODhistoricaldata](https://eodhistoricaldata.com/financial-apis/)| US Securities| Frequency-specific, 1min| API-specific | OHLCV | Prices&Indicators|\n|[FXMacroData](https://fxmacrodata.com/)| FX spot rates and macro announcements| Daily and event-time | Account-specific | FX rates, release calendars, forecasts, official macro announcements | OHLCV-shaped FX rates and macro event features |\n|[IEXCloud](https://iexcloud.io/docs/api/)| NMS US securities|1970-now, 1 day|100 per second per IP|OHLCV| Prices&Indicators|\n|[JoinQuant](https://www.joinquant.com/)| CN Securities| 2005-now, 1min| 3 requests each time| OHLCV| Prices&Indicators|\n|[QuantConnect](https://www.quantconnect.com/docs/v2)| US Securities| 1998-now, 1s| NA| OHLCV| Prices&Indicators|\n|[RiceQuant](https://www.ricequant.com/doc/rqdata/python/)| CN Securities| 2005-now, 1ms| Account-specific| OHLCV| Prices&Indicators|\n[Sinopac](https://sinotrade.github.io/zh_TW/tutor/prepare/terms/) | Taiwan securities | 2023-04-13~now, 1min | Account-specific | OHLCV | Prices&Indicators|\n|[Tushare](https://tushare.pro/document/1?doc_id=131)| CN Securities, A-share| -now, 1 min| Account-specific| OHLCV| Prices&Indicators|\n|[WRDS](https://wrds-www.wharton.upenn.edu/pages/about/data-vendors/nyse-trade-and-quote-taq/)| US Securities| 2003-now, 1ms| 5 requests each time| Intraday Trades|Prices&Indicators|\n|[YahooFinance](https://pypi.org/project/yfinance/)| US Securities| Frequency-specific, 1min| 2,000/hour| OHLCV | Prices&Indicators|\n\n\n<!-- |Data Source |Type |Max Frequency |Raw Data|Preprocessed Data|\n|  ----  |  ----  |  ----  |  ----  |  ----  |\n|    AkShare |  CN Securities | 1 day  |  OHLCV |  Prices, indicators |\n|    Alpaca |  US Stocks, ETFs |  1 min |  OHLCV |  Prices, indicators |\n|    Alpha Vantage | Stock, ETF, forex, crypto, technical indicators | 1 min |  OHLCV  & Prices, indicators |\n|    Baostock |  CN Securities |  5 min |  OHLCV |  Prices, indicators |\n|    Binance |  Cryptocurrency |  1 s |  OHLCV |  Prices, indicators |\n|    CCXT |  Cryptocurrency |  1 min  |  OHLCV |  Prices, indicators |\n|    currencyapi |  Exchange rate | 1 day |  Exchange rate | Exchange rate, indicators |\n|    currencylayer |  Exchange rate | 1 day  |  Exchange rate | Exchange rate, indicators |\n|    EOD Historical Data | US stocks, and ETFs |  1 day  |  OHLCV  | Prices, indicators |\n|    Exchangerates |  Exchange rate |  1 day  |  Exchange rate | Exchange rate, indicators |\n|    findatapy |  CN Securities | 1 day  |  OHLCV |  Prices, indicators |\n|    Financial Modeling prep | US stocks, currencies, crypto |  1 min |  OHLCV  | Prices, indicators |\n|    finnhub | US Stocks, currencies, crypto |   1 day |  OHLCV  | Prices, indicators |\n|    Fixer |  Exchange rate |  1 day  |  Exchange rate | Exchange rate, indicators |\n|    IEXCloud |  NMS US securities | 1 day  | OHLCV |  Prices, indicators |\n|    JoinQuant |  CN Securities |  1 min  |  OHLCV |  Prices, indicators |\n|    Marketstack | 50+ countries |  1 day  |  OHLCV | Prices, indicators |\n|    Open Exchange Rates |  Exchange rate |  1 day  |  Exchange rate | Exchange rate, indicators |\n|    pandas\\_datareader |  US Securities |  1 day |  OHLCV | Prices, indicators |\n|    pandas-finance |  US Securities |  1 day  |  OHLCV  & Prices, indicators |\n|    Polygon |  US Securities |  1 day  |  OHLCV  | Prices, indicators |\n|    Quandl | 250+ sources |  1 day  |  OHLCV  | Prices, indicators |\n|    QuantConnect |  US Securities |  1 s |  OHLCV |  Prices, indicators |\n|    RiceQuant |  CN Securities |  1 ms  |  OHLCV |  Prices, indicators |\n|    Sinopac   | Taiwan securities | 1min | OHLCV |  Prices, indicators |\n|    Tiingo | Stocks, crypto |  1 day  |  OHLCV  | Prices, indicators |\n|    Tushare |  CN Securities | 1 min  |  OHLCV |  Prices, indicators |\n|    WRDS |  US Securities |  1 ms  |  Intraday Trades | Prices, indicators |\n|    XE |  Exchange rate |  1 day  |  Exchange rate | Exchange rate, indicators |\n|    Xignite |  Exchange rate |  1 day  |  Exchange rate | Exchange rate, indicators |\n|    YahooFinance |  US Securities | 1 min  |  OHLCV  |  Prices, indicators |\n|    ystockquote |  US Securities |  1 day  |  OHLCV | Prices, indicators | -->\n\n\n\nOHLCV: open, high, low, and close prices; volume. adjusted_close: adjusted close price\n\nTechnical indicators: 'macd', 'boll_ub', 'boll_lb', 'rsi_30', 'dx_30', 'close_30_sma', 'close_60_sma'. Users also can add new features.\n\n\n## Installation\n+ [Install description for all operating systems (MAC OS, Ubuntu, Windows 10)](./docs/source/start/installation.rst)\n+ [FinRL for Quantitative Finance: Install and Setup Tutorial for Beginners](https://ai4finance.medium.com/finrl-for-quantitative-finance-install-and-setup-tutorial-for-beginners-1db80ad39159)\n\n## Status Update\n<details><summary><b>Version History</b> <i>[click to expand]</i></summary>\n<div>\n\n* 2022-06-25\n\t0.3.5: Formal release of FinRL, neo_finrl is changed to FinRL-Meta with related files in directory: *meta*.\n* 2021-08-25\n\t0.3.1: pytorch version with a three-layer architecture, apps (financial tasks), drl_agents (drl algorithms), neo_finrl (gym env)\n* 2020-12-14\n  \tUpgraded to **Pytorch** with stable-baselines3; Removed TensorFlow 1.x support; TensorFlow 2.0 support was under development at the time.\n* 2020-11-27\n  \t0.1: Beta version with tensorflow 1.5\n</div>\n</details>\n\n\n## Tutorials\n\n+ [Towards Data Science] [Deep Reinforcement Learning for Automated Stock Trading](https://medium.com/data-science/deep-reinforcement-learning-for-automated-stock-trading-f1dad0126a02)\n\n\n## Publications\n\n|Title |Conference/Journal |Link|Citations|Year|\n|  ----  |  ----  |  ----  |  ----  |  ----  |\n|Dynamic Datasets and Market Environments for Financial Reinforcement Learning| Machine Learning - Springer Nature| [paper](https://arxiv.org/abs/2304.13174) [code](https://github.com/AI4Finance-Foundation/FinRL-Meta) | 51 | 2024 |\n|**FinRL-Meta**: FinRL-Meta: Market Environments and Benchmarks for Data-Driven Financial Reinforcement Learning| NeurIPS 2022| [paper](https://arxiv.org/abs/2211.03107) [code](https://github.com/AI4Finance-Foundation/FinRL-Meta) | 136 | 2022 |\n|**FinRL**: Deep reinforcement learning framework to automate trading in quantitative finance| ACM International Conference on AI in Finance (ICAIF) | [paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3955949) | 212 | 2021 |\n|**FinRL**: A deep reinforcement learning library for automated stock trading in quantitative finance| NeurIPS 2020 Deep RL Workshop  | [paper](https://arxiv.org/abs/2011.09607) | 275 | 2020 |\n|Deep reinforcement learning for automated stock trading: An ensemble strategy| ACM International Conference on AI in Finance (ICAIF) | [paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3690996) [code](https://github.com/AI4Finance-Foundation/FinRL-Meta/blob/master/tutorials/2-Advance/FinRL_Ensemble_StockTrading_ICAIF_2020/FinRL_Ensemble_StockTrading_ICAIF_2020.ipynb) | 426 | 2020 |\n|Practical deep reinforcement learning approach for stock trading | NeurIPS 2018 Workshop on Challenges and Opportunities for AI in Financial Services| [paper](https://arxiv.org/abs/1811.07522) [code](https://github.com/AI4Finance-Foundation/FinRL](https://github.com/AI4Finance-Foundation/FinRL))| 303 | 2018 |\n\n\n## News\n+ [央广网] [2021 IDEA大会于福田圆满落幕：群英荟萃论道AI 多项目发布亮点纷呈](http://tech.cnr.cn/techph/20211123/t20211123_525669092.shtml)\n+ [央广网] [2021 IDEA大会开启AI思想盛宴 沈向洋理事长发布六大前沿产品](https://baijiahao.baidu.com/s?id=1717101783873523790&wfr=spider&for=pc)\n+ [IDEA新闻] [2021 IDEA大会发布产品FinRL-Meta——基于数据驱动的强化学习金融风险模拟系统](https://idea.edu.cn/news/20211213143128.html)\n+ [知乎] [FinRL-Meta基于数据驱动的强化学习金融元宇宙](https://zhuanlan.zhihu.com/p/437804814)\n+ [量化投资与机器学习] [基于深度强化学习的股票交易策略框架（代码+文档)](https://www.mdeditor.tw/pl/p5Gg)\n+ [运筹OR帷幄] [领读计划NO.10 | 基于深度增强学习的量化交易机器人：从AlphaGo到FinRL的演变过程](https://zhuanlan.zhihu.com/p/353557417)\n+ [深度强化实验室] [【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库](https://blog.csdn.net/deeprl/article/details/114828024)\n+ [商业新知] [金融科技讲座回顾|AI4Finance: 从AlphaGo到FinRL](https://www.shangyexinzhi.com/article/4170766.html)\n+ [Kaggle] [Jane Street Market Prediction](https://www.kaggle.com/c/jane-street-market-prediction/discussion/199313)\n+ [矩池云Matpool] [在矩池云上如何运行FinRL股票交易策略框架](http://www.python88.com/topic/111918)\n+ [财智无界] [金融学会常务理事陈学彬: 深度强化学习在金融资产管理中的应用](https://www.sohu.com/a/486837028_120929319)\n+ [Neurohive] [FinRL: глубокое обучение с подкреплением для трейдинга](https://neurohive.io/ru/gotovye-prilozhenija/finrl-glubokoe-obuchenie-s-podkrepleniem-dlya-trejdinga/)\n+ [ICHI.PRO] [양적 금융을위한 FinRL: 단일 주식 거래를위한 튜토리얼](https://ichi.pro/ko/yangjeog-geum-yung-eul-wihan-finrl-dan-il-jusig-geolaeleul-wihan-tyutolieol-61395882412716)\n+ [知乎] [基于深度强化学习的金融交易策略（FinRL+Stable baselines3，以道琼斯30股票为例）](https://zhuanlan.zhihu.com/p/563238735)\n+ [知乎] [动态数据驱动的金融强化学习](https://zhuanlan.zhihu.com/p/616799055)\n+ [知乎] [FinRL的W&B化+超参数搜索和模型优化(基于Stable Baselines 3）](https://zhuanlan.zhihu.com/p/498115373)\n+ [知乎] [FinRL-Meta: 未来金融强化学习的元宇宙](https://zhuanlan.zhihu.com/p/544621882)\n+\n## Citing FinRL\n\nFor the next-generation AI-native modular trading infrastructure, see **[FinRL-X / FinRL-Trading](https://github.com/AI4Finance-Foundation/FinRL-Trading)**.\n\n```\n@inproceedings{yang2026finrlx,\n  title     = {FinRL-X: An AI-Native Modular Infrastructure for Quantitative Trading},\n  author    = {Yang, Hongyang and Zhang, Boyu and She, Yang and Liao, Xinyu and Zhang, Xiaoli},\n  booktitle = {Proceedings of the 2nd International Workshop on Decision Making and Optimization in Financial Technologies (DMO-FinTech)},\n  year      = {2026},\n  note      = {Workshop at PAKDD 2026}\n}\n```\n\nIf you use the original FinRL framework, please cite the FinRL papers:\n\n```\n@article{finrl2020,\n    author  = {Liu, Xiao-Yang and Yang, Hongyang and Chen, Qian and Zhang, Runjia and Yang, Liuqing and Xiao, Bowen and Wang, Christina Dan},\n    title   = {{FinRL}: A deep reinforcement learning library for automated stock trading in quantitative finance},\n    journal = {Deep RL Workshop, NeurIPS 2020},\n    year    = {2020}\n}\n```\n\n## Join and Contribute\n\nWelcome to **AI4Finance** community!\n\nPlease check [Contributing Guidelines](https://github.com/AI4Finance-Foundation/FinRL-Tutorials/blob/master/Contributing.md).\n\n### Contributors\n\nThanks to all contributors who have helped build FinRL.\n\n<a href=\"https://github.com/AI4Finance-Foundation/FinRL/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=AI4Finance-Foundation/FinRL\" alt=\"FinRL contributors\" />\n</a>\n\n\n## LICENSE\n\nMIT License\n```\nTrademark Notice\n\nFinRL and the FinRL logo are trademarks of FinRL LLC. Use of these marks by the AI4Finance Foundation is permitted under license. The open-source license for this repository does not grant any right to use the FinRL name, logo, or related trademarks without prior written permission from FinRL LLC, except as permitted by applicable law.\n\n```\n\n**Disclaimer: We are sharing codes for academic purposes under the MIT license. Nothing herein constitutes financial advice or a recommendation to trade real money. Users are solely responsible for any financial decisions made using this software. Consult a qualified professional before deploying capital.**\n"
    }
  ],
  "extra_evidence": [
    {
      "key": "TauricResearch/TradingAgentstradingagents/default_config.py",
      "content": "import os\n\n_TRADINGAGENTS_HOME = os.path.join(os.path.expanduser(\"~\"), \".tradingagents\")\n\n# Single source of truth for env-var → config-key overrides. To expose\n# a new config key for environment-based override, add a row here — no\n# entry-point script changes required. Coercion is driven by the type\n# of the existing default, so users can keep writing plain strings in\n# their .env file.\n_ENV_OVERRIDES = {\n    \"TRADINGAGENTS_LLM_PROVIDER\":         \"llm_provider\",\n    \"TRADINGAGENTS_DEEP_THINK_LLM\":       \"deep_think_llm\",\n    \"TRADINGAGENTS_QUICK_THINK_LLM\":      \"quick_think_llm\",\n    \"TRADINGAGENTS_DEEP_THINK_PROVIDER\":       \"deep_think_provider\",\n    \"TRADINGAGENTS_QUICK_THINK_PROVIDER\":      \"quick_think_provider\",\n    \"TRADINGAGENTS_DEEP_THINK_BACKEND_URL\":    \"deep_think_backend_url\",\n    \"TRADINGAGENTS_QUICK_THINK_BACKEND_URL\":   \"quick_think_backend_url\",\n    \"TRADINGAGENTS_LLM_BACKEND_URL\":      \"backend_url\",\n    \"TRADINGAGENTS_OUTPUT_LANGUAGE\":      \"output_language\",\n    \"TRADINGAGENTS_MAX_DEBATE_ROUNDS\":    \"max_debate_rounds\",\n    \"TRADINGAGENTS_MAX_RISK_ROUNDS\":      \"max_risk_discuss_rounds\",\n    \"TRADINGAGENTS_MAX_TOOL_ROUNDS\":      \"max_tool_rounds\",\n    \"TRADINGAGENTS_CHECKPOINT_ENABLED\":   \"checkpoint_enabled\",\n    \"TRADINGAGENTS_BENCHMARK_TICKER\":     \"benchmark_ticker\",\n    \"TRADINGAGENTS_TEMPERATURE\":          \"temperature\",\n    \"TRADINGAGENTS_LLM_MAX_RETRIES\":      \"llm_max_retries\",\n    \"TRADINGAGENTS_MAX_TOKENS\":           \"max_tokens\",\n    # Provider-specific reasoning/thinking knobs (None = each provider's own\n    # default). Settable here for non-interactive runs; the CLI also offers an\n    # interactive choice, which is skipped when the matching var is set.\n    \"TRADINGAGENTS_GOOGLE_THINKING_LEVEL\":   \"google_thinking_level\",\n    \"TRADINGAGENTS_OPENAI_REASONING_EFFORT\": \"openai_reasoning_effort\",\n    \"TRADINGAGENTS_ANTHROPIC_EFFORT\":        \"anthropic_effort\",\n}\n\n\n_BOOL_TRUE = (\"true\", \"1\", \"yes\", \"on\")\n_BOOL_FALSE = (\"false\", \"0\", \"no\", \"off\")\n\n\ndef _coerce(value: str, reference):\n    \"\"\"Coerce env-var string to the type of the existing default value.\n\n    Invalid values raise ``ValueError`` rather than silently falling back to a\n    default — a misspelled boolean (e.g. ``treu``) or non-numeric int should fail\n    loudly at startup, not quietly misconfigure an unattended run.\n    \"\"\"\n    if isinstance(reference, bool):\n        normalized = value.strip().lower()\n        if normalized in _BOOL_TRUE:\n            return True\n        if normalized in _BOOL_FALSE:\n            return False\n        raise ValueError(\n            f\"expected a boolean ({'/'.join(_BOOL_TRUE + _BOOL_FALSE)}), got {value!r}\"\n        )\n    if isinstance(reference, int) and not isinstance(reference, bool):\n        return int(value)\n    if isinstance(reference, float):\n        return float(value)\n    return value\n\n\ndef _apply_env_overrides(config: dict) -> dict:\n    \"\"\"Apply TRADINGAGENTS_* env vars to the config dict in-place.\"\"\"\n    for env_var, key in _ENV_OVERRIDES.items():\n        raw = os.environ.get(env_var)\n        if raw is None or raw == \"\":\n            continue\n        try:\n            config[key] = _coerce(raw, config.get(key))\n        except ValueError as exc:\n            raise ValueError(f\"Invalid value for {env_var}: {exc}\") from exc\n    return config\n\n\ndef build_default_config() -> dict:\n    \"\"\"The built-in defaults with the TRADINGAGENTS_* environment folded in.\n\n    Read when the package is imported, as DEFAULT_CONFIG; call it again to see\n    the environment as it is now.\n    \"\"\"\n    return _apply_env_overrides({\n        \"results_dir\": os.getenv(\"TRADINGAGENTS_RESULTS_DIR\") or os.path.join(_TRADINGAGENTS_HOME, \"logs\"),\n        \"data_cache_dir\": os.getenv(\"TRADINGAGENTS_CACHE_DIR\") or os.path.join(_TRADINGAGENTS_HOME, \"cache\"),\n        \"memory_log_path\": os.getenv(\"TRADINGAGENTS_MEMORY_LOG_PATH\") or os.path.join(_TRADINGAGENTS_HOME, \"memory\", \"trading_memory.md\"),\n        # Optional cap on the number of resolved memory log entries. When set,\n        # the oldest resolved entries are pruned once this limit is exceeded.\n        # Pending entries are never pruned. None disables rotation entirely.\n        \"memory_log_max_entries\": None,\n        # LLM settings\n        \"llm_provider\": \"openai\",\n        \"deep_think_llm\": \"gpt-6-sol\",\n        \"quick_think_llm\": \"gpt-6-luna\",\n        # When None, each provider's client falls back to its own default endpoint\n        # (api.openai.com for OpenAI, generativelanguage.googleapis.com for Gemini, ...).\n        # The CLI overrides this per provider when the user picks one. Keeping a\n        # provider-specific URL here would leak (e.g. OpenAI's /v1 was previously\n        # being forwarded to Gemini, producing malformed request URLs).\n        \"backend_url\": None,\n        # A tier may name its own provider and endpoint (#1440): the quick tier serves\n        # the analysts, researchers, debaters and trader, the deep tier the managers.\n        # None means the tier uses llm_provider and backend_url.\n        \"quick_think_provider\": None,\n        \"deep_think_provider\": None,\n        \"quick_think_backend_url\": None,\n        \"deep_think_backend_url\": None,\n        # Provider-specific thinking configuration\n        \"google_thinking_level\": None,      # \"high\", \"minimal\", etc.\n        \"openai_reasoning_effort\": None,    # \"medium\", \"high\", \"low\"\n        \"anthropic_effort\": None,           # \"high\", \"medium\", \"low\"\n        # Sampling temperature, forwarded to every provider when set. None leaves\n        # each provider at its own default. Lower values reduce run-to-run\n        # variation on models that honor it; reasoning models largely ignore it\n        # and no setting makes LLM output bit-identical across runs (see README).\n        \"temperature\": None,\n        # SDK retry budget forwarded to every provider chat client. None leaves each\n        # provider/SDK at its own default (usually 2). Raise it to ride out bursty\n        # 429 throttling on rate-limited deployments instead of aborting a run (#1091).\n        \"llm_max_retries\": None,\n        # Cap on output tokens forwarded to every provider chat client. None leaves\n        # each provider at its own default. Set it to bound a model that emits\n        # unbounded reasoning/output and hangs or trips a gateway idle timeout\n        # (e.g. some deepseek-v4-flash deployments, #1204).\n        \"max_tokens\": None,\n        # Checkpoint/resume: when True, LangGraph saves state after each node\n        # so a crashed run can resume from the last successful step.\n        \"checkpoint_enabled\": False,\n        # Output language for analyst reports and final decision\n        # Internal agent debate stays in English for reasoning quality\n        \"output_language\": \"English\",\n        # Debate and discussion settings\n        \"max_debate_rounds\": 1,\n        \"max_risk_discuss_rounds\": 1,\n        \"max_recur_limit\": 100,\n        # Rounds of tool calls an analyst may make before it is asked for its report.\n        \"max_tool_rounds\": 20,\n        # News / data fetching parameters\n        # Increase for longer lookback strategies or to broaden macro coverage;\n        # decrease to reduce token usage in agent prompts.\n        \"news_article_limit\": 20,             # max articles per ticker (ticker-news)\n        \"global_news_article_limit\": 10,      # max articles for global/macro news\n        \"global_news_lookback_days\": 7,       # macro news lookback window\n        # Search queries used by get_global_news for macro headlines. Extend or\n        # replace to broaden geographic / sector coverage.\n        \"global_news_queries\": [\n            \"Federal Reserve interest rates inflation\",\n            \"S&P 500 earnings GDP economic outlook\",\n            \"geopolitical risk trade war sanctions\",\n            \"ECB Bank of England BOJ central bank policy\",\n            \"oil commodities supply chain energy\",\n        ],\n        # Data vendor configuration\n        # Category-level configuration (default for all tools in category).\n        # The configured value is the exact vendor chain — requests are NOT silently\n        # routed to vendors you didn't choose. For ordered fallback, list several,\n        # e.g. \"yfinance,alpha_vantage\". \"default\" uses all available vendors.\n        \"data_vendors\": {\n            \"core_stock_apis\": \"yfinance\",       # Options: alpha_vantage, yfinance\n            \"technical_indicators\": \"yfinance\",  # Options: alpha_vantage, yfinance\n            # Statements come from SEC EDGAR as filed (US filers), then Yahoo; the\n        # overview and insider tools, which SEC EDGAR does not serve, from Yahoo.\n        \"fundamental_data\": \"sec_edgar,yfinance\",  # Options: sec_edgar, alpha_vantage, yfinance\n            \"news_data\": \"yfinance\",             # Options: alpha_vantage, yfinance\n            \"macro_data\": \"fred\",                # Options: fred (needs FRED_API_KEY)\n            \"prediction_markets\": \"polymarket\",  # Options: polymarket (keyless)\n        },\n        # Tool-level configuration (takes precedence over category-level)\n        \"tool_vendors\": {\n            # Example: \"get_stock_data\": \"alpha_vantage\",  # Override category default\n        },\n        # Benchmark for alpha calculation in the reflection layer.\n        # ``benchmark_ticker`` (when set) overrides the suffix map for all\n        # tickers; leave it None to use ``benchmark_map`` for auto-detection\n        # based on the ticker's exchange suffix. SPY remains the US default\n        # so the reflection label keeps reading \"Alpha vs SPY\" for US tickers\n        # while non-US tickers get their regional index automatically.\n        # Trading days from the first close after the analysis date over which a\n        # decision's outcome is measured, for reflection and for the backtest figures.\n        \"holding_period_days\": 5,\n        \"benchmark_ticker\": None,\n        \"benchmark_map\": {\n            \".NS\":  \"^NSEI\",       # NSE India (Nifty 50)\n            \".BO\":  \"^BSESN\",      # BSE India (Sensex)\n            \".T\":   \"^N225\",       # Tokyo (Nikkei 225)\n            \".TW\":  \"^TWII\",       # Taiwan (TAIEX)\n            \".TWO\": \"^TWII\",       # Taipei OTC (TPEx has no Yahoo index; TAIEX)\n            \".KS\":  \"^KS11\",       # Korea (KOSPI)\n            \".KQ\":  \"^KQ11\",       # Korea (KOSDAQ)\n            \".HK\":  \"^HSI\",        # Hong Kong (Hang Seng)\n            \".SI\":  \"^STI\",        # Singapore (Straits Times)\n            \".L\":   \"^FTSE\",       # London (FTSE 100)\n            \".DE\":  \"^GDAXI\",      # Germany (DAX)\n            \".PA\":  \"^FCHI\",       # Paris (CAC 40)\n            \".AS\":  \"^AEX\",        # Amsterdam (AEX)\n            \".SW\":  \"^SSMI\",       # Switzerland (SMI)\n            \".MI\":  \"FTSEMIB.MI\",  # Milan (FTSE MIB)\n            \".TO\":  \"^GSPTSE\",     # Toronto (TSX Composite)\n            \".AX\":  \"^AXJO\",       # Australia (ASX 200)\n            \".SS\":  \"000001.SS\",   # Shanghai (SSE Composite)\n            \".SZ\":  \"399001.SZ\",   # Shenzhen (SZSE Component)\n            \".SA\":  \"^BVSP\",       # B3 Brazil (Ibovespa)\n            \"\":     \"SPY\",         # default for US-listed tickers (no suffix)\n        },\n\n    })\n\n\nDEFAULT_CONFIG = build_default_config()\n"
    },
    {
      "key": "AI4Finance-Foundation/FinRLfinrl/meta/data_processor.py",
      "content": "from __future__ import annotations\n\nimport numpy as np\nimport pandas as pd\n\nfrom finrl.meta.data_processors.processor_alpaca import AlpacaProcessor as Alpaca\nfrom finrl.meta.data_processors.processor_fxmacrodata import (\n    FXMacroDataProcessor as FXMacroData,\n)\nfrom finrl.meta.data_processors.processor_wrds import WrdsProcessor as Wrds\nfrom finrl.meta.data_processors.processor_yahoofinance import (\n    YahooFinanceProcessor as YahooFinance,\n)\n\n\nclass DataProcessor:\n    def __init__(self, data_source, tech_indicator=None, vix=None, **kwargs):\n        if data_source == \"alpaca\":\n            try:\n                API_KEY = kwargs.get(\"API_KEY\")\n                API_SECRET = kwargs.get(\"API_SECRET\")\n                API_BASE_URL = kwargs.get(\"API_BASE_URL\")\n                self.processor = Alpaca(API_KEY, API_SECRET, API_BASE_URL)\n                print(\"Alpaca successfully connected\")\n            except BaseException:\n                raise ValueError(\"Please input correct account info for alpaca!\")\n\n        elif data_source == \"wrds\":\n            self.processor = Wrds()\n\n        elif data_source == \"yahoofinance\":\n            self.processor = YahooFinance()\n\n        elif data_source == \"fxmacrodata\":\n            self.processor = FXMacroData(\n                api_key=kwargs.get(\"API_KEY\") or kwargs.get(\"api_key\"),\n                base_url=kwargs.get(\"BASE_URL\")\n                or kwargs.get(\"base_url\")\n                or \"https://api.fxmacrodata.com/v1\",\n            )\n\n        else:\n            raise ValueError(\"Data source input is NOT supported yet.\")\n\n        # Initialize variable in case it is using cache and does not use download_data() method\n        self.tech_indicator_list = tech_indicator\n        self.vix = vix\n\n    def download_data(\n        self, ticker_list, start_date, end_date, time_interval\n    ) -> pd.DataFrame:\n        df = self.processor.download_data(\n            ticker_list=ticker_list,\n            start_date=start_date,\n            end_date=end_date,\n            time_interval=time_interval,\n        )\n        return df\n\n    def clean_data(self, df) -> pd.DataFrame:\n        df = self.processor.clean_data(df)\n        return df\n\n    def add_technical_indicator(self, df, tech_indicator_list) -> pd.DataFrame:\n        self.tech_indicator_list = tech_indicator_list\n        df = self.processor.add_technical_indicator(df, tech_indicator_list)\n        return df\n\n    def add_turbulence(self, df) -> pd.DataFrame:\n        df = self.processor.add_turbulence(df)\n        return df\n\n    def add_vix(self, df) -> pd.DataFrame:\n        df = self.processor.add_vix(df)\n        return df\n\n    def add_turbulence(self, df) -> pd.DataFrame:\n        df = self.processor.add_turbulence(df)\n        return df\n\n    def add_vix(self, df) -> pd.DataFrame:\n        df = self.processor.add_vix(df)\n        return df\n\n    def add_vixor(self, df) -> pd.DataFrame:\n        df = self.processor.add_vixor(df)\n        return df\n\n    def df_to_array(self, df, if_vix) -> np.array:\n        price_array, tech_array, turbulence_array = self.processor.df_to_array(\n            df, self.tech_indicator_list, if_vix\n        )\n        # fill nan and inf values with 0 for technical indicators\n        tech_nan_positions = np.isnan(tech_array)\n        tech_array[tech_nan_positions] = 0\n        tech_inf_positions = np.isinf(tech_array)\n        tech_array[tech_inf_positions] = 0\n        return price_array, tech_array, turbulence_array\n"
    },
    {
      "key": "QuantConnect/lean-cliREADME.md",
      "content": "![Lean CLI](http://cdn.quantconnect.com.s3.us-east-1.amazonaws.com/i/github/lean-cli-splash.png)\n\n# QuantConnect Lean CLI\n\n[![Build Status](https://github.com/QuantConnect/lean-cli/workflows/Build/badge.svg)](https://github.com/QuantConnect/lean-cli/actions?query=workflow%3ABuild)\n[![PyPI Version](https://img.shields.io/pypi/v/lean)](https://pypi.org/project/lean/)\n[![Project Status](https://img.shields.io/pypi/status/lean)](https://pypi.org/project/lean/)\n\nThe Lean CLI is a cross-platform CLI aimed at making it easier to develop with the LEAN engine locally and in the cloud.\n\nVisit the [documentation website](https://www.lean.io/docs/v2/lean-cli/key-concepts/getting-started) for comprehensive and up-to-date documentation.\n\n## Highlights\n\n- [Project scaffolding](https://www.lean.io/docs/v2/lean-cli/projects/project-management)\n- [Local autocomplete](https://www.lean.io/docs/v2/lean-cli/projects/autocomplete)\n- [Local data downloading](https://www.lean.io/docs/v2/lean-cli/datasets/downloading-quantconnect-data)\n- [Local backtesting](https://www.lean.io/docs/v2/lean-cli/backtesting/deployment#02-Run-Local-Backtests)\n- [Local debugging](https://www.lean.io/docs/v2/lean-cli/backtesting/debugging)\n- [Local research environment](https://www.lean.io/docs/v2/lean-cli/research)\n- [Local optimization](https://www.lean.io/docs/v2/lean-cli/optimization/deployment#02-Run-Local-Optimizations)\n- [Local live trading](https://www.lean.io/docs/v2/lean-cli/live-trading/quantconnect-paper-trading#02-Deploy-Local-Algorithms)\n- [Local backtest report creation](https://www.lean.io/docs/v2/lean-cli/backtesting/report#02-Generate-a-Report)\n- [Cloud synchronization](https://www.lean.io/docs/v2/lean-cli/projects/cloud-synchronization)\n- [Cloud backtesting](https://www.lean.io/docs/v2/lean-cli/backtesting/deployment#03-Run-Cloud-Backtests)\n- [Cloud optimization](https://www.lean.io/docs/v2/lean-cli/optimization/deployment#03-Run-Cloud-Optimizations)\n- [Cloud live trading](https://www.lean.io/docs/v2/lean-cli/live-trading/quantconnect-paper-trading#03-Deploy-Cloud-Algorithms)\n\n## Installation\n\nThe CLI can be installed and updated by running `pip install --upgrade lean`.\n\nNote that many commands in the CLI require Docker to run. See [Get Docker](https://docs.docker.com/get-docker/) for instructions on how to install Docker for your operating system.\n\n**Note:** Some Linux users may need to install `tkinter` using the following commands:\n\n``` \nFor Python 3\n\nsudo apt-get install python3-tk\n\nFor Python 2.7\n\nsudo apt-get install python-tk\n```\nAfter installing the CLI, open a terminal in an empty directory and run `lean init`. This command downloads the latest configuration file and sample data from the [QuantConnect/Lean](https://github.com/QuantConnect/Lean) repository. We recommend running all Lean CLI commands in the same directory `lean init` was ran in.\n\n## Usage\n\nThe Lean CLI supports multiple workflows. The examples below serve as a starting point, you're free to mix local and cloud features in any way you'd like.\n\nA cloud-focused workflow (local development, cloud execution) with the CLI may look like this:\n1. Open a terminal in the directory you ran `lean init` in.\n2. Run `lean cloud pull` to pull remotely changed files.\n3. Start programming locally and run backtests in the cloud with `lean cloud backtest \"Project Name\" --open --push` whenever there is something to backtest. The `--open` flag means that the backtest results will be opened in the browser when done, while the `--push` flag means that local changes are pushed to the cloud before running the backtest.\n4. Whenever you want to create a new project, run `lean create-project \"Project Name\"` and `lean cloud push --project \"Project Name\"` to create a new project containing some basic code and to push it to the cloud.\n5. When you're finished for the moment, run `lean cloud push` to push all locally changed files to the cloud.\n\nA locally-focused workflow (local development, local execution) with the CLI may look like this:\n1. Open a terminal in the directory you ran `lean init` in.\n2. Run `lean create-project \"Project Name\"` to create a new project with some basic code to get you started.\n3. Work on your strategy in `./Project Name`.\n4. Run `lean research \"Project Name\"` to start a Jupyter Lab session to perform research in.\n5. Run `lean backtest \"Project Name\"` to run a backtest whenever there's something to test. This runs your strategy in a Docker container containing the same packages as the ones used on QuantConnect.com, but with your own data.\n\nYou can save some typing by shortening command names to any unambiguous prefix. For example, `lean clo back` runs `lean cloud backtest`. If a prefix could match more than one command, the CLI shows you the options instead of guessing. They're handy for quick typing, but write out full command names in your scripts. A new command could later share the same prefix and break a shortcut that used to work.\n\n## CLI Configurations\n\nThe following CLI configurations are available. Use the [`lean config list`](#lean-config-list) command to list them at any time.\n\n<!-- configuration table start -->\n| Key | Description |\n| --- | --- |\n| `user-id` | The user id used when making authenticated requests to the QuantConnect API. |\n| `api-token` | The API token used when making authenticated requests to the QuantConnect API. |\n| `default-language` | The default language used when creating new projects (allowed values: python, csharp). |\n| `engine-image` | The Docker image used when running the LEAN engine (quantconnect/lean:latest if not set). |\n| `research-image` | The Docker image used when running the research environment (quantconnect/research:latest if not set). |\n| `database-update-frequency` | How often the databases are updated. The format is DD.HH:MM:SS. If the frequency is less than a day can just be HH:MM:SS. Update can be disabled by setting this option to a non-date value (-, _, ..., etc.). If unset, default value is 1 day |\n<!-- configuration table end -->\n\n## Commands\n\n*Note: the readme only contains the `--help` text of all commands. Visit the [documentation website](https://www.lean.io/docs/v2/lean-cli/key-concepts/getting-started) for more comprehensive documentation.*\n\n<!-- commands start -->\n- [`lean backtest`](#lean-backtest)\n- [`lean build`](#lean-build)\n- [`lean cloud backtest`](#lean-cloud-backtest)\n- [`lean cloud live`](#lean-cloud-live)\n- [`lean cloud live broadcast`](#lean-cloud-live-broadcast)\n- [`lean cloud live command`](#lean-cloud-live-command)\n- [`lean cloud live deploy`](#lean-cloud-live-deploy)\n- [`lean cloud live liquidate`](#lean-cloud-live-liquidate)\n- [`lean cloud live stop`](#lean-cloud-live-stop)\n- [`lean cloud object-store delete`](#lean-cloud-object-store-delete)\n- [`lean cloud object-store get`](#lean-cloud-object-store-get)\n- [`lean cloud object-store list`](#lean-cloud-object-store-list)\n- [`lean cloud object-store ls`](#lean-cloud-object-store-ls)\n- [`lean cloud object-store properties`](#lean-cloud-object-store-properties)\n- [`lean cloud object-store set`](#lean-cloud-object-store-set)\n- [`lean cloud optimize`](#lean-cloud-optimize)\n- [`lean cloud pull`](#lean-cloud-pull)\n- [`lean cloud push`](#lean-cloud-push)\n- [`lean cloud status`](#lean-cloud-status)\n- [`lean config get`](#lean-config-get)\n- [`lean config list`](#lean-config-list)\n- [`lean config set`](#lean-config-set)\n- [`lean config unset`](#lean-config-unset)\n- [`lean create-project`](#lean-create-project)\n- [`lean data download`](#lean-data-download)\n- [`lean data generate`](#lean-data-generate)\n- [`lean decrypt`](#lean-decrypt)\n- [`lean delete-project`](#lean-delete-project)\n- [`lean encrypt`](#lean-encrypt)\n- [`lean init`](#lean-init)\n- [`lean library add`](#lean-library-add)\n- [`lean library remove`](#lean-library-remove)\n- [`lean live`](#lean-live)\n- [`lean live add-security`](#lean-live-add-security)\n- [`lean live cancel-order`](#lean-live-cancel-order)\n- [`lean live command`](#lean-live-command)\n- [`lean live deploy`](#lean-live-deploy)\n- [`lean live liquidate`](#lean-live-liquidate)\n- [`lean live stop`](#lean-live-stop)\n- [`lean live submit-order`](#lean-live-submit-order)\n- [`lean live update-order`](#lean-live-update-order)\n- [`lean login`](#lean-login)\n- [`lean logout`](#lean-logout)\n- [`lean logs`](#lean-logs)\n- [`lean object-store delete`](#lean-object-store-delete)\n- [`lean object-store get`](#lean-object-store-get)\n- [`lean object-store list`](#lean-object-store-list)\n- [`lean object-store ls`](#lean-object-store-ls)\n- [`lean object-store properties`](#lean-object-store-properties)\n- [`lean object-store set`](#lean-object-store-set)\n- [`lean optimize`](#lean-optimize)\n- [`lean private-cloud add-compute`](#lean-private-cloud-add-compute)\n- [`lean private-cloud start`](#lean-private-cloud-start)\n- [`lean private-cloud stop`](#lean-private-cloud-stop)\n- [`lean project-create`](#lean-project-create)\n- [`lean project-delete`](#lean-project-delete)\n- [`lean report`](#lean-report)\n- [`lean research`](#lean-research)\n- [`lean ui`](#lean-ui)\n- [`lean whoami`](#lean-whoami)\n\n### `lean backtest`\n\nBacktest a project locally using Docker.\n\n```\nUsage: lean backtest [OPTIONS] PROJECT\n\n  Backtest a project locally using Docker.\n\n  If PROJECT is a directory, the algorithm in the main.py or Main.cs file inside it will be executed.\n  If PROJECT is a file, the algorithm in the specified file will be executed.\n\n  Go to the following url to learn how to debug backtests locally using the Lean CLI:\n  https://www.lean.io/docs/v2/lean-cli/backtesting/debugging\n\n  By default the official LEAN engine image is used. You can override this using the --image option. Alternatively you\n  can set the default engine image for all commands using `lean config set engine-image <image>`.\n\nOptions:\n  --output DIRECTORY              Directory to store results in (defaults to PROJECT/backtests/TIMESTAMP)\n  -d, --detach                    Run the backtest in a detached Docker container and return immediately\n  --debug [pycharm|ptvsd|debugpy|vsdbg|rider|local-platform]\n                                  Enable a certain debugging method (see --help for more information)\n  --data-provider-historical [Interactive Brokers|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Kraken|CharlesSchwab|IQFeed|Polygon|FactSet|AlphaVantage|CoinApi|ThetaData|QuantConnect|Local|Quant Bridge|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Databento|Webull|Public]\n                                  Update the Lean configuration file to retrieve data from the given historical provider\n  --ib-user-name TEXT             Your Interactive Brokers username\n  --ib-account TEXT               Your Interactive Brokers account id\n  --ib-password TEXT              Your Interactive Brokers password\n  --ib-host TEXT                  External Interactive Brokers Gateway Host (Optional).\n  --ib-port TEXT                  External Interactive Brokers Gateway Port (Optional).\n  --ib-weekly-restart-utc-time TEXT\n                                  Weekly restart UTC time (hh:mm:ss). Each week on Sunday your algorithm is restarted at\n                                  this time, and will require 2FA verification. This is required by Interactive Brokers.\n                                  Use this option explicitly to override the default value. (Optional).\n  --oanda-account-id TEXT         Your OANDA account id\n  --oanda-access-token TEXT       Your OANDA API token\n  --oanda-environment [Practice|Trade]\n                                  The environment to run in, Practice for fxTrade Practice, Trade for fxTrade\n  --bitfinex-api-key TEXT         Your Bitfinex API key\n  --bitfinex-api-secret TEXT      Your Bitfinex API secret\n  --coinbase-api-name TEXT        Your Coinbase Advanced Trade API name from file.\n  --coinbase-api-private-key TEXT\n                                  Your Coinbase Advanced Trade API private key from file.\n  --binance-exchange-name [Binance|BinanceUS|Binance-USDM-Futures|Binance-COIN-Futures]\n                                  Binance exchange name [Binance, BinanceUS, Binance-USDM-Futures, Binance-COIN-Futures]\n  --binance-api-key TEXT          Your Binance API key\n  --binanceus-api-key TEXT        Your Binance API key\n  --binance-api-secret TEXT       Your Binance API secret\n  --binanceus-api-secret TEXT     Your Binance API secret\n  --kraken-api-key TEXT           Your Kraken API key\n  --kraken-api-secret TEXT        Your Kraken API secret\n  --kraken-verification-tier [Starter|Intermediate|Pro]\n                                  Your Kraken Verification Tier\n  --charles-schwab-user-name TEXT\n                                  Your Charles Schwab login ID\n  --charles-schwab-account-number TEXT\n                                  The CharlesSchwab account number\n  --iqfeed-iqconnect TEXT         The path to the IQConnect binary\n  --iqfeed-username TEXT          Your IQFeed username\n  --iqfeed-password TEXT          Your IQFeed password\n  --iqfeed-version TEXT           The product version of your IQFeed developer account\n  --iqfeed-host TEXT              The IQFeed host address (Optional).\n  --polygon-api-key TEXT          Your Polygon.io API Key\n  --polygon-license-type [Individual|Business]\n                                  Select your Polygon.io subscription plan (Optional).\n  --factset-auth-config-file FILE\n                                  The path to the FactSet authentication configuration file\n  --alpha-vantage-api-key TEXT    Your Alpha Vantage Api Key\n  --alpha-vantage-price-plan [Free|Plan30|Plan75|Plan150|Plan300|Plan600|Plan1200]\n                                  Your Alpha Vantage Premium API Key plan\n  --coinapi-api-key TEXT          Your coinapi.io Api Key\n  --coinapi-product [Free|Startup|Streamer|Professional|Enterprise]\n                                  CoinApi pricing plan (https://www.coinapi.io/market-data-api/pricing)\n  --thetadata-ws-url TEXT         The ThetaData host address (Optional).\n  --thetadata-rest-url TEXT       The ThetaData host address (Optional).\n  --thetadata-subscription-plan [Free|Value|Standard|Pro]\n                                  Your ThetaData subscription price plan\n  --quant-bridge-connection-type [DAPI|SAPI]\n                                  Quant Bridge Connection Type [DAPI, SAPI]\n  --quant-bridge-environment [Production|Beta]\n                                  The environment to run in\n  --quant-bridge-server-host TEXT\n                                  The host of the Quant Bridge server\n  --quant-bridge-server-port INTEGER\n                                  The port of the Quant Bridge server\n  --quant-bridge-openfigi-api-key TEXT\n                                  The Open FIGI API key to use for mapping options\n  --quant-bridge-server-auth-id TEXT\n                                  The Auth ID of the Quant Bridge server\n  --bybit-api-key TEXT            Your Bybit API key\n  --bybit-api-secret TEXT         Your Bybit API secret\n  --trade-station-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --trade-station-account-id TEXT\n                                  The TradeStation account Id\n  --alpaca-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --tastytrade-account-number TEXT\n                                  The Tastytrade account number\n  --eze-domain TEXT               Examples (broker provided): LIGHTSPEED, LIGHTSPEEDDELAY\n  --eze-locale TEXT               Examples (broker provided): GLOBAL, AMERICAS, LIVE, DELAYED\n  --eze-user-name TEXT            Your Eze Brokers username\n  --eze-password TEXT             Your Eze Brokers password\n  --dydx-private-key-hex TEXT     Your dYdX API private key in hex format\n  --dydx-address TEXT             Your dYdX wallet address\n  --dydx-subaccount-number INTEGER\n                                  Your dYdX subaccount number\n  --databento-api-key TEXT        Your Databento.com API Key\n  --webull-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --webull-app-key TEXT           Your Webull App Key\n  --webull-app-secret TEXT        Your Webull App Secret\n  --webull-account-id TEXT        Your Webull account id\n  --webull-use-2fa BOOLEAN        Whether two-factor authentication (2FA) should be used (Optional).\n  --public-secret-key TEXT        Your Public.com API secret key\n  --public-account-number TEXT    Your Public.com account number. Public lets you have more than one account, so this\n                                  picks which one to trade.\n  --download-data                 Update the Lean configuration file to download data from the QuantConnect API, alias\n                                  for --data-provider-historical QuantConnect\n  --data-purchase-limit INTEGER   The maximum amount of QCC to spend on downloading data during the backtest when using\n                                  QuantConnect as historical data provider\n  --release                       Compile C# projects in release configuration instead of debug\n  --image TEXT                    The LEAN engine image to use (defaults to quantconnect/lean:latest)\n  --python-venv TEXT              The path of the python virtual environment to be used\n  --update                        Pull the LEAN engine image before running the backtest\n  --backtest-name TEXT            Backtest name\n  --extra-docker-config TEXT      Extra docker configuration as a JSON string. For more information https://docker-\n                                  py.readthedocs.io/en/stable/containers.html\n  --no-update                     Use the local LEAN engine image instead of pulling the latest version\n  --parameter <TEXT TEXT>...      Key-value pairs to pass as backtest parameters. Values can be string, int, or float.\n                                  Example: --parameter symbol AAPL --parameter period 10 --parameter threshold 0.05\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/backtest.py](lean/commands/backtest.py)_\n\n### `lean build`\n\nBuild Docker images of your own version of LEAN.\n\n```\nUsage: lean build [OPTIONS] [ROOT]\n\n  Build Docker images of your own version of LEAN.\n\n  ROOT must point to a directory containing the LEAN repository:\n  https://github.com/QuantConnect/Lean\n\n  When ROOT is not given, the current directory is used as root directory.\n\n  This command performs the following actions:\n  1. The lean-cli/foundation:latest image is built from Lean/DockerfileLeanFoundation(ARM).\n  2. LEAN is compiled in a Docker container using the lean-cli/foundation:latest image.\n  3. The lean-cli/engine:latest image is built from Lean/Dockerfile using lean-cli/foundation:latest as base image.\n  4. The lean-cli/research:latest image is built from Lean/DockerfileJupyter using lean-cli/engine:latest as base image.\n  5. The default engine image is set to lean-cli/engine:latest.\n  6. The default research image is set to lean-cli/research:latest.\n\n  When the foundation Dockerfile is the same as the official foundation Dockerfile, quantconnect/lean:foundation is used\n  instead of building a custom foundation image.\n\nOptions:\n  --tag TEXT  The tag to apply to custom images (defaults to latest)\n  --verbose   Enable debug logging\n  --help      Show this message and exit.\n```\n\n_See code: [lean/commands/build.py](lean/commands/build.py)_\n\n### `lean cloud backtest`\n\nBacktest a project in the cloud.\n\n```\nUsage: lean cloud backtest [OPTIONS] PROJECT\n\n  Backtest a project in the cloud.\n\n  PROJECT must be the name or id of the project to run a backtest for.\n\n  If the project that has to be backtested has been pulled to the local drive with `lean cloud pull` it is possible to\n  use the --push option to push local modifications to the cloud before running the backtest.\n\nOptions:\n  --name TEXT                 The name of the backtest (a random one is generated if not specified)\n  --push                      Push local modifications to the cloud before running the backtest\n  --open                      Automatically open the results in the browser when the backtest is finished\n  --parameter <TEXT TEXT>...  Key-value pairs to pass as backtest parameters. Values can be string, int, or float.\n                              Example: --parameter symbol AAPL --parameter period 10 --parameter threshold 0.05\n  --verbose                   Enable debug logging\n  --help                      Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/backtest.py](lean/commands/cloud/backtest.py)_\n\n### `lean cloud live`\n\nInteract with the QuantConnect cloud live deployments.\n\n```\nUsage: lean cloud live [OPTIONS] COMMAND [ARGS]...\n\n  Interact with the QuantConnect cloud live deployments.\n\nOptions:\n  --help  Show this message and exit.\n\nCommands:\n  broadcast  Broadcast a command to all running cloud live trading projects in an organization.\n  command    Send a command to a running cloud live trading project.\n  deploy     Start live trading for a project in the cloud.\n  liquidate  Stops live trading and liquidates existing positions for a certain project.\n  stop       Stops live trading for a certain project without liquidating existing positions.\n```\n\n### `lean cloud live broadcast`\n\nBroadcast a command to all running cloud live trading projects in an organization.\n\n```\nUsage: lean cloud live broadcast [OPTIONS]\n\n  Broadcast a command to all running cloud live trading projects in an organization.\n\nOptions:\n  --data TEXT             The command to send, 'str' representation of a 'dict' e.g. \"{ \\\"target\\\": \\\"BTCUSD\\\",\n                          \\\"$type\\\":\\\"MyCommand\\\" }\"  [required]\n  --organization TEXT     The name or id of the organization to broadcast the command to, defaults to the organization\n                          of the current Lean CLI directory\n  --exclude-project TEXT  The name or id of the project to exclude from the broadcast, by default all projects are\n                          included\n  --verbose               Enable debug logging\n  --help                  Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/live/broadcast.py](lean/commands/cloud/live/broadcast.py)_\n\n### `lean cloud live command`\n\nSend a command to a running cloud live trading project.\n\n```\nUsage: lean cloud live command [OPTIONS] PROJECT\n\n  Send a command to a running cloud live trading project.\n\nOptions:\n  --data TEXT  The command to send, 'str' representation of a 'dict' e.g. \"{ \\\"target\\\": \\\"BTCUSD\\\",\n               \\\"$type\\\":\\\"MyCommand\\\" }\"\n  --verbose    Enable debug logging\n  --help       Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/live/command.py](lean/commands/cloud/live/command.py)_\n\n### `lean cloud live deploy`\n\nStart live trading for a project in the cloud.\n\n```\nUsage: lean cloud live deploy [OPTIONS] PROJECT\n\n  Start live trading for a project in the cloud.\n\n  PROJECT must be the name or the id of the project to start live trading for.\n\n  By default an interactive wizard is shown letting you configure the deployment. If --brokerage is given the command\n  runs in non-interactive mode. In this mode the CLI does not prompt for input or confirmation. In non-interactive mode\n  the options specific to the given brokerage are required, as well as --node, --auto-restart, --notify-order-events and\n  --notify-insights.\n\nOptions:\n  --brokerage [Paper Trading|Interactive Brokers|Tradier|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Zerodha|Samco|Quant Bridge|Trading Technologies|Kraken|CharlesSchwab|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Webull|Public|ClearStreet|InteractiveBrokersFixBrokerage]\n                                  The brokerage to use\n  --data-provider-live [QuantConnect|Interactive Brokers|Tradier|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Zerodha|Samco|Quant Bridge|Trading Technologies|Kraken|CharlesSchwab|Polygon|CoinApi|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX]\n                                  The live data provider to use\n  --ib-user-name TEXT             Your Interactive Brokers username\n  --ib-account TEXT               Your Interactive Brokers account id\n  --ib-password TEXT              Your Interactive Brokers password\n  --ib-host TEXT                  External Interactive Brokers Gateway Host (Optional).\n  --ib-port TEXT                  External Interactive Brokers Gateway Port (Optional).\n  --ib-weekly-restart-utc-time TEXT\n                                  Weekly restart UTC time (hh:mm:ss). Each week on Sunday your algorithm is restarted at\n                                  this time, and will require 2FA verification. This is required by Interactive Brokers.\n                                  Use this option explicitly to override the default value. (Optional).\n  --ib-financial-advisors-group-filter TEXT\n                                  Use this field to filter data by a specific financial advisor group within your\n                                  Interactive Brokers account. Leave blank to include all groups. (Optional).\n  --tradier-account-id TEXT       Your Tradier account id\n  --tradier-access-token TEXT     Your Tradier access token\n  --tradier-environment [live|paper]\n                                  Whether the developer sandbox should be used\n  --oanda-account-id TEXT         Your OANDA account id\n  --oanda-access-token TEXT       Your OANDA API token\n  --oanda-environment [Practice|Trade]\n                                  The environment to run in, Practice for fxTrade Practice, Trade for fxTrade\n  --bitfinex-api-key TEXT         Your Bitfinex API key\n  --bitfinex-api-secret TEXT      Your Bitfinex API secret\n  --coinbase-api-name TEXT        Your Coinbase Advanced Trade API name from file.\n  --coinbase-api-private-key TEXT\n                                  Your Coinbase Advanced Trade API private key from file.\n  --binance-exchange-name [Binance|BinanceUS|Binance-USDM-Futures|Binance-COIN-Futures]\n                                  Binance exchange name [Binance, BinanceUS, Binance-USDM-Futures, Binance-COIN-Futures]\n  --binance-api-key TEXT          Your Binance API key\n  --binanceus-api-key TEXT        Your Binance API key\n  --binance-api-secret TEXT       Your Binance API secret\n  --binanceus-api-secret TEXT     Your Binance API secret\n  --binance-use-testnet [live|paper]\n                                  Whether the testnet should be used\n  --zerodha-api-key TEXT          Your Kite Connect API key\n  --zerodha-access-token TEXT     Your Kite Connect access token\n  --zerodha-product-type [mis|cnc|nrml]\n                                  MIS if you are targeting intraday products, CNC if you are targeting delivery\n                                  products, NRML if you are targeting carry forward products\n  --zerodha-trading-segment [equity|commodity]\n                                  EQUITY if you are trading equities on NSE or BSE, COMMODITY if you are trading\n                                  commodities on MCX\n  --zerodha-history-subscription [true|false]\n                                  Whether you have a history API subscription for Zerodha\n  --samco-client-id TEXT          Your Samco account Client ID\n  --samco-client-password TEXT    Your Samco account password\n  --samco-year-of-birth TEXT      Your year of birth (YYYY) registered with Samco\n  --samco-product-type [mis|cnc|nrml]\n                                  MIS if you are targeting intraday products, CNC if you are targeting delivery\n                                  products, NRML if you are targeting carry forward products\n  --samco-trading-segment [equity|commodity]\n                                  EQUITY if you are trading equities on NSE or BSE, COMMODITY if you are trading\n                                  commodities on MCX\n  --quant-bridge-server-auth-id TEXT\n                                  The Auth ID of the Quant Bridge server\n  --quant-bridge-environment [Production|Beta]\n                                  The environment to run in\n  --quant-bridge-server-host TEXT\n                                  The host of the SAPI server\n  --quant-bridge-server-port INTEGER\n                                  The port of the SAPI server\n  --quant-bridge-emsx-broker TEXT\n                                  The EMSX broker to use (Optional).\n  --quant-bridge-emsx-account TEXT\n                                  The EMSX account to use (Optional).\n  --quant-bridge-emsx-team TEXT   The EMSX team to receive order events from (Optional).\n  --quant-bridge-openfigi-api-key TEXT\n                                  The Open FIGI API key to use for mapping options\n  --tt-user-name TEXT             Your Trading Technologies username\n  --tt-session-password TEXT      Your Trading Technologies session password\n  --tt-account-name TEXT          Your Trading Technologies account name\n  --tt-rest-app-key TEXT          Your Trading Technologies REST app key\n  --tt-rest-app-secret TEXT       Your Trading Technologies REST app secret\n  --tt-rest-environment TEXT      The REST environment to run in\n  --tt-order-routing-sender-comp-id TEXT\n                                  The order routing sender comp id to use\n  --kraken-api-key TEXT           Your Kraken API key\n  --kraken-api-secret TEXT        Your Kraken API secret\n  --kraken-verification-tier [Starter|Intermediate|Pro]\n                                  Your Kraken Verification Tier\n  --charles-schwab-user-name TEXT\n                                  Your Charles Schwab login ID\n  --charles-schwab-account-number TEXT\n                                  The CharlesSchwab account number\n  --bybit-api-key TEXT            Your Bybit API key\n  --bybit-api-secret TEXT         Your Bybit API secret\n  --bybit-vip-level [VIP0|VIP1|VIP2|VIP3|VIP4|VIP5|SupremeVIP|Pro1|Pro2|Pro3|Pro4|Pro5]\n                                  Your Bybit VIP Level\n  --bybit-use-testnet [live|paper|demo]\n                                  Whether the testnet should be used\n  --trade-station-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --trade-station-account-id TEXT\n                                  The TradeStation account Id\n  --alpaca-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --tastytrade-account-number TEXT\n                                  The Tastytrade account number\n  --eze-domain TEXT               Examples (broker provided): LIGHTSPEED, LIGHTSPEEDDELAY\n  --eze-locale TEXT               Examples (broker provided): GLOBAL, AMERICAS, LIVE, DELAYED\n  --eze-user-name TEXT            Your Eze Brokers username\n  --eze-password TEXT             Your Eze Brokers password\n  --eze-trading-account TEXT      Format: BANK;BRANCH;CUSTOMER;DEPOSIT\n  --dydx-private-key-hex TEXT     Your dYdX API private key in hex format\n  --dydx-address TEXT             Your dYdX wallet address\n  --dydx-subaccount-number INTEGER\n                                  Your dYdX subaccount number\n  --dydx-environment [live|paper]\n                                  Whether the developer sandbox should be used\n  --webull-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --webull-app-key TEXT           Your Webull App Key\n  --webull-app-secret TEXT        Your Webull App Secret\n  --webull-account-id TEXT        Your Webull account id\n  --webull-use-2fa BOOLEAN        Whether two-factor authentication (2FA) should be used (Optional).\n  --public-secret-key TEXT        Your Public.com API secret key\n  --public-account-number TEXT    Your Public.com account number. Public lets you have more than one account, so this\n                                  picks which one to trade.\n  --clearstreet-access-token TEXT\n                                  Your Clear Street API access token\n  --clearstreet-account-id TEXT   Your Clear Street account id, the numeric id of the account the algorithm trades\n  --ib-fix-user-name TEXT         Your Interactive Brokers user name\n  --ib-fix-account TEXT           Your Interactive Brokers account id\n  --polygon-api-key TEXT          Your Polygon.io API Key\n  --polygon-license-type [Individual|Business]\n                                  Select your Polygon.io subscription plan (Optional).\n  --coinapi-api-key TEXT          Your coinapi.io Api Key\n  --coinapi-product [Free|Startup|Streamer|Professional|Enterprise]\n                                  CoinApi pricing plan (https://www.coinapi.io/market-data-api/pricing)\n  --alpaca-api-key TEXT           Your Alpaca Api Key\n  --alpaca-api-secret TEXT        Your Alpaca Api Secret\n  --node TEXT                     The name or id of the live node to run on\n  --auto-restart BOOLEAN          Whether automatic algorithm restarting must be enabled\n  --notify-order-events BOOLEAN   Whether notifications must be sent for order events\n  --notify-insights BOOLEAN       Whether notifications must be sent for emitted insights\n  --notify-emails TEXT            A comma-separated list of 'email:subject' pairs configuring email-notifications. Wrap\n                                  a subject containing ',' in double quotes, e.g. 'a@x.com:\"Fills, orders\"'\n  --notify-webhooks TEXT          A comma-separated list of 'url:HEADER_1=VALUE_1:HEADER_2=VALUE_2:etc' pairs\n                                  configuring webhook-notifications. Wrap a url (with ',' or a ':' outside its scheme\n                                  and port) or a header (with ':' or ',') in double quotes, e.g.\n                                  '\"https://x.com/hook?t=1:2\":\"Auth=Bearer a:b\"'\n  --notify-sms TEXT               A comma-separated list of phone numbers configuring SMS-notifications\n  --notify-telegram TEXT          A comma-separated list of 'user/group Id:token(optional)' pairs configuring telegram-\n                                  notifications. Wrap a token containing ',' in double quotes\n  --live-cash-balance TEXT        A comma-separated list of currency:amount pairs of initial cash balance\n  --live-holdings TEXT            A comma-separated list of symbol:symbolId:quantity:averagePrice of initial portfolio\n                                  holdings\n  --push                          Push local modifications to the cloud before starting live trading\n  --open                          Automatically open the live results in the browser once the deployment starts\n  --show-secrets                  Show secrets as they are input\n  --no-browser                    Display OAuth URL without opening the browser\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/live/deploy.py](lean/commands/cloud/live/deploy.py)_\n\n### `lean cloud live liquidate`\n\nStops live trading and liquidates existing positions for a certain project.\n\n```\nUsage: lean cloud live liquidate [OPTIONS] PROJECT\n\n  Stops live trading and liquidates existing positions for a certain project.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/live/liquidate.py](lean/commands/cloud/live/liquidate.py)_\n\n### `lean cloud live stop`\n\nStops live trading for a certain project without liquidating existing positions.\n\n```\nUsage: lean cloud live stop [OPTIONS] PROJECT\n\n  Stops live trading for a certain project without liquidating existing positions.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/live/stop.py](lean/commands/cloud/live/stop.py)_\n\n### `lean cloud object-store delete`\n\nDelete a value from the organization's cloud object store.\n\n```\nUsage: lean cloud object-store delete [OPTIONS] KEY\n\n  Delete a value from the organization's cloud object store.\n\n  :param key: The desired key name to delete.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/object_store/delete.py](lean/commands/cloud/object_store/delete.py)_\n\n### `lean cloud object-store get`\n\nDownload an object store value to disk from the organization's cloud object store.\n\n```\nUsage: lean cloud object-store get [OPTIONS] [KEY]...\n\n  Download an object store value to disk from the organization's cloud object store.\n\n  :param key: The desired key to fetch, multiple can be provided.\n\nOptions:\n  --destination-folder TEXT  The destination folder to download the object store values, if not provided will use to\n                             current directory\n  --verbose                  Enable debug logging\n  --help                     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/object_store/get.py](lean/commands/cloud/object_store/get.py)_\n\n### `lean cloud object-store list`\n\nList all values for the given root key in the organization's cloud object store.\n\n```\nUsage: lean cloud object-store list [OPTIONS] [KEY]\n\n  List all values for the given root key in the organization's cloud object store.\n\n  :param key: The desired root key to list.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/object_store/list.py](lean/commands/cloud/object_store/list.py)_\n\n### `lean cloud object-store ls`\n\nAlias for 'list'\n\n```\nUsage: lean cloud object-store ls [OPTIONS] [KEY]\n\n  List all values for the given root key in the organization's cloud object store.\n\n  :param key: The desired root key to list.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/object_store/ls.py](lean/commands/cloud/object_store/ls.py)_\n\n### `lean cloud object-store properties`\n\nGet a value properties from the organization's cloud object store.\n\n```\nUsage: lean cloud object-store properties [OPTIONS] KEY\n\n  Get a value properties from the organization's cloud object store.\n\n  :param key: The desired key to fetch the properties for.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/object_store/properties.py](lean/commands/cloud/object_store/properties.py)_\n\n### `lean cloud object-store set`\n\nSets the data to the given key in the organization's cloud object store.\n\n```\nUsage: lean cloud object-store set [OPTIONS] KEY PATH\n\n  Sets the data to the given key in the organization's cloud object store.\n\n  :param key: The key to set the data to. :param path: Path to the file containing the object data.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/object_store/set.py](lean/commands/cloud/object_store/set.py)_\n\n### `lean cloud optimize`\n\nOptimize a project in the cloud.\n\n```\nUsage: lean cloud optimize [OPTIONS] PROJECT\n\n  Optimize a project in the cloud.\n\n  PROJECT must be the name or id of the project to optimize.\n\n  An interactive prompt will be shown to configure the optimizer. If --target is given the command runs in non-\n  interactive mode. In this mode the CLI does not prompt for input and the following options become required: --target,\n  --target-direction, --parameter, --node and --parallel-nodes.\n\n  In non-interactive mode the --parameter option can be provided multiple times to configure multiple parameters:\n  - --parameter <name> <min value> <max value> <step size>\n  - --parameter my-first-parameter 1 10 0.5 --parameter my-second-parameter 20 30 5\n\n  In non-interactive mode the --constraint option can be provided multiple times to configure multiple constraints:\n  - --constraint \"<statistic> <operator> <value>\"\n  - --constraint \"Sharpe Ratio >= 0.5\" --constraint \"Drawdown < 0.25\"\n\n  If the project that has to be optimized has been pulled to the local drive with `lean cloud pull` it is possible to\n  use the --push option to push local modifications to the cloud before running the optimization.\n\nOptions:\n  --target TEXT                   The target statistic of the optimization\n  --target-direction [min|max]    Whether the target must be minimized or maximized\n  --parameter <TEXT FLOAT FLOAT FLOAT>...\n                                  The 'parameter min max step' pairs configuring the parameters to optimize\n  --constraint TEXT               The 'statistic operator value' pairs configuring the constraints of the optimization\n  --node [O2-8|O4-12|O8-16]       The node type to run the optimization on\n  --parallel-nodes INTEGER        The number of nodes that may be run in parallel\n  --name TEXT                     The name of the optimization (a random one is generated if not specified)\n  --push                          Push local modifications to the cloud before starting the optimization\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/optimize.py](lean/commands/cloud/optimize.py)_\n\n### `lean cloud pull`\n\nPull projects from QuantConnect to the local drive.\n\n```\nUsage: lean cloud pull [OPTIONS]\n\n  Pull projects from QuantConnect to the local drive.\n\n  This command overrides the content of local files with the content of their respective counterparts in the cloud.\n\n  This command will not delete local files for which there is no counterpart in the cloud.\n\nOptions:\n  --project TEXT   Name or id of the project to pull (all cloud projects if not specified)\n  --pull-bootcamp  Pull Boot Camp projects (disabled by default)\n  --encrypt        Pull your cloud files and encrypt them before saving on your local drive\n  --decrypt        Pull your cloud files and decrypt them before saving on your local drive\n  --key FILE       Path to the encryption key to use\n  --verbose        Enable debug logging\n  --help           Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/pull.py](lean/commands/cloud/pull.py)_\n\n### `lean cloud push`\n\nPush local projects to QuantConnect.\n\n```\nUsage: lean cloud push [OPTIONS]\n\n  Push local projects to QuantConnect.\n\n  This command overrides the content of cloud files with the content of their respective local counterparts.\n\n  This command will delete cloud files which don't have a local counterpart.\n\nOptions:\n  --project DIRECTORY  Path to the local project to push (all local projects if not specified)\n  --encrypt            Push your local files and encrypt them before saving on the cloud\n  --decrypt            Push your local files and decrypt them before saving on the cloud\n  --key FILE           Path to the encryption key to use\n  --force              Force push even if there's a lock conflict\n  --verbose            Enable debug logging\n  --help               Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/push.py](lean/commands/cloud/push.py)_\n\n### `lean cloud status`\n\nShow the live trading status of a project in the cloud.\n\n```\nUsage: lean cloud status [OPTIONS] PROJECT\n\n  Show the live trading status of a project in the cloud.\n\n  PROJECT must be the name or the id of the project to show the status for.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/cloud/status.py](lean/commands/cloud/status.py)_\n\n### `lean config get`\n\nGet the current value of a configurable option.\n\n```\nUsage: lean config get [OPTIONS] KEY\n\n  Get the current value of a configurable option.\n\n  Sensitive options like credentials cannot be retrieved this way for security reasons. Please open ~/.lean/credentials\n  if you want to see your currently stored credentials.\n\n  Run `lean config list` to show all available options.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/config/get.py](lean/commands/config/get.py)_\n\n### `lean config list`\n\nList the configurable options and their current values.\n\n```\nUsage: lean config list [OPTIONS]\n\n  List the configurable options and their current values.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/config/list.py](lean/commands/config/list.py)_\n\n### `lean config set`\n\nSet a configurable option.\n\n```\nUsage: lean config set [OPTIONS] KEY VALUE\n\n  Set a configurable option.\n\n  Run `lean config list` to show all available options.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/config/set.py](lean/commands/config/set.py)_\n\n### `lean config unset`\n\nUnset a configurable option.\n\n```\nUsage: lean config unset [OPTIONS] KEY\n\n  Unset a configurable option.\n\n  Run `lean config list` to show all available options.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/config/unset.py](lean/commands/config/unset.py)_\n\n### `lean create-project`\n\nAlias for 'project-create'\n\n```\nUsage: lean create-project [OPTIONS] NAME\n\n  Create a new project containing starter code.\n\n  If NAME is a path containing subdirectories those will be created automatically.\n\n  The default language can be set using `lean config set default-language python/csharp`.\n\nOptions:\n  -l, --language [python|csharp]  The language of the project to create\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/create_project.py](lean/commands/create_project.py)_\n\n### `lean data download`\n\nPurchase and download data directly from QuantConnect or download from supported data providers\n\n```\nUsage: lean data download [OPTIONS]\n\n  Purchase and download data directly from QuantConnect or download from supported data providers\n\n  1. Acquire Data from QuantConnect Datasets: Purchase and seamlessly download data directly from QuantConnect.\n\n  2. Streamlined Access from supported data providers:\n\n      - Choose your preferred historical data provider.\n\n      - Initiate hassle-free downloads from our supported providers.\n\n  We have 2 options:\n\n      - interactive (follow instruction in lean-cli)\n\n      - no interactive (write arguments in command line)\n\n  An interactive wizard will show to walk you through the process of selecting data, accepting the CLI API Access and\n  Data Agreement and payment. After this wizard the selected data will be downloaded automatically.\n\n  If --dataset is given the command runs in non-interactive mode. In this mode the CLI does not prompt for input or\n  confirmation but only halts when the agreement must be accepted. In non-interactive mode all options specific to the\n  selected dataset are required.\n\n  See the following url for the data that can be purchased and downloaded with this command:\n  https://www.quantconnect.com/datasets\n\nOptions:\n  --data-provider-historical [Interactive Brokers|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Kraken|CharlesSchwab|IQFeed|Polygon|FactSet|AlphaVantage|CoinApi|ThetaData|QuantConnect|Local|Quant Bridge|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Databento|Webull|Public]\n                                  The name of the downloader data provider.\n  --ib-user-name TEXT             Your Interactive Brokers username\n  --ib-account TEXT               Your Interactive Brokers account id\n  --ib-password TEXT              Your Interactive Brokers password\n  --ib-host TEXT                  External Interactive Brokers Gateway Host (Optional).\n  --ib-port TEXT                  External Interactive Brokers Gateway Port (Optional).\n  --ib-weekly-restart-utc-time TEXT\n                                  Weekly restart UTC time (hh:mm:ss). Each week on Sunday your algorithm is restarted at\n                                  this time, and will require 2FA verification. This is required by Interactive Brokers.\n                                  Use this option explicitly to override the default value. (Optional).\n  --oanda-account-id TEXT         Your OANDA account id\n  --oanda-access-token TEXT       Your OANDA API token\n  --oanda-environment [Practice|Trade]\n                                  The environment to run in, Practice for fxTrade Practice, Trade for fxTrade\n  --bitfinex-api-key TEXT         Your Bitfinex API key\n  --bitfinex-api-secret TEXT      Your Bitfinex API secret\n  --coinbase-api-name TEXT        Your Coinbase Advanced Trade API name from file.\n  --coinbase-api-private-key TEXT\n                                  Your Coinbase Advanced Trade API private key from file.\n  --binance-exchange-name [Binance|BinanceUS|Binance-USDM-Futures|Binance-COIN-Futures]\n                                  Binance exchange name [Binance, BinanceUS, Binance-USDM-Futures, Binance-COIN-Futures]\n  --binance-api-key TEXT          Your Binance API key\n  --binanceus-api-key TEXT        Your Binance API key\n  --binance-api-secret TEXT       Your Binance API secret\n  --binanceus-api-secret TEXT     Your Binance API secret\n  --kraken-api-key TEXT           Your Kraken API key\n  --kraken-api-secret TEXT        Your Kraken API secret\n  --kraken-verification-tier [Starter|Intermediate|Pro]\n                                  Your Kraken Verification Tier\n  --charles-schwab-user-name TEXT\n                                  Your Charles Schwab login ID\n  --charles-schwab-account-number TEXT\n                                  The CharlesSchwab account number\n  --iqfeed-iqconnect TEXT         The path to the IQConnect binary\n  --iqfeed-username TEXT          Your IQFeed username\n  --iqfeed-password TEXT          Your IQFeed password\n  --iqfeed-version TEXT           The product version of your IQFeed developer account\n  --iqfeed-host TEXT              The IQFeed host address (Optional).\n  --polygon-api-key TEXT          Your Polygon.io API Key\n  --polygon-license-type [Individual|Business]\n                                  Select your Polygon.io subscription plan (Optional).\n  --factset-auth-config-file FILE\n                                  The path to the FactSet authentication configuration file\n  --alpha-vantage-api-key TEXT    Your Alpha Vantage Api Key\n  --alpha-vantage-price-plan [Free|Plan30|Plan75|Plan150|Plan300|Plan600|Plan1200]\n                                  Your Alpha Vantage Premium API Key plan\n  --coinapi-api-key TEXT          Your coinapi.io Api Key\n  --coinapi-product [Free|Startup|Streamer|Professional|Enterprise]\n                                  CoinApi pricing plan (https://www.coinapi.io/market-data-api/pricing)\n  --thetadata-ws-url TEXT         The ThetaData host address (Optional).\n  --thetadata-rest-url TEXT       The ThetaData host address (Optional).\n  --thetadata-subscription-plan [Free|Value|Standard|Pro]\n                                  Your ThetaData subscription price plan\n  --quant-bridge-connection-type [DAPI|SAPI]\n                                  Quant Bridge Connection Type [DAPI, SAPI]\n  --quant-bridge-environment [Production|Beta]\n                                  The environment to run in\n  --quant-bridge-server-host TEXT\n                                  The host of the Quant Bridge server\n  --quant-bridge-server-port INTEGER\n                                  The port of the Quant Bridge server\n  --quant-bridge-openfigi-api-key TEXT\n                                  The Open FIGI API key to use for mapping options\n  --quant-bridge-server-auth-id TEXT\n                                  The Auth ID of the Quant Bridge server\n  --bybit-api-key TEXT            Your Bybit API key\n  --bybit-api-secret TEXT         Your Bybit API secret\n  --trade-station-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --trade-station-account-id TEXT\n                                  The TradeStation account Id\n  --alpaca-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --tastytrade-account-number TEXT\n                                  The Tastytrade account number\n  --eze-domain TEXT               Examples (broker provided): LIGHTSPEED, LIGHTSPEEDDELAY\n  --eze-locale TEXT               Examples (broker provided): GLOBAL, AMERICAS, LIVE, DELAYED\n  --eze-user-name TEXT            Your Eze Brokers username\n  --eze-password TEXT             Your Eze Brokers password\n  --dydx-private-key-hex TEXT     Your dYdX API private key in hex format\n  --dydx-address TEXT             Your dYdX wallet address\n  --dydx-subaccount-number INTEGER\n                                  Your dYdX subaccount number\n  --databento-api-key TEXT        Your Databento.com API Key\n  --webull-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --webull-app-key TEXT           Your Webull App Key\n  --webull-app-secret TEXT        Your Webull App Secret\n  --webull-account-id TEXT        Your Webull account id\n  --webull-use-2fa BOOLEAN        Whether two-factor authentication (2FA) should be used (Optional).\n  --public-secret-key TEXT        Your Public.com API secret key\n  --public-account-number TEXT    Your Public.com account number. Public lets you have more than one account, so this\n                                  picks which one to trade.\n  --dataset TEXT                  The name of the dataset to download non-interactively\n  --overwrite                     Overwrite existing local data\n  -y, --yes                       Automatically confirm payment confirmation prompts\n  --data-type [Trade|Quote|Bulk|Universe|OpenInterest]\n                                  Specify the type of historical data\n  --resolution [Tick|Second|Minute|Hour|Daily]\n                                  Specify the resolution of the historical data\n  --security-type [Equity|Index|Forex|Cfd|Future|Crypto|CryptoFuture|Option|IndexOption|Commodity|FutureOption]\n                                  Specify the security type of the historical data\n  --market TEXT                   Specify the market name for tickers (e.g., 'USA', 'NYMEX', 'Binance') (if not provided\n                                  or empty the default market for the requested security type will be used)\n  --ticker TEXT                   Specify comma separated list of tickers to use for historical data request.\n  --start TEXT                    Specify the start date for the historical data request in the format yyyyMMdd.\n  --end TEXT                      Specify the end date for the historical data request in the format yyyyMMdd. (defaults\n                                  to today)\n  --image TEXT                    The LEAN engine image to use (defaults to quantconnect/lean:latest)\n  --update                        Pull the LEAN engine image before running the Downloader Data Provider\n  --no-update                     Use the local LEAN engine image instead of pulling the latest version\n  --project TEXT                  Name or id of the cloud project to use for brokerage OAuth authentication\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/data/download.py](lean/commands/data/download.py)_\n\n### `lean data generate`\n\nGenerate random market data.\n\n```\nUsage: lean data generate [OPTIONS]\n\n  Generate random market data.\n\n  This uses the random data generator in LEAN to generate realistic market data using a Brownian motion model.\n  This generator supports the following security types, tick types and resolutions:\n  | Security type | Generated tick types | Supported resolutions                |\n  | ------------- | -------------------- | ------------------------------------ |\n  | Equity        | Trade                | Tick, Second, Minute, Hour and Daily |\n  | Forex         | Quote                | Tick, Second, Minute, Hour and Daily |\n  | CFD           | Quote                | Tick, Second, Minute, Hour and Daily |\n  | Future        | Trade and Quote      | Tick, Second, Minute, Hour and Daily |\n  | Crypto        | Trade and Quote      | Tick, Second, Minute, Hour and Daily |\n  | Option        | Trade and Quote      | Minute                               |\n\n  The following data densities are available:\n  - Dense: at least one data point per resolution step.\n  - Sparse: at least one data point per 5 resolution steps.\n  - VerySparse: at least one data point per 50 resolution steps.\n\n  Example which generates minute data for 100 equity symbols since 2015-01-01:\n  $ lean data generate --start=20150101 --symbol-count=100\n\n  Example which generates daily data for 100 crypto symbols since 2015-01-01:\n  $ lean data generate --start=20150101 --symbol-count=100 --security-type=Crypto --resolution=Daily\n\n  By default the official LEAN engine image is used. You can override this using the --image option. Alternatively you\n  can set the default engine image for all commands using `lean config set engine-image <image>`.\n\nOptions:\n  --start [yyyyMMdd]              Start date for the data to generate in yyyyMMdd format  [required]\n  --end [yyyyMMdd]                End date for the data to generate in yyyyMMdd format (defaults to today)\n  --symbol-count INTEGER RANGE    The number of symbols to generate data for  [x>=0]\n  --tickers TEXT                  Comma separated list of tickers to use for generated data\n  --security-type [Equity|Forex|Cfd|Future|Crypto|Option]\n                                  The security type to generate data for (defaults to Equity)\n  --resolution [Tick|Second|Minute|Hour|Daily]\n                                  The resolution of the generated data (defaults to Minute)\n  --data-density [Dense|Sparse|VerySparse]\n                                  The density of the generated data (defaults to Dense)\n  --include-coarse BOOLEAN        Whether coarse universe data should be generated for Equity data (defaults to True)\n  --market TEXT                   The market to generate data for (defaults to standard market for the security type)\n  --quote-trade-ratio FLOAT       The ratio of generated quotes to generated trades. Values larger than 1 mean more\n                                  quotes than trades. Only used for Option, Future and Crypto (defaults to 1)\n  --random-seed INTEGER RANGE     The random number generator seed. Defaults to None, which means no seed will be used\n                                  [x>=0]\n  --ipo-percentage FLOAT          The probability each equity generated will have an IPO event. Note that this is not\n                                  the total probability for all symbols generated. Only used for Equity (defaults to\n                                  5.0)\n  --rename-percentage FLOAT       The probability each equity generated will have a rename event. Note that this is not\n                                  the total probability for all symbols generated. Only used for Equity (defaults to\n                                  30.0)\n  --splits-percentage FLOAT       The probability each equity generated will have a stock split event. Note that this is\n                                  not the total probability for all symbols generated. Only used for Equity (defaults to\n                                  15.0)\n  --dividends-percentage FLOAT    The probability each equity generated will have dividends. Note that this is not the\n                                  probability for all symbols genearted. Only used for Equity (defaults to 60.0)\n  --dividend-every-quarter-percentage FLOAT\n                                  The probability each equity generated will have a dividend event every quarter. Note\n                                  that this is not the total probability for all symbols generated. Only used for Equity\n                                  (defaults to 30.0)\n  --option-price-engine TEXT      The stochastic process, and returns new pricing engine to run calculations for that\n                                  option (defaults to BaroneAdesiWhaleyApproximationEngine)\n  --volatility-model-resolution [Tick|Second|Minute|Hour|Daily]\n                                  The volatility model period span (defaults to Daily)\n  --chain-symbol-count INTEGER RANGE\n                                  The size of the option chain (defaults to 10)  [x>=0]\n  --image TEXT                    The LEAN engine image to use (defaults to quantconnect/lean:latest)\n  --update                        Pull the LEAN engine image before running the generator\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/data/generate.py](lean/commands/data/generate.py)_\n\n### `lean decrypt`\n\nDecrypt your local project using the specified decryption key.\n\n```\nUsage: lean decrypt [OPTIONS] PROJECT\n\n  Decrypt your local project using the specified decryption key.\n\nOptions:\n  --key FILE  Path to the decryption key to use\n  --verbose   Enable debug logging\n  --help      Show this message and exit.\n```\n\n_See code: [lean/commands/decrypt.py](lean/commands/decrypt.py)_\n\n### `lean delete-project`\n\nAlias for 'project-delete'\n\n```\nUsage: lean delete-project [OPTIONS] PROJECT\n\n  Delete a project locally and in the cloud if it exists.\n\n  The project is selected by name or cloud id.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/delete_project.py](lean/commands/delete_project.py)_\n\n### `lean encrypt`\n\nEncrypt your local project using the specified encryption key.\n\n```\nUsage: lean encrypt [OPTIONS] PROJECT\n\n  Encrypt your local project using the specified encryption key.\n\nOptions:\n  --key FILE  Path to the encryption key to use\n  --verbose   Enable debug logging\n  --help      Show this message and exit.\n```\n\n_See code: [lean/commands/encrypt.py](lean/commands/encrypt.py)_\n\n### `lean init`\n\nScaffold a Lean configuration file and data directory.\n\n```\nUsage: lean init [OPTIONS]\n\n  Scaffold a Lean configuration file and data directory.\n\nOptions:\n  --organization TEXT             The name or id of the organization the Lean CLI will be scaffolded for\n  -l, --language [python|csharp]  The default language to use for new projects\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/init.py](lean/commands/init.py)_\n\n### `lean library add`\n\nAdd a custom library to a project.\n\n```\nUsage: lean library add [OPTIONS] PROJECT NAME\n\n  Add a custom library to a project.\n\n  PROJECT must be the path to the project.\n\n  NAME must be either the name of a NuGet package (for C# projects), a PyPI package (for Python projects), or a path to\n  a Lean CLI library.\n\n  If --version is not given, and the library is a NuGet or PyPI package the package, it is pinned to the latest\n  compatible version. For C# projects, this is the latest available version. For Python projects, this is the latest\n  version compatible with Python 3.8 (which is what the Docker images use). For Lean CLI library projects, this is\n  ignored.\n\n  Custom C# libraries are added to your project's .csproj file, which is then restored if dotnet is on your PATH and the\n  --no-local flag has not been given.\n\n  Custom Python libraries are added to your project's requirements.txt file and are installed in your local Python\n  environment so you get local autocomplete for the library. The last step can be skipped with the --no-local flag.\n\n  C# example usage:\n  $ lean library add \"My CSharp Project\" Microsoft.ML\n  $ lean library add \"My CSharp Project\" Microsoft.ML --version 1.5.5\n  $ lean library add \"My CSharp Project\" \"Library/My CSharp Library\"\n\n  Python example usage:\n  $ lean library add \"My Python Project\" tensorflow\n  $ lean library add \"My Python Project\" tensorflow --version 2.5.0\n  $ lean library add \"My Python Project\" \"Library/My Python Library\"\n\nOptions:\n  --version TEXT  The version of the library to add (defaults to latest compatible version)\n  --no-local      Skip making changes to your local environment\n  --verbose       Enable debug logging\n  --help          Show this message and exit.\n```\n\n_See code: [lean/commands/library/add.py](lean/commands/library/add.py)_\n\n### `lean library remove`\n\nRemove a custom library from a project.\n\n```\nUsage: lean library remove [OPTIONS] PROJECT NAME\n\n  Remove a custom library from a project.\n\n  PROJECT must be the path to the project directory.\n\n  NAME must be either the name of the NuGet package (for C# projects), the PyPI package (for Python projects), or the\n  path to the Lean CLI library to remove.\n\n  Custom C# libraries are removed from the project's .csproj file, which is then restored if dotnet is on your PATH and\n  the --no-local flag has not been given.\n\n  Custom Python libraries are removed from the project's requirements.txt file.\n\n  C# example usage:\n  $ lean library remove \"My CSharp Project\" Microsoft.ML\n\n  Python example usage:\n  $ lean library remove \"My Python Project\" tensorflow\n\nOptions:\n  --no-local  Skip making changes to your local environment\n  --verbose   Enable debug logging\n  --help      Show this message and exit.\n```\n\n_See code: [lean/commands/library/remove.py](lean/commands/library/remove.py)_\n\n### `lean live`\n\nInteract with the local machine.\n\n```\nUsage: lean live [OPTIONS] COMMAND [ARGS]...\n\n  Interact with the local machine.\n\nOptions:\n  --help  Show this message and exit.\n\nCommands:\n  add-security  Represents a command to add a security to the algorithm.\n  cancel-order  Represents a command to cancel a specific order by id.\n  command       Send a command to a local running live trading project.\n  deploy        Start live trading a project locally using Docker.\n  liquidate     Liquidate the given symbol from the latest deployment of the given project.\n  stop          Stop an already running local live trading project.\n  submit-order  Represents a command to submit an order to the algorithm.\n  update-order  Represents a command to update a specific order by id.\n```\n\n### `lean live add-security`\n\nRepresents a command to add a security to the algorithm.\n\n```\nUsage: lean live add-security [OPTIONS] PROJECT\n\n  Represents a command to add a security to the algorithm.\n\nOptions:\n  --ticker TEXT            The ticker of the symbol to add  [required]\n  --market TEXT            The market of the symbol to add  [required]\n  --security-type TEXT     The security type of the symbol to add  [required]\n  --resolution TEXT        The resolution of the symbol to add\n  --fill-data-forward      The fill forward behavior, true to fill forward, false otherwise - defaults to true\n  --leverage DECIMAL       The leverage for the security, defaults to 2 for equity, 50 for forex, and 1 for everything\n                           else\n  --extended-market-hours  The extended market hours flag, true to allow pre/post market data, false for only in market\n                           data\n  --lean-config FILE       The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                Enable debug logging\n  --help                   Show this message and exit.\n```\n\n_See code: [lean/commands/live/add_security.py](lean/commands/live/add_security.py)_\n\n### `lean live cancel-order`\n\nRepresents a command to cancel a specific order by id.\n\n```\nUsage: lean live cancel-order [OPTIONS] PROJECT\n\n  Represents a command to cancel a specific order by id.\n\nOptions:\n  --order-id INTEGER  The order id to be cancelled  [required]\n  --lean-config FILE  The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose           Enable debug logging\n  --help              Show this message and exit.\n```\n\n_See code: [lean/commands/live/cancel_order.py](lean/commands/live/cancel_order.py)_\n\n### `lean live command`\n\nSend a command to a local running live trading project.\n\n```\nUsage: lean live command [OPTIONS] PROJECT\n\n  Send a command to a local running live trading project.\n\nOptions:\n  --data TEXT         The command to send, 'str' representation of a 'dict' e.g. \"{ \\\"target\\\": \\\"BTCUSD\\\",\n                      \\\"$type\\\":\\\"MyCommand\\\" }\"\n  --lean-config FILE  The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose           Enable debug logging\n  --help              Show this message and exit.\n```\n\n_See code: [lean/commands/live/command.py](lean/commands/live/command.py)_\n\n### `lean live deploy`\n\nStart live trading a project locally using Docker.\n\n```\nUsage: lean live deploy [OPTIONS] PROJECT\n\n  Start live trading a project locally using Docker.\n\n  If PROJECT is a directory, the algorithm in the main.py or Main.cs file inside it will be executed.\n  If PROJECT is a file, the algorithm in the specified file will be executed.\n\n  By default an interactive wizard is shown letting you configure the brokerage and live data provider to use. If\n  --environment, --brokerage or --data-provider-live are given the command runs in non-interactive mode. In this mode\n  the CLI does not prompt for input.\n\n  If --environment is given it must be the name of a live environment in the Lean configuration.\n\n  If --brokerage and --data-provider-live are given, the options specific to the given brokerage/live data provider must\n  also be given. The Lean config is used as fallback when a brokerage/live data provider-specific option hasn't been\n  passed in. If a required option is not given and cannot be found in the Lean config the command aborts.\n\n  By default the official LEAN engine image is used. You can override this using the --image option. Alternatively you\n  can set the default engine image for all commands using `lean config set engine-image <image>`.\n\nOptions:\n  --environment TEXT              The environment to use\n  --output DIRECTORY              Directory to store results in (defaults to PROJECT/live/TIMESTAMP)\n  -d, --detach                    Run the live deployment in a detached Docker container and return immediately\n  --brokerage [Paper Trading|Interactive Brokers|Tradier|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Zerodha|Samco|Quant Bridge|Trading Technologies|Kraken|CharlesSchwab|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Webull|Public|ClearStreet]\n                                  The brokerage to use\n  --data-provider-live [Interactive Brokers|Tradier|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Zerodha|Samco|Quant Bridge|Trading Technologies|Kraken|CharlesSchwab|IQFeed|Polygon|CoinApi|ThetaData|Custom data only|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Databento]\n                                  The live data provider to use\n  --data-provider-historical [Interactive Brokers|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Kraken|CharlesSchwab|IQFeed|Polygon|FactSet|AlphaVantage|CoinApi|ThetaData|QuantConnect|Local|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Databento|Webull|Public]\n                                  Update the Lean configuration file to retrieve data from the given historical provider\n  --ib-user-name TEXT             Your Interactive Brokers username\n  --ib-account TEXT               Your Interactive Brokers account id\n  --ib-password TEXT              Your Interactive Brokers password\n  --ib-host TEXT                  External Interactive Brokers Gateway Host (Optional).\n  --ib-port TEXT                  External Interactive Brokers Gateway Port (Optional).\n  --ib-weekly-restart-utc-time TEXT\n                                  Weekly restart UTC time (hh:mm:ss). Each week on Sunday your algorithm is restarted at\n                                  this time, and will require 2FA verification. This is required by Interactive Brokers.\n                                  Use this option explicitly to override the default value. (Optional).\n  --ib-financial-advisors-group-filter TEXT\n                                  Use this field to filter data by a specific financial advisor group within your\n                                  Interactive Brokers account. Leave blank to include all groups. (Optional).\n  --tradier-account-id TEXT       Your Tradier account id\n  --tradier-access-token TEXT     Your Tradier access token\n  --tradier-environment [live|paper]\n                                  Whether the developer sandbox should be used\n  --oanda-account-id TEXT         Your OANDA account id\n  --oanda-access-token TEXT       Your OANDA API token\n  --oanda-environment [Practice|Trade]\n                                  The environment to run in, Practice for fxTrade Practice, Trade for fxTrade\n  --bitfinex-api-key TEXT         Your Bitfinex API key\n  --bitfinex-api-secret TEXT      Your Bitfinex API secret\n  --coinbase-api-name TEXT        Your Coinbase Advanced Trade API name from file.\n  --coinbase-api-private-key TEXT\n                                  Your Coinbase Advanced Trade API private key from file.\n  --binance-exchange-name [Binance|BinanceUS|Binance-USDM-Futures|Binance-COIN-Futures]\n                                  Binance exchange name [Binance, BinanceUS, Binance-USDM-Futures, Binance-COIN-Futures]\n  --binance-api-key TEXT          Your Binance API key\n  --binanceus-api-key TEXT        Your Binance API key\n  --binance-api-secret TEXT       Your Binance API secret\n  --binanceus-api-secret TEXT     Your Binance API secret\n  --binance-use-testnet [live|paper]\n                                  Whether the testnet should be used\n  --zerodha-api-key TEXT          Your Kite Connect API key\n  --zerodha-access-token TEXT     Your Kite Connect access token\n  --zerodha-product-type [mis|cnc|nrml]\n                                  MIS if you are targeting intraday products, CNC if you are targeting delivery\n                                  products, NRML if you are targeting carry forward products\n  --zerodha-trading-segment [equity|commodity]\n                                  EQUITY if you are trading equities on NSE or BSE, COMMODITY if you are trading\n                                  commodities on MCX\n  --zerodha-history-subscription [true|false]\n                                  Whether you have a history API subscription for Zerodha\n  --samco-client-id TEXT          Your Samco account Client ID\n  --samco-client-password TEXT    Your Samco account password\n  --samco-year-of-birth TEXT      Your year of birth (YYYY) registered with Samco\n  --samco-product-type [mis|cnc|nrml]\n                                  MIS if you are targeting intraday products, CNC if you are targeting delivery\n                                  products, NRML if you are targeting carry forward products\n  --samco-trading-segment [equity|commodity]\n                                  EQUITY if you are trading equities on NSE or BSE, COMMODITY if you are trading\n                                  commodities on MCX\n  --quant-bridge-connection-type [DAPI|SAPI]\n                                  Quant Bridge Connection Type [DAPI, SAPI]\n  --quant-bridge-environment [Production|Beta]\n                                  The environment to run in\n  --quant-bridge-server-host TEXT\n                                  The host of the Quant Bridge server\n  --quant-bridge-server-port INTEGER\n                                  The port of the Quant Bridge server\n  --quant-bridge-emsx-broker TEXT\n                                  The EMSX broker to use (Optional).\n  --quant-bridge-emsx-account TEXT\n                                  The EMSX account to use (Optional).\n  --quant-bridge-emsx-team TEXT   The EMSX team to receive order events from (Optional).\n  --quant-bridge-openfigi-api-key TEXT\n                                  The Open FIGI API key to use for mapping options\n  --quant-bridge-server-auth-id TEXT\n                                  The Auth ID of the Quant Bridge server\n  --tt-user-name TEXT             Your Trading Technologies username\n  --tt-session-password TEXT      Your Trading Technologies session password\n  --tt-account-name TEXT          Your Trading Technologies account name\n  --tt-rest-app-key TEXT          Your Trading Technologies REST app key\n  --tt-rest-app-secret TEXT       Your Trading Technologies REST app secret\n  --tt-rest-environment TEXT      The REST environment to run in\n  --tt-order-routing-sender-comp-id TEXT\n                                  The order routing sender comp id to use\n  --tt-market-data-sender-comp-id TEXT\n                                  The market data sender comp id to use\n  --tt-market-data-target-comp-id TEXT\n                                  The market data target comp id to use\n  --tt-market-data-host TEXT      The host of the market data server\n  --tt-market-data-port TEXT      The port of the market data server\n  --tt-order-routing-target-comp-id TEXT\n                                  The order routing target comp id to use\n  --tt-order-routing-host TEXT    The host of the order routing server\n  --tt-order-routing-port TEXT    The port of the order routing server\n  --tt-log-fix-messages BOOLEAN   Whether FIX messages should be logged (Optional).\n  --kraken-api-key TEXT           Your Kraken API key\n  --kraken-api-secret TEXT        Your Kraken API secret\n  --kraken-verification-tier [Starter|Intermediate|Pro]\n                                  Your Kraken Verification Tier\n  --charles-schwab-user-name TEXT\n                                  Your Charles Schwab login ID\n  --charles-schwab-account-number TEXT\n                                  The CharlesSchwab account number\n  --bybit-api-key TEXT            Your Bybit API key\n  --bybit-api-secret TEXT         Your Bybit API secret\n  --bybit-vip-level [VIP0|VIP1|VIP2|VIP3|VIP4|VIP5|SupremeVIP|Pro1|Pro2|Pro3|Pro4|Pro5]\n                                  Your Bybit VIP Level\n  --bybit-use-testnet [live|paper|demo]\n                                  Whether the testnet should be used\n  --trade-station-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --trade-station-account-id TEXT\n                                  The TradeStation account Id\n  --alpaca-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --tastytrade-account-number TEXT\n                                  The Tastytrade account number\n  --eze-domain TEXT               Examples (broker provided): LIGHTSPEED, LIGHTSPEEDDELAY\n  --eze-locale TEXT               Examples (broker provided): GLOBAL, AMERICAS, LIVE, DELAYED\n  --eze-user-name TEXT            Your Eze Brokers username\n  --eze-password TEXT             Your Eze Brokers password\n  --eze-trading-account TEXT      Format: BANK;BRANCH;CUSTOMER;DEPOSIT\n  --dydx-private-key-hex TEXT     Your dYdX API private key in hex format\n  --dydx-address TEXT             Your dYdX wallet address\n  --dydx-subaccount-number INTEGER\n                                  Your dYdX subaccount number\n  --dydx-environment [live|paper]\n                                  Whether the developer sandbox should be used\n  --webull-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --webull-app-key TEXT           Your Webull App Key\n  --webull-app-secret TEXT        Your Webull App Secret\n  --webull-account-id TEXT        Your Webull account id\n  --webull-use-2fa BOOLEAN        Whether two-factor authentication (2FA) should be used (Optional).\n  --public-secret-key TEXT        Your Public.com API secret key\n  --public-account-number TEXT    Your Public.com account number. Public lets you have more than one account, so this\n                                  picks which one to trade.\n  --clearstreet-access-token TEXT\n                                  Your Clear Street API access token\n  --clearstreet-account-id TEXT   Your Clear Street account id, the numeric id of the account the algorithm trades\n  --ib-enable-delayed-streaming-data BOOLEAN\n                                  Whether delayed data may be used when your algorithm subscribes to a security you\n                                  don't have a market data subscription for (Optional).\n  --charles-schwab-enable-delayed-streaming-data BOOLEAN\n                                  Whether delayed data may be used when your algorithm subscribes to a security you\n                                  don't have a market data subscription for (Optional).\n  --iqfeed-iqconnect TEXT         The path to the IQConnect binary\n  --iqfeed-username TEXT          Your IQFeed username\n  --iqfeed-password TEXT          Your IQFeed password\n  --iqfeed-version TEXT           The product version of your IQFeed developer account\n  --iqfeed-host TEXT              The IQFeed host address (Optional).\n  --polygon-api-key TEXT          Your Polygon.io API Key\n  --polygon-license-type [Individual|Business]\n                                  Select your Polygon.io subscription plan (Optional).\n  --coinapi-api-key TEXT          Your coinapi.io Api Key\n  --coinapi-product [Free|Startup|Streamer|Professional|Enterprise]\n                                  CoinApi pricing plan (https://www.coinapi.io/market-data-api/pricing)\n  --thetadata-ws-url TEXT         The ThetaData host address (Optional).\n  --thetadata-rest-url TEXT       The ThetaData host address (Optional).\n  --thetadata-subscription-plan [Free|Value|Standard|Pro]\n                                  Your ThetaData subscription price plan\n  --trade-station-enable-delayed-streaming-data BOOLEAN\n                                  Whether delayed data may be used when your algorithm subscribes to a security you\n                                  don't have a market data subscription for (Optional).\n  --alpaca-api-key TEXT           Your Alpaca Api Key\n  --alpaca-api-secret TEXT        Your Alpaca Api Secret\n  --databento-api-key TEXT        Your Databento.com API Key\n  --factset-auth-config-file FILE\n                                  The path to the FactSet authentication configuration file\n  --alpha-vantage-api-key TEXT    Your Alpha Vantage Api Key\n  --alpha-vantage-price-plan [Free|Plan30|Plan75|Plan150|Plan300|Plan600|Plan1200]\n                                  Your Alpha Vantage Premium API Key plan\n  --release                       Compile C# projects in release configuration instead of debug\n  --image TEXT                    The LEAN engine image to use (defaults to quantconnect/lean:latest)\n  --python-venv TEXT              The path of the python virtual environment to be used\n  --live-cash-balance TEXT        A comma-separated list of currency:amount pairs of initial cash balance\n  --live-holdings TEXT            A comma-separated list of symbol:symbolId:quantity:averagePrice of initial portfolio\n                                  holdings\n  --update                        Pull the LEAN engine image before starting live trading\n  --show-secrets                  Show secrets as they are input\n  --extra-docker-config TEXT      Extra docker configuration as a JSON string. For more information https://docker-\n                                  py.readthedocs.io/en/stable/containers.html\n  --no-update                     Use the local LEAN engine image instead of pulling the latest version\n  --no-browser                    Display OAuth URL without opening the browser\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/live/deploy.py](lean/commands/live/deploy.py)_\n\n### `lean live liquidate`\n\nLiquidate the given symbol from the latest deployment of the given project.\n\n```\nUsage: lean live liquidate [OPTIONS] PROJECT\n\n  Liquidate the given symbol from the latest deployment of the given project.\n\nOptions:\n  --ticker TEXT         The ticker of the symbol to liquidate\n  --market TEXT         The market of the symbol to liquidate\n  --security-type TEXT  The security type of the symbol to liquidate\n  --lean-config FILE    The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose             Enable debug logging\n  --help                Show this message and exit.\n```\n\n_See code: [lean/commands/live/liquidate.py](lean/commands/live/liquidate.py)_\n\n### `lean live stop`\n\nStop an already running local live trading project.\n\n```\nUsage: lean live stop [OPTIONS] PROJECT\n\n  Stop an already running local live trading project.\n\nOptions:\n  --lean-config FILE  The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose           Enable debug logging\n  --help              Show this message and exit.\n```\n\n_See code: [lean/commands/live/stop.py](lean/commands/live/stop.py)_\n\n### `lean live submit-order`\n\nRepresents a command to submit an order to the algorithm.\n\n```\nUsage: lean live submit-order [OPTIONS] PROJECT\n\n  Represents a command to submit an order to the algorithm.\n\nOptions:\n  --ticker TEXT          The ticker of the symbol to be submitted  [required]\n  --market TEXT          The market of the symbol to be submitted  [required]\n  --security-type TEXT   The security type of the symbol to be submitted  [required]\n  --order-type TEXT      The order type to be submitted  [required]\n  --quantity DECIMAL     The number of units to be ordered (directional)  [required]\n  --limit-price DECIMAL  The limit price of the order be submitted\n  --stop-price DECIMAL   The stop price of the order to be submitted\n  --tag TEXT             The tag to be attached to the order\n  --lean-config FILE     The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose              Enable debug logging\n  --help                 Show this message and exit.\n```\n\n_See code: [lean/commands/live/submit_order.py](lean/commands/live/submit_order.py)_\n\n### `lean live update-order`\n\nRepresents a command to update a specific order by id.\n\n```\nUsage: lean live update-order [OPTIONS] PROJECT\n\n  Represents a command to update a specific order by id.\n\nOptions:\n  --order-id INTEGER     The order id to be updated  [required]\n  --quantity DECIMAL     The number of units to be updated (directional)\n  --limit-price DECIMAL  The limit price of the order to be updated\n  --stop-price DECIMAL   The stop price of the order to be updated\n  --tag TEXT             The tag to be attached to the order\n  --lean-config FILE     The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose              Enable debug logging\n  --help                 Show this message and exit.\n```\n\n_See code: [lean/commands/live/update_order.py](lean/commands/live/update_order.py)_\n\n### `lean login`\n\nLog in with a QuantConnect account.\n\n```\nUsage: lean login [OPTIONS]\n\n  Log in with a QuantConnect account.\n\n  If user id or API token is not provided an interactive prompt will show.\n\n  Credentials are stored in ~/.lean/credentials and are removed upon running `lean logout`.\n\nOptions:\n  -u, --user-id TEXT    QuantConnect user id\n  -t, --api-token TEXT  QuantConnect API token\n  --show-secrets        Show secrets as they are input\n  --verbose             Enable debug logging\n  --help                Show this message and exit.\n```\n\n_See code: [lean/commands/login.py](lean/commands/login.py)_\n\n### `lean logout`\n\nLog out and remove stored credentials.\n\n```\nUsage: lean logout [OPTIONS]\n\n  Log out and remove stored credentials.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/logout.py](lean/commands/logout.py)_\n\n### `lean logs`\n\nDisplay the most recent backtest/live/optimization logs.\n\n```\nUsage: lean logs [OPTIONS]\n\n  Display the most recent backtest/live/optimization logs.\n\nOptions:\n  --backtest           Display the most recent backtest logs (default)\n  --live               Display the most recent live logs\n  --optimization       Display the most recent optimization logs\n  --project DIRECTORY  The project to get the most recent logs from\n  --lean-config FILE   The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose            Enable debug logging\n  --help               Show this message and exit.\n```\n\n_See code: [lean/commands/logs.py](lean/commands/logs.py)_\n\n### `lean object-store delete`\n\nOpens the local storage directory in the file explorer.\n\n```\nUsage: lean object-store delete [OPTIONS]\n\n  Opens the local storage directory in the file explorer.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/object_store/delete.py](lean/commands/object_store/delete.py)_\n\n### `lean object-store get`\n\nOpens the local storage directory in the file explorer.\n\n```\nUsage: lean object-store get [OPTIONS]\n\n  Opens the local storage directory in the file explorer.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/object_store/get.py](lean/commands/object_store/get.py)_\n\n### `lean object-store list`\n\nOpens the local storage directory in the file explorer.\n\n```\nUsage: lean object-store list [OPTIONS]\n\n  Opens the local storage directory in the file explorer.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/object_store/list.py](lean/commands/object_store/list.py)_\n\n### `lean object-store ls`\n\nAlias for 'list'\n\n```\nUsage: lean object-store ls [OPTIONS]\n\n  Opens the local storage directory in the file explorer.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/object_store/ls.py](lean/commands/object_store/ls.py)_\n\n### `lean object-store properties`\n\nOpens the local storage directory in the file explorer.\n\n```\nUsage: lean object-store properties [OPTIONS]\n\n  Opens the local storage directory in the file explorer.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/object_store/properties.py](lean/commands/object_store/properties.py)_\n\n### `lean object-store set`\n\nOpens the local storage directory in the file explorer.\n\n```\nUsage: lean object-store set [OPTIONS]\n\n  Opens the local storage directory in the file explorer.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/object_store/set.py](lean/commands/object_store/set.py)_\n\n### `lean optimize`\n\nOptimize a project's parameters locally using Docker.\n\n```\nUsage: lean optimize [OPTIONS] PROJECT\n\n  Optimize a project's parameters locally using Docker.\n\n  If PROJECT is a directory, the algorithm in the main.py or Main.cs file inside it will be executed.\n  If PROJECT is a file, the algorithm in the specified file will be executed.\n\n  By default an interactive wizard is shown letting you configure the optimizer. If --optimizer-config or --strategy is\n  given the command runs in non-interactive mode. In this mode the CLI does not prompt for input.\n\n  The --optimizer-config option can be used to specify the configuration to run the optimizer with.\n  When using the option it should point to a file like this (the algorithm-* properties should be omitted):\n  https://github.com/QuantConnect/Lean/blob/master/Optimizer.Launcher/config.json\n\n  If --strategy is given the optimizer configuration is read from the given options. In this case --strategy, --target,\n  --target-direction and --parameter become required.\n\n  In non-interactive mode the --parameter option can be provided multiple times to configure multiple parameters:\n  - --parameter <name> <min value> <max value> <step size>\n  - --parameter my-first-parameter 1 10 0.5 --parameter my-second-parameter 20 30 5\n\n  In non-interactive mode the --constraint option can be provided multiple times to configure multiple constraints:\n  - --constraint \"<statistic> <operator> <value>\"\n  - --constraint \"Sharpe Ratio >= 0.5\" --constraint \"Drawdown < 0.25\"\n\n  If --estimate is given, the optimization will not be executed.\n  The runtime estimate for the optimization will be calculated and outputted.\n\n  By default the official LEAN engine image is used. You can override this using the --image option. Alternatively you\n  can set the default engine image for all commands using `lean config set engine-image <image>`.\n\nOptions:\n  --output DIRECTORY              Directory to store results in (defaults to PROJECT/optimizations/TIMESTAMP)\n  -d, --detach                    Run the optimization in a detached Docker container and return immediately\n  --optimizer-config FILE         The optimizer configuration file that should be used\n  --strategy [Grid Search|Euler Search]\n                                  The optimization strategy to use\n  --target TEXT                   The target statistic of the optimization\n  --target-direction [min|max]    Whether the target must be minimized or maximized\n  --parameter <TEXT FLOAT FLOAT FLOAT>...\n                                  The 'parameter min max step' pairs configuring the parameters to optimize\n  --constraint TEXT               The 'statistic operator value' pairs configuring the constraints of the optimization\n  --data-provider-historical [Interactive Brokers|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Kraken|CharlesSchwab|IQFeed|Polygon|FactSet|AlphaVantage|CoinApi|ThetaData|QuantConnect|Local|Quant Bridge|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Databento|Webull|Public]\n                                  Update the Lean configuration file to retrieve data from the given historical provider\n  --download-data                 Update the Lean configuration file to download data from the QuantConnect API, alias\n                                  for --data-provider-historical QuantConnect\n  --data-purchase-limit INTEGER   The maximum amount of QCC to spend on downloading data during the backtest when using\n                                  QuantConnect as historical data provider\n  --release                       Compile C# projects in release configuration instead of debug\n  --image TEXT                    The LEAN engine image to use (defaults to quantconnect/lean:latest)\n  --update                        Pull the LEAN engine image before running the optimizer\n  --estimate                      Estimate optimization runtime without running it\n  --max-concurrent-backtests INTEGER RANGE\n                                  Maximum number of concurrent backtests to run  [x>=1]\n  --extra-docker-config TEXT      Extra docker configuration as a JSON string. For more information https://docker-\n                                  py.readthedocs.io/en/stable/containers.html\n  --no-update                     Use the local LEAN engine image instead of pulling the latest version\n  --ib-user-name TEXT             Your Interactive Brokers username\n  --ib-account TEXT               Your Interactive Brokers account id\n  --ib-password TEXT              Your Interactive Brokers password\n  --ib-host TEXT                  External Interactive Brokers Gateway Host (Optional).\n  --ib-port TEXT                  External Interactive Brokers Gateway Port (Optional).\n  --ib-weekly-restart-utc-time TEXT\n                                  Weekly restart UTC time (hh:mm:ss). Each week on Sunday your algorithm is restarted at\n                                  this time, and will require 2FA verification. This is required by Interactive Brokers.\n                                  Use this option explicitly to override the default value. (Optional).\n  --oanda-account-id TEXT         Your OANDA account id\n  --oanda-access-token TEXT       Your OANDA API token\n  --oanda-environment [Practice|Trade]\n                                  The environment to run in, Practice for fxTrade Practice, Trade for fxTrade\n  --bitfinex-api-key TEXT         Your Bitfinex API key\n  --bitfinex-api-secret TEXT      Your Bitfinex API secret\n  --coinbase-api-name TEXT        Your Coinbase Advanced Trade API name from file.\n  --coinbase-api-private-key TEXT\n                                  Your Coinbase Advanced Trade API private key from file.\n  --binance-exchange-name [Binance|BinanceUS|Binance-USDM-Futures|Binance-COIN-Futures]\n                                  Binance exchange name [Binance, BinanceUS, Binance-USDM-Futures, Binance-COIN-Futures]\n  --binance-api-key TEXT          Your Binance API key\n  --binanceus-api-key TEXT        Your Binance API key\n  --binance-api-secret TEXT       Your Binance API secret\n  --binanceus-api-secret TEXT     Your Binance API secret\n  --kraken-api-key TEXT           Your Kraken API key\n  --kraken-api-secret TEXT        Your Kraken API secret\n  --kraken-verification-tier [Starter|Intermediate|Pro]\n                                  Your Kraken Verification Tier\n  --charles-schwab-user-name TEXT\n                                  Your Charles Schwab login ID\n  --charles-schwab-account-number TEXT\n                                  The CharlesSchwab account number\n  --iqfeed-iqconnect TEXT         The path to the IQConnect binary\n  --iqfeed-username TEXT          Your IQFeed username\n  --iqfeed-password TEXT          Your IQFeed password\n  --iqfeed-version TEXT           The product version of your IQFeed developer account\n  --iqfeed-host TEXT              The IQFeed host address (Optional).\n  --polygon-api-key TEXT          Your Polygon.io API Key\n  --polygon-license-type [Individual|Business]\n                                  Select your Polygon.io subscription plan (Optional).\n  --factset-auth-config-file FILE\n                                  The path to the FactSet authentication configuration file\n  --alpha-vantage-api-key TEXT    Your Alpha Vantage Api Key\n  --alpha-vantage-price-plan [Free|Plan30|Plan75|Plan150|Plan300|Plan600|Plan1200]\n                                  Your Alpha Vantage Premium API Key plan\n  --coinapi-api-key TEXT          Your coinapi.io Api Key\n  --coinapi-product [Free|Startup|Streamer|Professional|Enterprise]\n                                  CoinApi pricing plan (https://www.coinapi.io/market-data-api/pricing)\n  --thetadata-ws-url TEXT         The ThetaData host address (Optional).\n  --thetadata-rest-url TEXT       The ThetaData host address (Optional).\n  --thetadata-subscription-plan [Free|Value|Standard|Pro]\n                                  Your ThetaData subscription price plan\n  --quant-bridge-connection-type [DAPI|SAPI]\n                                  Quant Bridge Connection Type [DAPI, SAPI]\n  --quant-bridge-environment [Production|Beta]\n                                  The environment to run in\n  --quant-bridge-server-host TEXT\n                                  The host of the Quant Bridge server\n  --quant-bridge-server-port INTEGER\n                                  The port of the Quant Bridge server\n  --quant-bridge-openfigi-api-key TEXT\n                                  The Open FIGI API key to use for mapping options\n  --quant-bridge-server-auth-id TEXT\n                                  The Auth ID of the Quant Bridge server\n  --bybit-api-key TEXT            Your Bybit API key\n  --bybit-api-secret TEXT         Your Bybit API secret\n  --trade-station-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --trade-station-account-id TEXT\n                                  The TradeStation account Id\n  --alpaca-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --tastytrade-account-number TEXT\n                                  The Tastytrade account number\n  --eze-domain TEXT               Examples (broker provided): LIGHTSPEED, LIGHTSPEEDDELAY\n  --eze-locale TEXT               Examples (broker provided): GLOBAL, AMERICAS, LIVE, DELAYED\n  --eze-user-name TEXT            Your Eze Brokers username\n  --eze-password TEXT             Your Eze Brokers password\n  --dydx-private-key-hex TEXT     Your dYdX API private key in hex format\n  --dydx-address TEXT             Your dYdX wallet address\n  --dydx-subaccount-number INTEGER\n                                  Your dYdX subaccount number\n  --databento-api-key TEXT        Your Databento.com API Key\n  --webull-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --webull-app-key TEXT           Your Webull App Key\n  --webull-app-secret TEXT        Your Webull App Secret\n  --webull-account-id TEXT        Your Webull account id\n  --webull-use-2fa BOOLEAN        Whether two-factor authentication (2FA) should be used (Optional).\n  --public-secret-key TEXT        Your Public.com API secret key\n  --public-account-number TEXT    Your Public.com account number. Public lets you have more than one account, so this\n                                  picks which one to trade.\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/optimize.py](lean/commands/optimize.py)_\n\n### `lean private-cloud add-compute`\n\nAdd private cloud compute\n\n```\nUsage: lean private-cloud add-compute [OPTIONS]\n\n  Add private cloud compute\n\nOptions:\n  --token TEXT                    The master server token\n  --master-domain, --master-ip TEXT\n                                  The master server domain\n  --master-port INTEGER           The master server port\n  --slave-domain, --slave-ip TEXT\n                                  The slave server domain\n  --update                        Pull the latest image before starting\n  --no-update                     Do not update to the latest version\n  --compute TEXT                  Compute configuration to use\n  --extra-docker-config TEXT      Extra docker configuration as a JSON string\n  --stop                          Stop any existing deployment\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/private_cloud/add_compute.py](lean/commands/private_cloud/add_compute.py)_\n\n### `lean private-cloud start`\n\nStart a new private cloud\n\n```\nUsage: lean private-cloud start [OPTIONS]\n\n  Start a new private cloud\n\nOptions:\n  --master                        Run in master mode\n  --slave                         Run in slave mode\n  --token TEXT                    The master server token\n  --master-domain, --master-ip TEXT\n                                  The master server domain\n  --master-port INTEGER           The master server port\n  --slave-domain, --slave-ip TEXT\n                                  The slave server domain\n  --update                        Pull the latest image before starting\n  --no-update                     Do not update to the latest version\n  --compute TEXT                  Compute configuration to use\n  --extra-docker-config TEXT      Extra docker configuration as a JSON string\n  --stop                          Stop any existing deployment\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/private_cloud/start.py](lean/commands/private_cloud/start.py)_\n\n### `lean private-cloud stop`\n\nStops a running private cloud\n\n```\nUsage: lean private-cloud stop [OPTIONS]\n\n  Stops a running private cloud\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/private_cloud/stop.py](lean/commands/private_cloud/stop.py)_\n\n### `lean project-create`\n\nCreate a new project containing starter code.\n\n```\nUsage: lean project-create [OPTIONS] NAME\n\n  Create a new project containing starter code.\n\n  If NAME is a path containing subdirectories those will be created automatically.\n\n  The default language can be set using `lean config set default-language python/csharp`.\n\nOptions:\n  -l, --language [python|csharp]  The language of the project to create\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/project_create.py](lean/commands/project_create.py)_\n\n### `lean project-delete`\n\nDelete a project locally and in the cloud if it exists.\n\n```\nUsage: lean project-delete [OPTIONS] PROJECT\n\n  Delete a project locally and in the cloud if it exists.\n\n  The project is selected by name or cloud id.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/project_delete.py](lean/commands/project_delete.py)_\n\n### `lean report`\n\nGenerate a report of a backtest.\n\n```\nUsage: lean report [OPTIONS]\n\n  Generate a report of a backtest.\n\n  This runs the LEAN Report Creator in Docker to generate a polished, professional-grade report of a backtest.\n\n  If --backtest-results is not given, a report is generated for the most recent local backtest.\n\n  The name, description, and version are optional and will be blank if not given.\n\n  If the given backtest data source file is stored in a project directory (or one of its subdirectories, like the\n  default <project>/backtests/<timestamp>), the default name is the name of the project directory and the default\n  description is the description stored in the project's config.json file.\n\n  By default the official LEAN engine image is used. You can override this using the --image option. Alternatively you\n  can set the default engine image for all commands using `lean config set engine-image <image>`.\n\nOptions:\n  --backtest-results FILE      Path to the JSON file containing the backtest results\n  --live-results FILE          Path to the JSON file containing the live trading results\n  --report-destination FILE    Path where the generated report is stored as HTML (defaults to ./report.html)\n  --css FILE                   Path where the CSS override file is stored\n  --html FILE                  Path where the custom HTML template file is stored\n  -d, --detach                 Run the report creator in a detached Docker container and return immediately\n  --strategy-name TEXT         Name of the strategy, will appear at the top-right corner of each page\n  --strategy-version TEXT      Version number of the strategy, will appear next to the project name\n  --strategy-description TEXT  Description of the strategy, will appear under the 'Strategy Description' section\n  --overwrite                  Overwrite --report-destination if it already contains a file\n  --image TEXT                 The LEAN engine image to use (defaults to quantconnect/lean:latest)\n  --update                     Pull the LEAN engine image before running the report creator\n  --pdf                        Create a PDF version along with the HTML version of the report\n  --lean-config FILE           The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                    Enable debug logging\n  --help                       Show this message and exit.\n```\n\n_See code: [lean/commands/report.py](lean/commands/report.py)_\n\n### `lean research`\n\nRun a Jupyter Lab environment locally using Docker.\n\n```\nUsage: lean research [OPTIONS] PROJECT\n\n  Run a Jupyter Lab environment locally using Docker.\n\n  By default the official LEAN research image is used. You can override this using the --image option. Alternatively you\n  can set the default research image using `lean config set research-image <image>`.\n\nOptions:\n  --port INTEGER                  The port to run Jupyter Lab on (defaults to 8888)\n  --data-provider-historical [Interactive Brokers|Oanda|Bitfinex|Coinbase Advanced Trade|Binance|Kraken|CharlesSchwab|IQFeed|Polygon|FactSet|AlphaVantage|CoinApi|ThetaData|QuantConnect|Local|Quant Bridge|Bybit|TradeStation|Alpaca|Tastytrade|Eze|dYdX|Databento|Webull|Public]\n                                  Update the Lean configuration file to retrieve data from the given historical provider\n  --ib-user-name TEXT             Your Interactive Brokers username\n  --ib-account TEXT               Your Interactive Brokers account id\n  --ib-password TEXT              Your Interactive Brokers password\n  --ib-host TEXT                  External Interactive Brokers Gateway Host (Optional).\n  --ib-port TEXT                  External Interactive Brokers Gateway Port (Optional).\n  --ib-weekly-restart-utc-time TEXT\n                                  Weekly restart UTC time (hh:mm:ss). Each week on Sunday your algorithm is restarted at\n                                  this time, and will require 2FA verification. This is required by Interactive Brokers.\n                                  Use this option explicitly to override the default value. (Optional).\n  --oanda-account-id TEXT         Your OANDA account id\n  --oanda-access-token TEXT       Your OANDA API token\n  --oanda-environment [Practice|Trade]\n                                  The environment to run in, Practice for fxTrade Practice, Trade for fxTrade\n  --bitfinex-api-key TEXT         Your Bitfinex API key\n  --bitfinex-api-secret TEXT      Your Bitfinex API secret\n  --coinbase-api-name TEXT        Your Coinbase Advanced Trade API name from file.\n  --coinbase-api-private-key TEXT\n                                  Your Coinbase Advanced Trade API private key from file.\n  --binance-exchange-name [Binance|BinanceUS|Binance-USDM-Futures|Binance-COIN-Futures]\n                                  Binance exchange name [Binance, BinanceUS, Binance-USDM-Futures, Binance-COIN-Futures]\n  --binance-api-key TEXT          Your Binance API key\n  --binanceus-api-key TEXT        Your Binance API key\n  --binance-api-secret TEXT       Your Binance API secret\n  --binanceus-api-secret TEXT     Your Binance API secret\n  --kraken-api-key TEXT           Your Kraken API key\n  --kraken-api-secret TEXT        Your Kraken API secret\n  --kraken-verification-tier [Starter|Intermediate|Pro]\n                                  Your Kraken Verification Tier\n  --charles-schwab-user-name TEXT\n                                  Your Charles Schwab login ID\n  --charles-schwab-account-number TEXT\n                                  The CharlesSchwab account number\n  --iqfeed-iqconnect TEXT         The path to the IQConnect binary\n  --iqfeed-username TEXT          Your IQFeed username\n  --iqfeed-password TEXT          Your IQFeed password\n  --iqfeed-version TEXT           The product version of your IQFeed developer account\n  --iqfeed-host TEXT              The IQFeed host address (Optional).\n  --polygon-api-key TEXT          Your Polygon.io API Key\n  --polygon-license-type [Individual|Business]\n                                  Select your Polygon.io subscription plan (Optional).\n  --factset-auth-config-file FILE\n                                  The path to the FactSet authentication configuration file\n  --alpha-vantage-api-key TEXT    Your Alpha Vantage Api Key\n  --alpha-vantage-price-plan [Free|Plan30|Plan75|Plan150|Plan300|Plan600|Plan1200]\n                                  Your Alpha Vantage Premium API Key plan\n  --coinapi-api-key TEXT          Your coinapi.io Api Key\n  --coinapi-product [Free|Startup|Streamer|Professional|Enterprise]\n                                  CoinApi pricing plan (https://www.coinapi.io/market-data-api/pricing)\n  --thetadata-ws-url TEXT         The ThetaData host address (Optional).\n  --thetadata-rest-url TEXT       The ThetaData host address (Optional).\n  --thetadata-subscription-plan [Free|Value|Standard|Pro]\n                                  Your ThetaData subscription price plan\n  --quant-bridge-connection-type [DAPI|SAPI]\n                                  Quant Bridge Connection Type [DAPI, SAPI]\n  --quant-bridge-environment [Production|Beta]\n                                  The environment to run in\n  --quant-bridge-server-host TEXT\n                                  The host of the Quant Bridge server\n  --quant-bridge-server-port INTEGER\n                                  The port of the Quant Bridge server\n  --quant-bridge-openfigi-api-key TEXT\n                                  The Open FIGI API key to use for mapping options\n  --quant-bridge-server-auth-id TEXT\n                                  The Auth ID of the Quant Bridge server\n  --bybit-api-key TEXT            Your Bybit API key\n  --bybit-api-secret TEXT         Your Bybit API secret\n  --trade-station-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --trade-station-account-id TEXT\n                                  The TradeStation account Id\n  --alpaca-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --tastytrade-account-number TEXT\n                                  The Tastytrade account number\n  --eze-domain TEXT               Examples (broker provided): LIGHTSPEED, LIGHTSPEEDDELAY\n  --eze-locale TEXT               Examples (broker provided): GLOBAL, AMERICAS, LIVE, DELAYED\n  --eze-user-name TEXT            Your Eze Brokers username\n  --eze-password TEXT             Your Eze Brokers password\n  --dydx-private-key-hex TEXT     Your dYdX API private key in hex format\n  --dydx-address TEXT             Your dYdX wallet address\n  --dydx-subaccount-number INTEGER\n                                  Your dYdX subaccount number\n  --databento-api-key TEXT        Your Databento.com API Key\n  --webull-environment [live|paper]\n                                  Whether Live or Paper environment should be used\n  --webull-app-key TEXT           Your Webull App Key\n  --webull-app-secret TEXT        Your Webull App Secret\n  --webull-account-id TEXT        Your Webull account id\n  --webull-use-2fa BOOLEAN        Whether two-factor authentication (2FA) should be used (Optional).\n  --public-secret-key TEXT        Your Public.com API secret key\n  --public-account-number TEXT    Your Public.com account number. Public lets you have more than one account, so this\n                                  picks which one to trade.\n  --download-data                 Update the Lean configuration file to download data from the QuantConnect API, alias\n                                  for --data-provider-historical QuantConnect\n  --data-purchase-limit INTEGER   The maximum amount of QCC to spend on downloading data during the research session\n                                  when using QuantConnect as historical data provider\n  -d, --detach                    Run Jupyter Lab in a detached Docker container and return immediately\n  --no-open                       Don't open the Jupyter Lab environment in the browser after starting it\n  --image TEXT                    The LEAN research image to use (defaults to quantconnect/research:latest)\n  --update                        Pull the LEAN research image before starting the research environment\n  --extra-docker-config TEXT      Extra docker configuration as a JSON string. For more information https://docker-\n                                  py.readthedocs.io/en/stable/containers.html\n  --no-update                     Use the local LEAN research image instead of pulling the latest version\n  --lean-config FILE              The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose                       Enable debug logging\n  --help                          Show this message and exit.\n```\n\n_See code: [lean/commands/research.py](lean/commands/research.py)_\n\n### `lean ui`\n\nBrowse projects and run commands on them in an interactive terminal UI.\n\n```\nUsage: lean ui [OPTIONS]\n\n  Browse projects and run commands on them in an interactive terminal UI.\n\n  Use the arrow keys or j/k to move, / to filter, enter to pick an action and q to quit.\n\nOptions:\n  --lean-config FILE  The Lean configuration file that should be used (defaults to the nearest lean.json)\n  --verbose           Enable debug logging\n  --help              Show this message and exit.\n```\n\n_See code: [lean/commands/ui.py](lean/commands/ui.py)_\n\n### `lean whoami`\n\nDisplay who is logged in.\n\n```\nUsage: lean whoami [OPTIONS]\n\n  Display who is logged in.\n\nOptions:\n  --verbose  Enable debug logging\n  --help     Show this message and exit.\n```\n\n_See code: [lean/commands/whoami.py](lean/commands/whoami.py)_\n<!-- commands end -->\n\n## Development\n\nTo work on the Lean CLI, clone the repository, enter an environment containing Python 3.7+ and run `pip install -r requirements.txt`. This command will install the required dependencies and installs the CLI in editable mode. This means you'll be able to edit the code and immediately see the results the next time you run `lean`.\n\nIf you need to add dependencies, first update `setup.py` (if it is a production dependency) or `requirements.txt` (if it is a development dependency) and then re-run `pip install -r requirements.txt`.\n\nThe automated tests can be ran by running `pytest`. The filesystem and HTTP requests are mocked when running tests to make sure they run in an isolated environment.\n\nCan build the lean CLI by running `python setup.py sdist bdist_wheel` from the root of the project and to install it `pip install --force-reinstall dist/lean-dev-py3-none-any.whl`. To update the commands reference part of the readme run `python scripts/readme.py` from the root of the project, after installing the new version.\n\nMaintainers can publish new releases by pushing a Git tag containing the new version to GitHub. This will trigger a GitHub Actions workflow which releases the current `master` branch to PyPI with the value of the tag as version. Make sure the version is not prefixed with \"v\".\n"
    },
    {
      "key": "microsoft/qlibscripts/data_collector/README.md",
      "content": "# Data Collector\n\n## Introduction\n\nScripts for data collection\n\n- yahoo: get *US/CN* stock data from *Yahoo Finance*\n- fund: get fund data from *http://fund.eastmoney.com*\n- cn_index: get *CN index* from *http://www.csindex.com.cn*, *CSI300*/*CSI100*\n- us_index: get *US index* from *https://en.wikipedia.org/wiki*, *SP500*/*NASDAQ100*/*DJIA*/*SP400*\n- contrib: scripts for some auxiliary functions\n\n\n## Custom Data Collection\n\n> Specific implementation reference: https://github.com/microsoft/qlib/tree/main/scripts/data_collector/yahoo\n\n1. Create a dataset code directory in the current directory\n2. Add `collector.py`\n   - add collector class:\n     ```python\n     CUR_DIR = Path(__file__).resolve().parent\n     sys.path.append(str(CUR_DIR.parent.parent))\n     from data_collector.base import BaseCollector, BaseNormalize, BaseRun\n     class UserCollector(BaseCollector):\n         ...\n     ```\n   - add normalize class:\n     ```python\n     class UserNormalzie(BaseNormalize):\n         ...\n     ```\n   - add `CLI` class:\n     ```python\n     class Run(BaseRun):\n         ...\n     ```\n3. add `README.md`\n4. add `requirements.txt`\n\n\n## Description of dataset\n\n  |             | Basic data                                                                                                       |\n  |------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------|\n  | Features    | **Price/Volume**: <br>&nbsp;&nbsp; - $close/$open/$low/$high/$volume/$change/$factor                             |\n  | Calendar    | **\\<freq>.txt**: <br>&nbsp;&nbsp; - day.txt<br>&nbsp;&nbsp;  - 1min.txt                                          |\n  | Instruments | **\\<market>.txt**: <br>&nbsp;&nbsp; - required: **all.txt**; <br>&nbsp;&nbsp;  - csi300.txt/csi500.txt/sp500.txt |\n\n  - `Features`: data, **digital**\n    - if not **adjusted**, **factor=1**\n\n### Data-dependent component\n\n> To make the component running correctly, the dependent data are required\n\n  | Component      | required data                                     |\n  |---------------------------------------------------|--------------------------------|\n  | Data retrieval | Features, Calendar, Instrument                    |\n  | Backtest       | **Features[Price/Volume]**, Calendar, Instruments |"
    },
    {
      "key": "openbq-org/OpenBBREADME.md",
      "content": "<br />\n<img src=\"https://github.com/OpenBB-finance/OpenBB/blob/develop/images/odp-light.svg?raw=true#gh-light-mode-only\" alt=\"Open Data Platform by OpenBB logo\" width=\"600\">\n<img src=\"https://github.com/OpenBB-finance/OpenBB/blob/develop/images/odp-dark.svg?raw=true#gh-dark-mode-only\" alt=\"Open Data Platform by OpenBB logo\" width=\"600\">\n<br />\n<br />\n\n[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/openbb_finance.svg?style=social&label=Follow%20%40openbb_finance)](https://x.com/openbb_finance)\n[![Discord Shield](https://img.shields.io/discord/831165782750789672)](https://discord.com/invite/xPHTuHCmuV)\n[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/OpenBB-finance/OpenBB)\n<a href=\"https://codespaces.new/OpenBB-finance/OpenBB\">\n  <img src=\"https://github.com/codespaces/badge.svg\" height=\"20\" />\n</a>\n<a target=\"_blank\" href=\"https://colab.research.google.com/github/OpenBB-finance/OpenBB/blob/develop/examples/googleColab.ipynb\">\n  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n</a>\n[![PyPI](https://img.shields.io/pypi/v/openbb?color=blue&label=PyPI%20Package)](https://pypi.org/project/openbb/)\n\nOpen Data Platform by OpenBB (ODP) is the open-source toolset that helps data engineers integrate proprietary, licensed, and public data sources into downstream applications like AI copilots and research dashboards.\n\nODP operates as the \"connect once, consume everywhere\" infrastructure layer that consolidates and exposes data to multiple surfaces at once: Python environments for quants, OpenBB Workspace and Excel for analysts, MCP servers for AI agents, and REST APIs for other applications.\n\n<a href=\"https://pro.openbb.co\">\n  <div align=\"center\">\n  <img src=\"https://openbb-cms.directus.app/assets/70b971ef-7a7e-486e-b5ae-1cc602f2162c.png\" alt=\"Logo\" width=\"1000\">\n  </div>\n</a>\n\nGet started with: `pip install openbb`\n\n```python\nfrom openbb import obb\noutput = obb.equity.price.historical(\"AAPL\")\ndf = output.to_dataframe()\n```\n\nData integrations available can be found here: <https://docs.openbb.co/python/reference>\n\n---\n\n## OpenBB Workspace\n\nWhile the Open Data Platform provides the open-source data integration foundation, **OpenBB Workspace** offers the enterprise UI for analysts to visualize datasets and leverage AI agents. The platform's \"connect once, consume everywhere\" architecture enables seamless integration between the two.\n\nYou can find OpenBB Workspace at <https://pro.openbb.co>.\n<a href=\"https://pro.openbb.co\">\n  <div align=\"center\">\n  <img src=\"https://openbb-cms.directus.app/assets/f69b6aaf-0821-4bc8-a43c-715e03a924ef.png\" alt=\"Logo\" width=\"1000\">\n  </div>\n</a>\n\nData integration:\n\n- You can learn more about adding data to the OpenBB workspace from the [docs](https://docs.openbb.co/workspace) or [this open source repository](https://github.com/OpenBB-finance/backends-for-openbb).\n\nAI Agents integration:\n\n- You can learn more about adding AI agents to the OpenBB workspace from [this open source repository](https://github.com/OpenBB-finance/agents-for-openbb).\n\n### Integrating Open Data Platform to the OpenBB Workspace\n\nConnect this library to the OpenBB Workspace with a few simple commands, in a Python (3.11 - 3.14) environment.\n\n#### Run an ODP backend\n\n- Install the packages.\n\n```sh\npip install openbb\n```\n\n- Start the API server over localhost.\n\n```sh\nopenbb-api\n```\n\nThis will launch a FastAPI server, via Uvicorn, at `127.0.0.1:6900`.\n\nYou can check that it works by going to <http://127.0.0.1:6900>.\n\n#### Integrate the ODP Backend to OpenBB Workspace\n\nSign-in to the [OpenBB Workspace](https://pro.openbb.co/), and follow the following steps:\n\n![CleanShot 2025-05-17 at 09 51 56@2x](https://github.com/user-attachments/assets/75cffb4a-5e95-470a-b9d0-6ffd4067e069)\n\n1. Go to the \"Apps\" tab\n2. Click on \"Connect backend\"\n3. Fill in the form with:\n   Name: Open Data Platform\n   URL: <http://127.0.0.1:6900>\n4. Click on \"Test\". You should get a \"Test successful\" with the number of apps found.\n5. Click on \"Add\".\n\nThat's it.\n\n---\n\n<!-- TABLE OF CONTENTS -->\n<details closed=\"closed\">\n  <summary><h2 style=\"display: inline-block\">Table of Contents</h2></summary>\n  <ol>\n    <li><a href=\"#1-installation\">Installation</a></li>\n    <li><a href=\"#2-contributing\">Contributing</a></li>\n    <li><a href=\"#3-license\">License</a></li>\n    <li><a href=\"#4-disclaimer\">Disclaimer</a></li>\n    <li><a href=\"#5-contacts\">Contacts</a></li>\n    <li><a href=\"#6-star-history\">Star History</a></li>\n    <li><a href=\"#7-contributors\">Contributors</a></li>\n  </ol>\n</details>\n\n## 1. Installation\n\nThe ODP Python Package can be installed from [PyPI package](https://pypi.org/project/openbb/) by running `pip install openbb`\n\nor by cloning the repository directly with `git clone https://github.com/OpenBB-finance/OpenBB.git`.\n\nPlease find more about the installation process, in the [OpenBB Documentation](https://docs.openbb.co/python/installation).\n\n### ODP CLI installation\n\nThe ODP CLI is a command-line interface that allows you to access the ODP directly from your command line.\n\nIt can be installed by running `pip install openbb-cli`\n\nor by cloning the repository directly with  `git clone https://github.com/OpenBB-finance/OpenBB.git`.\n\nPlease find more about the installation process in the [OpenBB Documentation](https://docs.openbb.co/cli/installation).\n\n## 2. Contributing\n\nThere are three main ways of contributing to this project. (Hopefully you have starred the project by now ⭐️)\n\n### Become a Contributor\n\n- More information on our [Developer Documentation](https://docs.openbb.co/python/developer).\n\n### Create a GitHub ticket\n\nBefore creating a ticket make sure the one you are creating doesn't exist already [among the existing issues](https://github.com/OpenBB-finance/OpenBB/issues)\n\n- [Report bug](https://github.com/OpenBB-finance/OpenBB/issues/new?assignees=&labels=bug&template=bug_report.md&title=%5BBug%5D)\n- [Suggest improvement](https://github.com/OpenBB-finance/OpenBB/issues/new?assignees=&labels=enhancement&template=enhancement.md&title=%5BIMPROVE%5D)\n- [Request a feature](https://github.com/OpenBB-finance/OpenBB/issues/new?assignees=&labels=new+feature&template=feature_request.md&title=%5BFR%5D)\n\n### Provide feedback\n\nWe are most active on [our Discord](https://openbb.co/discord), but feel free to reach out to us in any of [our social media](https://openbb.co/links) for feedback.\n\n## 3. License\n\nDistributed under the Apache License, Version 2.0. See\n[LICENSE](https://github.com/OpenBB-finance/OpenBB/blob/main/LICENSE) for more information.\n\n## 4. Disclaimer\n\nTrading in financial instruments involves high risks including the risk of losing some, or all, of your investment\namount, and may not be suitable for all investors.\n\nBefore deciding to trade in a financial instrument you should be fully informed of the risks and costs associated with trading the financial markets, carefully consider your investment objectives, level of experience, and risk appetite, and seek professional advice where needed.\n\nThe data contained in the Open Data Platform is not necessarily accurate.\n\nOpenBB and any provider of the data contained in this website will not accept liability for any loss or damage as a result of your trading, or your reliance on the information displayed.\n\nAll names, logos, and brands of third parties that may be referenced in our sites, products or documentation are trademarks of their respective owners. Unless otherwise specified, OpenBB and its products and services are not endorsed by, sponsored by, or affiliated with these third parties.\n\nOur use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.\n\n## 5. Contacts\n\nIf you have any questions about the platform or anything OpenBB, feel free to email us at `support@openbb.co`\n\nIf you want to say hi, or are interested in partnering with us, feel free to reach us at `hello@openbb.co`\n\nAny of our social media platforms: [openbb.co/links](https://openbb.co/links)\n\n## 6. Star History\n\nThis is a proxy of our growth and that we are just getting started.\n\nBut for more metrics important to us check [openbb.co/open](https://openbb.co/open).\n\n[![Star History Chart](https://api.star-history.com/svg?repos=openbb-finance/OpenBB&type=Date&theme=dark)](https://api.star-history.com/svg?repos=openbb-finance/OpenBB&type=Date&theme=dark)\n\n## 7. Contributors\n\nOpenBB wouldn't be OpenBB without you. If we are going to disrupt financial industry, every contribution counts. Thank you for being part of this journey.\n\n<a href=\"https://github.com/OpenBB-finance/OpenBB/graphs/contributors\">\n   <img src=\"https://contributors-img.web.app/image?repo=OpenBB-finance/OpenBB\" width=\"800\"/>\n</a>\n\n<!-- MARKDOWN LINKS & IMAGES -->\n<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->\n\n[contributors-shield]: https://img.shields.io/github/contributors/OpenBB-finance/OpenBB.svg?style=for-the-badge\n[contributors-url]: https://github.com/OpenBB-finance/OpenBB/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/OpenBB-finance/OpenBB.svg?style=for-the-badge\n[forks-url]: https://github.com/OpenBB-finance/OpenBB/network/members\n[stars-shield]: https://img.shields.io/github/stars/OpenBB-finance/OpenBB.svg?style=for-the-badge\n[stars-url]: https://github.com/OpenBB-finance/OpenBB/stargazers\n[issues-shield]: https://img.shields.io/github/issues/OpenBB-finance/OpenBB.svg?style=for-the-badge&color=blue\n[issues-url]: https://github.com/OpenBB-finance/OpenBB/issues\n[bugs-open-shield]: https://img.shields.io/github/issues/OpenBB-finance/OpenBB/bug.svg?style=for-the-badge&color=yellow\n[bugs-open-url]: https://github.com/OpenBB-finance/OpenBB/issues?q=is%3Aissue+label%3Abug+is%3Aopen\n[bugs-closed-shield]: https://img.shields.io/github/issues-closed/OpenBB-finance/OpenBB/bug.svg?style=for-the-badge&color=success\n[bugs-closed-url]: https://github.com/OpenBB-finance/OpenBB/issues?q=is%3Aissue+label%3Abug+is%3Aclosed\n[license-shield]: https://img.shields.io/github/license/OpenBB-finance/OpenBB.svg?style=for-the-badge\n[license-url]: https://github.com/OpenBB-finance/OpenBB/blob/main/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555\n[linkedin-url]: https://linkedin.com/in/DidierRLopes\n"
    },
    {
      "key": "mementum/backtraderREADME.rst",
      "content": "backtrader\n==========\n\n.. image:: https://img.shields.io/pypi/v/backtrader.svg\n   :alt: PyPi Version\n   :scale: 100%\n   :target: https://pypi.python.org/pypi/backtrader/\n\n..  .. image:: https://img.shields.io/pypi/dm/backtrader.svg\n       :alt: PyPi Monthly Donwloads\n       :scale: 100%\n       :target: https://pypi.python.org/pypi/backtrader/\n\n.. image:: https://img.shields.io/pypi/l/backtrader.svg\n   :alt: License\n   :scale: 100%\n   :target: https://github.com/backtrader/backtrader/blob/master/LICENSE\n.. image:: https://travis-ci.org/backtrader/backtrader.png?branch=master\n   :alt: Travis-ci Build Status\n   :scale: 100%\n   :target: https://travis-ci.org/backtrader/backtrader\n.. image:: https://img.shields.io/pypi/pyversions/backtrader.svg\n   :alt: Python versions\n   :scale: 100%\n   :target: https://pypi.python.org/pypi/backtrader/\n\n**Yahoo API Note**:\n\n  [2018-11-16] After some testing it would seem that data downloads can be\n  again relied upon over the web interface (or API ``v7``)\n\n**Tickets**\n\n  The ticket system is (was, actually) more often than not abused to ask for\n  advice about samples.\n\nFor **feedback/questions/...** use the `Community <https://community.backtrader.com>`_\n\nHere a snippet of a Simple Moving Average CrossOver. It can be done in several\ndifferent ways. Use the docs (and examples) Luke!\n::\n\n  from datetime import datetime\n  import backtrader as bt\n\n  class SmaCross(bt.SignalStrategy):\n      def __init__(self):\n          sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30)\n          crossover = bt.ind.CrossOver(sma1, sma2)\n          self.signal_add(bt.SIGNAL_LONG, crossover)\n\n  cerebro = bt.Cerebro()\n  cerebro.addstrategy(SmaCross)\n\n  data0 = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1),\n                                    todate=datetime(2012, 12, 31))\n  cerebro.adddata(data0)\n\n  cerebro.run()\n  cerebro.plot()\n\nIncluding a full featured chart. Give it a try! This is included in the samples\nas ``sigsmacross/sigsmacross2.py``. Along it is ``sigsmacross.py`` which can be\nparametrized from the command line.\n\nFeatures:\n=========\n\nLive Trading and backtesting platform written in Python.\n\n  - Live Data Feed and Trading with\n\n    - Interactive Brokers (needs ``IbPy`` and benefits greatly from an\n      installed ``pytz``)\n    - *Visual Chart* (needs a fork of ``comtypes`` until a pull request is\n      integrated in the release and benefits from ``pytz``)\n    - *Oanda* (needs ``oandapy``) (REST API Only - v20 did not support\n      streaming when implemented)\n\n  - Data feeds from csv/files, online sources or from *pandas* and *blaze*\n  - Filters for datas, like breaking a daily bar into chunks to simulate\n    intraday or working with Renko bricks\n  - Multiple data feeds and multiple strategies supported\n  - Multiple timeframes at once\n  - Integrated Resampling and Replaying\n  - Step by Step backtesting or at once (except in the evaluation of the Strategy)\n  - Integrated battery of indicators\n  - *TA-Lib* indicator support (needs python *ta-lib* / check the docs)\n  - Easy development of custom indicators\n  - Analyzers (for example: TimeReturn, Sharpe Ratio, SQN) and ``pyfolio``\n    integration (**deprecated**)\n  - Flexible definition of commission schemes\n  - Integrated broker simulation with *Market*, *Close*, *Limit*, *Stop*,\n    *StopLimit*, *StopTrail*, *StopTrailLimit*and *OCO* orders, bracket order,\n    slippage, volume filling strategies and continuous cash adjustmet for\n    future-like instruments\n  - Sizers for automated staking\n  - Cheat-on-Close and Cheat-on-Open modes\n  - Schedulers\n  - Trading Calendars\n  - Plotting (requires matplotlib)\n\nDocumentation\n=============\n\nThe blog:\n\n  - `Blog <http://www.backtrader.com/blog>`_\n\nRead the full documentation at:\n\n  - `Documentation <http://www.backtrader.com/docu>`_\n\nList of built-in Indicators (122)\n\n  - `Indicators Reference <http://www.backtrader.com/docu/indautoref.html>`_\n\nPython 2/3 Support\n==================\n\n  - Python >= ``3.2``\n\n  - It also works with ``pypy`` and ``pypy3`` (no plotting - ``matplotlib`` is\n    not supported under *pypy*)\n\nInstallation\n============\n\n``backtrader`` is self-contained with no external dependencies (except if you\nwant to plot)\n\nFrom *pypi*:\n\n  - ``pip install backtrader``\n\n  - ``pip install backtrader[plotting]``\n\n    If ``matplotlib`` is not installed and you wish to do some plotting\n\n.. note:: The minimum matplotlib version is ``1.4.1``\n\nAn example for *IB* Data Feeds/Trading:\n\n  - ``IbPy`` doesn't seem to be in PyPi. Do either::\n\n      pip install git+https://github.com/blampe/IbPy.git\n\n    or (if ``git`` is not available in your system)::\n\n      pip install https://github.com/blampe/IbPy/archive/master.zip\n\nFor other functionalities like: ``Visual Chart``, ``Oanda``, ``TA-Lib``, check\nthe dependencies in the documentation.\n\nFrom source:\n\n  - Place the *backtrader* directory found in the sources inside your project\n\nVersion numbering\n=================\n\nX.Y.Z.I\n\n  - X: Major version number. Should stay stable unless something big is changed\n    like an overhaul to use ``numpy``\n  - Y: Minor version number. To be changed upon adding a complete new feature or\n    (god forbids) an incompatible API change.\n  - Z: Revision version number. To be changed for documentation updates, small\n    changes, small bug fixes\n  - I: Number of Indicators already built into the platform\n"
    }
  ]
}
