Architecture: - Restructure into 5 subsystems: data/, features/, market/, signals/, execution/, apps/ - Unified ts_code conversion in core/codes.py (idempotent, kills 4 duplicate copies) - analytics_conn() + kline_glob() — zero hardcoded DB/Parquet paths - Fixed double-suffix bug (.SZ.SZ) in backfill pipeline root cause Signal Intelligence (the moat): - 14 signal types: EMA52, Vegas, Chan, ORB, Gap, NR7, Inside Bar - 640K+ historical signal instances across 8 backfilled types - Multi-signal Expectancy Engine with breadth-similarity matching - Signal backfill CLI: ashare-dp backfill signals Market Intelligence: - 8 engines: State, Leadership, Opportunity, Flow, Sentiment, Memory, Knowledge Graph, Recommendations - Real limit-up/down sentiment via akshare (108 ZT, 19 DT, 52 broken board) - Knowledge Graph: 8 themes × 30+ concepts with keyword matching - Money-flow stock recommendations with entry/stop/target trade plans Dashboard Command Center: - Decision-first layout: COMMAND → WHERE → WHY → RISK → EXPECTANCY - Multi-signal Expectancy comparison table (8 types ranked by WR) - Theme Map visualization with rotation detection - Intraday Replay infrastructure (30min state snapshots) - RECOMMENDATIONS card with actionable trade plans Trading Memory: - trade_log table + POST/GET/PUT API for trade recording - Performance stats aggregation Code Quality: - 0 hardcoded DB paths, 0 REPLACE hacks, 0 dead ts_code copies - EMA52 screening deduplicated (CLI + scheduler share one function) - read_parquet_sql() helper for 28 duplicate patterns - 6 bugs fixed from code review (NR7 window, theme matching, column indices, etc.) Co-Authored-By: Claude <noreply@anthropic.com>
39 lines
818 B
TOML
39 lines
818 B
TOML
[project]
|
|
name = "ashare-dp"
|
|
version = "0.1.0"
|
|
description = "A-Share Data Platform: Parquet + DuckDB storage with REST/WebSocket APIs"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"akshare>=1.17.0",
|
|
"duckdb>=1.2.0",
|
|
"fastapi>=0.115.0",
|
|
"uvicorn[standard]>=0.34.0",
|
|
"pydantic>=2.0",
|
|
"pydantic-settings>=2.0",
|
|
"apscheduler>=3.10.0",
|
|
"typer>=0.15.0",
|
|
"loguru>=0.7.0",
|
|
"httpx>=0.28.0",
|
|
"pyarrow>=18.0.0",
|
|
"pandas>=2.0",
|
|
"pytz>=2024.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"pytest-asyncio>=0.25.0",
|
|
"pytest-cov>=6.0",
|
|
"ruff>=0.9.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
ashare-dp = "ashare_dp.apps.cli.main:app"
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=75.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|