|
|
2 months ago | |
|---|---|---|
| .. | ||
| architecture | 2 months ago | |
| bot | 2 months ago | |
| docker | 2 months ago | |
| CHANGELOG.md | 2 months ago | |
| CONTRIBUTING.md | 2 months ago | |
| DEPLOY.md | 2 months ago | |
| DEPLOY_EN.md | 2 months ago | |
| FAQ.md | 2 months ago | |
| FAQ_EN.md | 2 months ago | |
| README_CHT.md | 2 months ago | |
| README_EN.md | 2 months ago | |
| bot-command.md | 2 months ago | |
| desktop-package.md | 2 months ago | |
| full-guide.md | 2 months ago | |
| full-guide_EN.md | 2 months ago | |
README_EN.md
AI Stock Analysis System
AI-powered stock analysis system for A-shares / Hong Kong / US stocks
Analyze your watchlist daily → generate a decision dashboard → push to multiple channels (Telegram/Discord/Email/WeChat Work/Feishu)
Zero-cost deployment · Runs on GitHub Actions · No server required
Quick Start · Key Features · Sample Output · Full Guide · FAQ · Changelog
💖 Sponsors
✨ Key Features
| Module | Feature | Description |
|---|---|---|
| AI | Decision Dashboard | One-sentence conclusion + precise entry/exit levels + action checklist |
| Analysis | Multi-dimensional Analysis | Technicals + chip distribution + sentiment + real-time quotes |
| Market | Global Markets | A-shares, Hong Kong stocks, US stocks |
| Review | Market Review | Daily overview, sectors, northbound capital flow |
| Backtest | AI Backtest Validation | Auto-evaluate historical analysis accuracy, direction win rate, SL/TP hit rates |
| Notifications | Multi-channel Push | Telegram, Discord, Email, WeChat Work, Feishu, etc. |
| Automation | Scheduled Runs | GitHub Actions scheduled execution, no server required |
Tech Stack & Data Sources
| Type | Supported |
|---|---|
| LLMs | Gemini (free), OpenAI-compatible, DeepSeek, Qwen, Claude, Ollama |
| Market Data | AkShare, Tushare, Pytdx, Baostock, YFinance |
| News Search | Tavily, SerpAPI, Bocha, Brave |
Built-in Trading Rules
| Rule | Description |
|---|---|
| No chasing highs | Auto warn when deviation > 5% |
| Trend trading | Bull alignment: MA5 > MA10 > MA20 |
| Precise levels | Entry, stop loss, target |
| Checklist | Each condition marked as Pass / Watch / Fail |
🚀 Quick Start
Option 1: GitHub Actions (Recommended, Zero Cost)
No server needed, runs automatically every day!
1. Fork this repository
Click the Fork button in the upper right corner
2. Configure Secrets
Go to your forked repo → Settings → Secrets and variables → Actions → New repository secret
AI Model Configuration (Choose one)
| Secret Name | Description | Required |
|---|---|---|
GEMINI_API_KEY |
Get free API key from Google AI Studio | ✅* |
OPENAI_API_KEY |
OpenAI-compatible API Key (supports DeepSeek, Qwen, etc.) | Optional |
OPENAI_BASE_URL |
OpenAI-compatible API endpoint (e.g., https://api.deepseek.com/v1) |
Optional |
OPENAI_MODEL |
Model name (e.g., deepseek-chat) |
Optional |
*Note: Configure at least one of
GEMINI_API_KEYorOPENAI_API_KEY
Notification channels (expand, choose at least one)
| Secret Name | Description | Required |
|---|---|---|
TELEGRAM_BOT_TOKEN |
Telegram Bot Token (Get from @BotFather) | Optional |
TELEGRAM_CHAT_ID |
Telegram Chat ID | Optional |
TELEGRAM_MESSAGE_THREAD_ID |
Telegram Topic ID (For sending to topics) | Optional |
DISCORD_WEBHOOK_URL |
Discord Webhook URL | Optional |
DISCORD_BOT_TOKEN |
Discord Bot Token (choose one with Webhook) | Optional |
DISCORD_CHANNEL_ID |
Discord Channel ID (required when using Bot) | Optional |
EMAIL_SENDER |
Sender email (e.g., xxx@qq.com) |
Optional |
EMAIL_PASSWORD |
Email authorization code (not login password) | Optional |
EMAIL_RECEIVERS |
Receiver emails (comma-separated, leave empty to send to yourself) | Optional |
WECHAT_WEBHOOK_URL |
WeChat Work Webhook URL | Optional |
FEISHU_WEBHOOK_URL |
Feishu Webhook URL | Optional |
PUSHPLUS_TOKEN |
PushPlus Token (Get it here, Chinese push service) | Optional |
SERVERCHAN3_SENDKEY |
ServerChan v3 SendKey ((Get it here, Mobile app push notification service) ) | Optional |
CUSTOM_WEBHOOK_URLS |
Custom Webhook URLs (supports DingTalk, etc., comma-separated) | Optional |
CUSTOM_WEBHOOK_BEARER_TOKEN |
Bearer token for custom webhooks (if required) | Optional |
SINGLE_STOCK_NOTIFY |
Send notification immediately after each stock | Optional |
REPORT_TYPE |
simple or full (Docker recommended: full) |
Optional |
ANALYSIS_DELAY |
Delay between stocks and market review (seconds) | Optional |
Note: Configure at least one channel; multiple channels will all receive notifications.
Stock List Configuration
| Secret Name | Description | Required |
|---|---|---|
STOCK_LIST |
Watchlist codes, e.g., 600519,AAPL,hk00700 |
✅ |
TAVILY_API_KEYS |
Tavily Search API (for news) | Recommended |
BRAVE_API_KEYS |
Brave Search API (privacy-focused, US stocks optimized) | Optional |
SERPAPI_API_KEYS |
SerpAPI Backup search | Optional |
BOCHA_API_KEYS |
Bocha Search Web Search API (Chinese search optimized, supports AI summaries, multiple keys comma-separated) | Optional |
TUSHARE_TOKEN |
Tushare Pro Token | Optional |
WECHAT_MSG_TYPE |
WeChat Work message type, default markdown, set to text for plain markdown text |
Optional |
Stock Code Format
| Market | Format | Examples |
|---|---|---|
| A-shares | 6-digit number | 600519, 000001, 300750 |
| HK Stocks | hk + 5-digit number | hk00700, hk09988 |
| US Stocks | 1-5 uppercase letters | AAPL, TSLA, GOOGL |
3. Enable Actions
Go to Actions tab → Click I understand my workflows, go ahead and enable them
4. Manual Test
Actions → Daily Stock Analysis → Run workflow → Select mode → Run workflow
5. Done!
The system will:
- Run automatically at scheduled time (default: 18:00 Beijing Time)
- Send analysis reports to all configured channels
- Save reports locally
Option 2: Local Deployment
1. Clone Repository
git clone https://github.com/ZhuLinsen/daily_stock_analysis.git
cd daily_stock_analysis
2. Install Dependencies
# Create virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
3. Configure Environment Variables
# Copy configuration template
cp .env.example .env
# Edit .env file
nano .env # or use any editor
Configure the following:
# AI Model (Choose one)
GEMINI_API_KEY=your_gemini_api_key_here
# Stock Watchlist (Mixed markets supported)
STOCK_LIST=600519,AAPL,hk00700
# Notification Channel (Choose at least one)
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
# News Search (Optional)
TAVILY_API_KEYS=your_tavily_key
4. Run
# One-time analysis
python main.py
# Scheduled mode (runs daily at 18:00)
python main.py --schedule
# Analyze specific stocks
python main.py --stocks AAPL,TSLA,GOOGL
# Market review only
python main.py --market-review
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Configuration page |
/health |
GET | Health check |
/analysis?code=xxx |
GET | Trigger async analysis for a single stock |
/analysis/history |
GET | Query analysis history records |
/tasks |
GET | Query all task statuses |
/task?id=xxx |
GET | Query a single task status |
📱 Supported Notification Channels
1. Telegram (Recommended)
- Talk to @BotFather →
/newbot→ get Bot Token - Get Chat ID: send a message to @userinfobot
- Configure:
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=123456789
2. Discord
Webhook:
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/xxx/yyy
Bot:
DISCORD_BOT_TOKEN=your_bot_token
DISCORD_CHANNEL_ID=your_channel_id
3. Email
EMAIL_SENDER=your_email@gmail.com
EMAIL_PASSWORD=your_app_password
EMAIL_RECEIVERS=receiver@example.com # Optional
4. WeChat Work / Feishu
WeChat Work:
WECHAT_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
Feishu:
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxx
5. PushPlus
PUSHPLUS_TOKEN=your_token_here
🎨 Sample Output
Decision Dashboard Format
# 🎯 2026-01-24 Decision Dashboard
> Total **3** stocks analyzed | 🟢Buy:1 🟡Hold:1 🔴Sell:1
## 📊 Analysis Summary
🟢 **AAPL(Apple Inc.)**: Buy | Score 85 | Strong Bullish
🟡 **600519(Kweichow Moutai)**: Hold | Score 65 | Bullish
🔴 **TSLA(Tesla)**: Sell | Score 35 | Bearish
---
## 🟢 AAPL (Apple Inc.)
### 📰 Key Information
**💭 Sentiment**: Positive news on iPhone 16 sales
**📊 Earnings**: Q1 2024 earnings beat expectations
### 📌 Core Conclusion
**🟢 Buy** | Strong Bullish
> **One-sentence Decision**: Strong technical setup with positive catalyst, ideal entry point
⏰ **Time Sensitivity**: Within this week
| Position | Action |
|----------|--------|
| 🆕 **No Position** | Buy at pullback |
| 💼 **With Position** | Continue holding |
### 📊 Data Perspective
**MA Alignment**: MA5>MA10>MA20 | Bull Trend: ✅ Yes | Trend Strength: 85/100
| Price Metrics | Value |
|--------------|-------|
| Current | $185.50 |
| MA5 | $183.20 |
| MA10 | $180.50 |
| MA20 | $177.80 |
| Bias (MA5) | +1.26% ✅ Safe |
| Support | $183.20 |
| Resistance | $190.00 |
**Volume**: Ratio 1.8 (Moderate increase) | Turnover 2.3%
💡 *Volume confirms bullish momentum*
### 🎯 Action Plan
**📍 Sniper Points**
| Level Type | Price |
|-----------|-------|
| 🎯 Ideal Entry | $183-184 |
| 🔵 Secondary Entry | $180-181 |
| 🛑 Stop Loss | $177 |
| 🎊 Target | $195 |
**💰 Position Sizing**: 20-30% of portfolio
- Entry Plan: Enter in 2-3 batches
- Risk Control: Strict stop loss at $177
**✅ Checklist**
- ✅ Bull trend confirmed
- ✅ Price near MA5 support
- ✅ Volume confirms trend
- ⚠️ Monitor market volatility
---
🔧 Advanced Configuration
Environment Variables
# === Analysis Behavior ===
ANALYSIS_DELAY=10 # Delay between analysis (seconds) to avoid API rate limit
REPORT_TYPE=full # Report type: simple/full
SINGLE_STOCK_NOTIFY=true # Push immediately after each stock analysis
# === Schedule ===
SCHEDULE_ENABLED=true # Enable scheduled task
SCHEDULE_TIME=18:00 # Daily run time (HH:MM, 24-hour format)
MARKET_REVIEW_ENABLED=true # Enable market review
# === Data Source ===
TUSHARE_TOKEN=your_token # Tushare Pro (priority data source if configured)
# === System ===
MAX_WORKERS=3 # Concurrent threads (3 recommended to avoid blocking)
DEBUG=false # Enable debug logging
🧩 FastAPI Web Service (Optional)
Enable the FastAPI service for configuration management and triggering analysis when running locally.
Startup Methods
| Command | Description |
|---|---|
python main.py --serve |
Start API service + run full analysis once |
python main.py --serve-only |
Start API service only, manually trigger analysis |
- URL:
http://127.0.0.1:8000 - API docs:
http://127.0.0.1:8000/docs
Features
- 📝 Configuration Management - View/modify watchlist
- 🚀 Quick Analysis - Trigger analysis via API
- 📊 Real-time Progress - Analysis task status updates in real-time, supports parallel tasks
- 📈 Backtest Validation - Evaluate historical analysis accuracy, query direction win rate and simulated returns
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/v1/analysis/analyze |
POST | Trigger stock analysis |
/api/v1/analysis/tasks |
GET | Query task list |
/api/v1/analysis/status/{task_id} |
GET | Query task status |
/api/v1/history |
GET | Query analysis history |
/api/v1/backtest/run |
POST | Trigger backtest |
/api/v1/backtest/results |
GET | Query backtest results (paginated) |
/api/v1/backtest/performance |
GET | Get overall backtest performance |
/api/v1/backtest/performance/{code} |
GET | Get per-stock backtest performance |
/api/health |
GET | Health check |
For detailed instructions, see Full Guide - API Service
📖 Documentation
- Complete Configuration Guide
- FAQ
- Deployment Guide
- Bot Command Reference
- Feishu Bot Setup
- DingTalk Bot Setup
☕ Support the Project
| Alipay | WeChat Pay | Ko-fi |
|---|---|---|
![]() |
![]() |
![]() |
🤝 Contributing
Contributions are welcome! Please:
- Fork this repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
See CONTRIBUTING.md for details.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
⭐ Star History
Made with ❤️ by AI enthusiasts | Star ⭐ this repo if you find it useful!
⚠️ Disclaimer
This tool is for informational and educational purposes only. The analysis results are generated by AI and should not be considered as investment advice. Stock market investments carry risk, and you should:
- Do your own research before making investment decisions
- Understand that past performance does not guarantee future results
- Only invest money you can afford to lose
- Consult with a licensed financial advisor for personalized advice
The developers of this tool are not liable for any financial losses resulting from the use of this software.
🙏 Acknowledgments
- AkShare - Stock data source
- Google Gemini - AI analysis engine
- Tavily - News search API
- All contributors who helped improve this project
📞 Contact
- GitHub Issues: Report bugs or request features
- Discussions: Join discussions


