# sngyai/sequoia-x architecture

> Architecture diagram of the GitHub repository sngyai/sequoia-x, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sngyai/sequoia-x
- Repository: https://github.com/sngyai/sequoia-x

## Overview

Sequoia-X is an A-share stock-selection system. Its daily workflow loads configuration, synchronizes market data into local SQLite, runs seven strategies, and sends nonempty selections to Feishu. Backfill is a separate entry-point mode that obtains the market symbol list and fills historical bars. The README documents the strategy set; sampled strategy source confirms several implementations, while the remaining strategy details and some engine internals are represented only at their documented module paths.

Main entry points: [`main.py`](https://github.com/sngyai/sequoia-x/blob/master/main.py) (Mode runner), [`sequoia_x/data/engine.py`](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/data/engine.py) (Data engine), [`sequoia_x/strategy/turtle_trade.py`](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/turtle_trade.py) (TurtleTrade), [`sequoia_x/notify/feishu.py`](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/notify/feishu.py) (Feishu notifier)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Runtime orchestration"]
  node_main["Mode runner<br/>[main.py]"]
end

subgraph group_market_data["Market data"]
  node_engine["Data engine<br/>[engine.py]"]
  node_sqlite[("Market database")]
end

subgraph group_strategies["Selection strategies"]
  node_turtle["TurtleTrade<br/>[turtle_trade.py]"]
  node_ma_volume["MaVolume<br/>[ma_volume.py]"]
  node_high_tight["HighTightFlag<br/>[high_tight_flag.py]"]
  node_shakeout["LimitUpShakeout"]
  node_uptrend["UptrendLimitDown"]
  node_rps["RPS Breakout<br/>[rps_breakout.py]"]
  node_placement["PrivatePlacement"]
  node_strategy_base["Strategy base<br/>[base.py]"]
end

subgraph group_delivery["Configuration and delivery"]
  node_settings["Settings<br/>[config.py]"]
  node_logger["Logging<br/>[logger.py]"]
  node_notifier["Feishu notifier<br/>[feishu.py]"]
end

node_operator(("Operator"))
node_baostock["Baostock"]
node_akshare["Akshare"]
node_feishu["Feishu webhook"]

node_operator -->|"starts mode"| node_main
node_main -->|"loads settings"| node_settings
node_main -->|"creates engine"| node_engine
node_main -->|"backfills or syncs"| node_engine
node_engine -->|"fetches bars and symbols"| node_baostock
node_engine -->|"reads and writes"| node_sqlite
node_main -->|"runs strategy"| node_ma_volume
node_main -->|"runs strategy"| node_turtle
node_main -->|"runs strategy"| node_high_tight
node_main -->|"runs strategy"| node_shakeout
node_main -->|"runs strategy"| node_uptrend
node_main -->|"runs strategy"| node_rps
node_main -->|"runs strategy"| node_placement
node_ma_volume -->|"reads bars"| node_engine
node_turtle -->|"reads bars and symbols"| node_engine
node_high_tight -->|"reads bars and symbols"| node_engine
node_shakeout -->|"reads bars and symbols"| node_engine
node_uptrend -->|"reads bars and symbols"| node_engine
node_rps -->|"reads market data"| node_engine
node_placement -.->|"fetches announcements"| node_akshare
node_turtle -->|"queries market caps"| node_baostock
node_ma_volume -->|"returns selections"| node_main
node_turtle -->|"returns selections"| node_main
node_high_tight -->|"returns selections"| node_main
node_shakeout -->|"returns selections"| node_main
node_uptrend -->|"returns selections"| node_main
node_rps -->|"returns selections"| node_main
node_placement -->|"returns selections"| node_main
node_main -->|"sends selections"| node_notifier
node_notifier -->|"resolves webhook"| node_settings
node_notifier -->|"looks up names"| node_baostock
node_notifier -->|"posts card"| node_feishu

click node_main "https://github.com/sngyai/sequoia-x/blob/master/main.py"
click node_settings "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/core/config.py"
click node_logger "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/core/logger.py"
click node_engine "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/data/engine.py"
click node_turtle "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/turtle_trade.py"
click node_ma_volume "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/ma_volume.py"
click node_high_tight "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/high_tight_flag.py"
click node_shakeout "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/limit_up_shakeout.py"
click node_uptrend "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/uptrend_limit_down.py"
click node_rps "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/rps_breakout.py"
click node_placement "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/private_placement.py"
click node_strategy_base "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/base.py"
click node_notifier "https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/notify/feishu.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main toneBlue
class node_engine,node_sqlite toneAmber
class node_turtle,node_ma_volume,node_high_tight,node_shakeout,node_uptrend,node_rps,node_placement,node_strategy_base,node_feishu toneMint
class node_settings,node_logger,node_notifier toneRose
class node_operator,node_baostock,node_akshare toneIndigo
```

## Components

### Runtime orchestration

- [Mode runner](https://github.com/sngyai/sequoia-x/blob/master/main.py): `main.py`

### Market data

- [Data engine](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/data/engine.py): `sequoia_x/data/engine.py`
- **Market database**

### Selection strategies

- [TurtleTrade](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/turtle_trade.py): `sequoia_x/strategy/turtle_trade.py`
- [MaVolume](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/ma_volume.py): `sequoia_x/strategy/ma_volume.py`
- [HighTightFlag](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/high_tight_flag.py): `sequoia_x/strategy/high_tight_flag.py`
- [LimitUpShakeout](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/limit_up_shakeout.py): `sequoia_x/strategy/limit_up_shakeout.py`
- [UptrendLimitDown](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/uptrend_limit_down.py): `sequoia_x/strategy/uptrend_limit_down.py`
- [RPS Breakout](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/rps_breakout.py): `sequoia_x/strategy/rps_breakout.py`
- [PrivatePlacement](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/private_placement.py): `sequoia_x/strategy/private_placement.py`
- [Strategy base](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/strategy/base.py): `sequoia_x/strategy/base.py`

### Configuration and delivery

- [Settings](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/core/config.py): `sequoia_x/core/config.py`
- [Logging](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/core/logger.py): `sequoia_x/core/logger.py`
- [Feishu notifier](https://github.com/sngyai/sequoia-x/blob/master/sequoia_x/notify/feishu.py): `sequoia_x/notify/feishu.py`

### Other components

- **Operator**
- **Baostock**
- **Akshare**
- **Feishu webhook**

## Connections

- Operator → Mode runner: starts mode
- Mode runner → Settings: loads settings
- Mode runner → Data engine: creates engine
- Mode runner → Data engine: backfills or syncs
- Data engine → Baostock: fetches bars and symbols
- Data engine → Market database: reads and writes
- Mode runner → MaVolume: runs strategy
- Mode runner → TurtleTrade: runs strategy
- Mode runner → HighTightFlag: runs strategy
- Mode runner → LimitUpShakeout: runs strategy
- Mode runner → UptrendLimitDown: runs strategy
- Mode runner → RPS Breakout: runs strategy
- Mode runner → PrivatePlacement: runs strategy
- MaVolume → Data engine: reads bars
- TurtleTrade → Data engine: reads bars and symbols
- HighTightFlag → Data engine: reads bars and symbols
- LimitUpShakeout → Data engine: reads bars and symbols
- UptrendLimitDown → Data engine: reads bars and symbols
- RPS Breakout → Data engine: reads market data
- PrivatePlacement → Akshare: fetches announcements
- TurtleTrade → Baostock: queries market caps
- MaVolume → Mode runner: returns selections
- TurtleTrade → Mode runner: returns selections
- HighTightFlag → Mode runner: returns selections
- LimitUpShakeout → Mode runner: returns selections
- UptrendLimitDown → Mode runner: returns selections
- RPS Breakout → Mode runner: returns selections
- PrivatePlacement → Mode runner: returns selections
- Mode runner → Feishu notifier: sends selections
- Feishu notifier → Settings: resolves webhook
- Feishu notifier → Baostock: looks up names
- Feishu notifier → Feishu webhook: posts card
