daily_stock_analysis forks almost as much as it stars, and that is the design
LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.
At a glance
- What is it?
- An MIT-licensed Python system that runs an LLM over a watchlist across six markets on a schedule and pushes a decision dashboard to WeCom, Feishu, Telegram, Discord, Slack or email. Its free quote sources run with zero configuration, and the README is unusually blunt about how long that lasts.
- Who is it for?
- Adopt daily_stock_analysis if you want a scheduled, push-delivered read on a personal watchlist and are willing to fork it, because with 54,905 forks against 65,790 stars the project's own usage pattern is to copy it and adjust the list. Do not adopt it expecting a signal you can trade from: the buy, hold and sell labels and their numeric scores are model output, and the README's sample output does not say how the score is computed.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- ZhuLinsen/daily_stock_analysis71,494 ★ · +12,085
| Repository | 2026-07-28 | 2026-11-13 |
|---|---|---|
| ZhuLinsen/daily_stock_analysis | 59.4k | 71.5k |
12,085 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Zero-config works today, and the README does not promise next month
The default quote sources need no keys. AkShare, Baostock and YFinance ship in the box, and the project describes that as running with zero configuration. The same paragraph then withdraws the promise: those free sources are subject to upstream rate limiting, interface changes and network fluctuation, and their stability is not guaranteed. For long-term scheduled runs, batch analysis or steadier quotes, the recommendation is to configure token-based sources such as TickFlow, Tushare or Longbridge. Finding that stated plainly is rare and useful. The consequence is a specific operational one. A zero-config install can work on day one and start returning gaps on day thirty, and the documented fix is to configure a token-based source rather than to change code. Budget for that before relying on an unattended schedule, because a scheduled job that quietly produces thinner reports is worse than one that stops.
python main.py --debug
python main.py --dry-run
python main.py --stocks 600519,hk00700,AAPL,2330.TW
python main.py --market-review
python main.py --schedule
python main.py --serve-onlyThe data providers are an ordered fallback chain with priorities in requirements.txt
Read requirements.txt and the architecture falls out of it, because every quote source carries its priority in a comment. efinance is priority 0, AkShare is priority 1, Tushare and Pytdx are priority 2, Baostock is priority 3, YFinance is priority 4, and Longbridge is priority 5 as the Docker and Linux fallback. TickFlow and a Futu SDK sit alongside them, the latter for a read-only portfolio import. Two supporting libraries explain behaviour you would otherwise have to infer. tenacity is present for retry with exponential backoff, and sqlalchemy provides ORM database access. The consequence for a user is that a missing field is rarely a hard failure. When a token source lacks permission for a field the pipeline falls back and the report is thinner rather than empty, which is the right behaviour in production and an irritating one when you are trying to work out why a particular number moved.
Longbridge is pinned twice because a glibc wall splits it
One dependency carries two pins and a comment explaining why, which is the most informative line in the file. On Linux with Python below 3.12 the requirement is longbridge 0.2.74. Everywhere else, meaning other platforms or Python 3.12 and above, it is longbridge 4.x with an upper bound below 5. The comment states that the Longbridge 4.x Linux wheels require manylinux 2.39 while Docker uses bookworm with glibc 2.36. That arithmetic is the entire problem. On Linux with a modern Python you get the 4.x line, and the requirements comment says Docker uses bookworm with glibc 2.36, older than those wheels need. The fields Longbridge is configured to fill in are the Hong Kong and United States ones, including volume ratio, turnover rate and PE. Those are the fields the README says Longbridge fills in for Hong Kong and United States stocks.
Whether the job runs at all comes down to one pinned calendar library
The scheduled run defaults to 18:00 Beijing time on every working day and skips non-trading days, with the A-share, Hong Kong and United States holidays named explicitly. Deciding that is the job of exchange-calendars, which requirements.txt pins at 4.13.0 or higher and annotates with a warning that the 4.5.x line is incompatible with the Timedelta behaviour in pandas 3. So a calendar library upgrade can break the trading-day check, and the trading-day check is the gate in front of everything else the project does. The consequence is a dependency risk sitting upstream of the analysis rather than inside it. If that pin is relaxed carelessly the failure mode is not a crash in a report. It is a job that fires on a public holiday, or skips a real trading day, and both of those look like a data problem to whoever reads the output.
Sentiment is a US-only source, so most watchlists have no social input
The social sentiment row covers Reddit, X and Polymarket, is marked optional, and applies to United States stocks only. The news search integrations are the other route for sentiment; the README says news sources significantly affect sentiment quality and describes Anspire as covering A-share, US and HK news and sentiment retrieval. For an A-share, Hong Kong, Japanese, Korean or Taiwan listing, the sentiment line in the dashboard is therefore written without a dedicated social source behind it. That is a real difference between the report you get for a United States listing and the one you get for a Shanghai listing, and it is invisible from the output, since the format is identical either way. The dashboard also carries a separate market review for the main indices, which means the index level commentary and the per-stock sentiment line rest on different data foundations and should not be read as coming from the same place.
Futu import is IPv4 only, and a custom Tushare URL forwards your token
Two entries in the environment template carry security weight. The Futu OpenD integration is restricted to IPv4, and the template warns that when Docker connects to the host's OpenD you must not use the container's own 127.0.0.1, which in practice means host networking or a routable host address. The import is also scoped: it reads only long positions, only in active real accounts of the normal and master types, and only for the A-share, Hong Kong and United States markets. Separately, Tushare accepts a custom base URL for networks that cannot reach the official endpoint, and the template says plainly that a non-official address means the token and all request content pass through that third party's server. That is a reasonable trade for a public watchlist and a poor one for a private gateway, so it belongs in a decision rather than in a template you copy without reading.
Buy, hold and sell with a score, and no stated calibration
The dashboard this project pushes is a set of judgements: a buy, hold or sell label, a numeric score, a trend reading, entry and exit levels, risk alerts and catalysts. The worked example in the documentation shows scores in the thirties, forties and sixties attached to those labels, which is enough to show the shape of the output and not enough to judge it. The README's sample output does not explain how the score is computed or what the bands mean. Read the number as a compressed model opinion that sits next to the risk lines, not as a value to act on. The more useful part of the output is the risk alert list, because that is the section naming what would invalidate the call rather than restating it.
Editorial conclusion
Adopt daily_stock_analysis if you want a scheduled, push-delivered read on a personal watchlist and are willing to fork it, because with 54,905 forks against 65,790 stars the project's own usage pattern is to copy it and adjust the list. Do not adopt it expecting a signal you can trade from: the buy, hold and sell labels and their numeric scores are model output, and the README's sample output does not say how the score is computed. Two things to settle before the first scheduled run. Decide whether the built-in free quote sources are good enough, because the README says their stability is not guaranteed and the documented fix is a token-based source. And check the exchange-calendars pin, since that library decides whether the job runs on a given day at all.
Frequently asked questions
What does daily_stock_analysis do?
It analyses a watchlist of stocks with an LLM and pushes a decision dashboard to WeCom, Feishu, Telegram, Discord, Slack or email on a schedule. The report carries a core conclusion, a score, a trend reading, buy and sell levels, risk alerts, catalysts and an action checklist, and there is also a web and desktop workbench with history, backtesting and holdings.
Does daily_stock_analysis need paid API keys?
Not for market data. AkShare, Baostock and YFinance are built in and run with zero configuration, though the README says their stability is not guaranteed. Token sources such as TickFlow, Tushare and Longbridge are recommended for long-term scheduled or batch runs. The GitHub Actions path does require at least one AI model key and at least one notification channel.
Which markets does daily_stock_analysis cover?
A-shares, Hong Kong, United States, Japan, Korea, Taiwan, and ETFs, covering quotes, K-lines, technical indicators, news, announcements and fundamentals. The social sentiment source is the exception: it covers Reddit, X and Polymarket and is limited to United States stocks.
How do I run daily_stock_analysis on a schedule?
The default is 18:00 Beijing time every working day, skipping non-trading days including A-share, Hong Kong and United States holidays. You can fork the repository and enable the GitHub Actions workflow after setting the required secrets, or run it locally with the schedule flag. The trading-day decision depends on a pinned exchange-calendars release.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/zhulinsen-daily-stock-analysis)Star history chart for your README
[](https://hysenlabs.com/projects/zhulinsen-daily-stock-analysis)Was this useful?