August 14, 2026 · By YasKad
ZhuLinsen/daily_stock_analysis

daily_stock_analysis: automated stock analysis with language models

ZhuLinsen/daily_stock_analysis · 65,635★ · 54,824 forks

Everything worth knowing about ZhuLinsen/daily_stock_analysis: a Python system that gathers data from several markets, generates decision reports, and delivers them through messaging channels or scheduled jobs.


What daily_stock_analysis is

daily_stock_analysis (also called DSA in its documentation) is a stock-analysis application built on language models. Starting from a watchlist, it fetches quotes, candles, indicators, news, announcements, and fundamental data; it builds a report with a score, trend, possible entry or exit levels, risk alerts, catalysts, and an action list. It does not place trades: even the documented Futu portfolio integration is read-only.

The declared scope covers stocks and ETFs from mainland China, Hong Kong, the United States, Japan, South Korea, and Taiwan. It can be used as a one-off command-line run, a Web and desktop interface, a FastAPI service, a Docker container, a local scheduled job, or a GitHub Actions workflow. Results can be sent to WeCom, Feishu, Telegram, Discord, Slack, or email.

Depiction of automated message distribution from a central server to icons of WeCom, Feishu, Telegram, Discord, and Slack.

The documentation stresses an important limitation: free sources, including AkShare, Baostock, and YFinance, can impose limits, change their interfaces, or fail depending on network conditions. A report is therefore a research aid based on the data retrieved, not an investment recommendation or a guarantee of availability or accuracy.

The origin: a personal project turned multi-market platform

GitHub’s API dates the creation of ZhuLinsen/daily_stock_analysis to January 10, 2026. Its author and main visible contributor is the ZhuLinsen account; the API attributes 442 contributions to the repository, followed by massif-01 with 159 and freesme with 61 at the time of the query.

No launch post from the author or an interview explaining a more detailed founding story was recovered. The verifiable narrative therefore comes from the repository itself: it started with an A-shares focus, and its later documents and releases record support for Hong Kong, the United States, Japan, South Korea, and Taiwan, a Web interface, automation, and an agent layer. The earliest public release recovered in the consulted release notes is the v3 series, which shows active evolution but does not allow earlier versions to be reconstructed with rigor.

Philosophy and principles

The project combines three documented ideas:

  • Repeatable research over a one-off query: a watchlist, market sources, and news feed a structured decision dashboard that the user can repeat daily or schedule.
  • Resilience through multiple sources: the project combines quote providers, fundamental data, and news search, with switching and circuit breakers when a source fails.
  • Separating automation from trade execution: it automates gathering, reporting, and delivery; the Futu import only reads accounts and positions and does not place, modify, cancel, or unlock orders.
  • Gradual configuration: you can start with at least one model key and free sources, but the documentation recommends credentialed sources for scheduled runs and more stable quotes.

Depiction of a digital circuit breaker rerouting a data stream to an alternative path when a source fails.

How it works

The normal flow is: STOCK_LIST or a --stocks argument defines the symbols; the system retrieves market data, news, and context; a model provider builds the analysis; and finally it saves or distributes the report. The interface includes manual analysis, task progress, history, Markdown reports, backtesting, a portfolio, symbol import, and a strategic conversation with agents.

Panels of a dark-mode Web and desktop interface showing manual analysis, task progress, backtesting, and a strategic agent conversation.

Its documented integrations include models compatible with OpenAI, Gemini, Claude, DeepSeek, Qwen, and Ollama; data sources TickFlow, AkShare, Tushare, Pytdx, Baostock, YFinance, and Longbridge; and news search via Anspire, SerpAPI, Tavily, Bocha, Brave, MiniMax, or SearXNG. The configuration priority for model routing is LITELLM_CONFIG → LLM_CHANNELS → legacy keys: enabling a higher layer means the lower ones go unused.

Data-source nodes such as AkShare, YFinance, and TickFlow feeding into a central processing unit.

Logos of AI models such as OpenAI, Gemini, Claude, DeepSeek, and Ollama orbiting a central processing core.

Version v3.29.0, released on August 2, 2026, added the AlphaSift-inspired selection core, run and source history, deep candidate analysis, and evaluation of opinion results. Its release notes describe bounded execution weights that only activate past a threshold of 30 evaluated samples; this is a feature the project states, not independent evidence of financial performance.

Official and semi-official status

The repository links to its own site, https://dsa.zhulinsen.tech, and publishes official images on Docker Hub under zhulinsen/daily_stock_analysis. No evidence was recovered of inclusion in an official AI provider marketplace, of an exchange’s endorsement, or of a standards designation. The GitHub Actions badge in the README only indicates that the repository contains Actions workflows, not certification by GitHub.

Strong fork activity shows community reuse, but that is not the same as official backing. The Docker Hub page recovered showed 99,584 pulls, a measure of image pulls, not of unique users or active installs.

The ecosystem

Repositories from the same author

Querying ZhuLinsen’s public repositories identified these related projects:

Map of a digital ecosystem with daily_stock_analysis as the central node connected to alphasift, alphaevo, MiniAgent, and FastDatasets.

  • ZhuLinsen/alphasift — a stock-selection engine with market discovery, language-model ranking, risk-aware scoring, and auditable evaluation; 328 stars and 189 forks. DSA integrates it as a configurable selection option.
  • ZhuLinsen/alphaevo — a strategy-research and backtesting agent with self-evolution, per its description; 173 stars and 68 forks.
  • ZhuLinsen/MiniAgent — a coding-assistant and command-line agent demo; 185 stars and 40 forks. It belongs to a different domain, not a required component of DSA.
  • ZhuLinsen/FastDatasets — a tool for generating training datasets for language models; 223 stars and 43 forks. It is likewise not a documented dependency of DSA.

Forks, adaptations, and extensions

GitHub’s forks endpoint returned 51,498 forks for the main project. The highest-starred ones recovered were zmm1234/daily_stock_analysis (57), herylee/daily_stock_analysis (34), BigHit1/daily_stock_analysis (18), and freesme/daily_stock_analysis (13). Their descriptions keep the focus on Chinese, Hong Kong, and US market analysis; the query did not demonstrate they constitute independent ports, so they are classified as forks rather than separate products.

Extensions not marked as forks also appeared:

  • BZ-coding/dsa-mcp describes itself as a port of DSA’s analysis capabilities to an MCP server; it had 0 stars at the time of the search. It is a community extension, not an official one.
  • leonlau/daily_stock_analysis-ci describes itself as an automated mirror that builds and publishes a Docker image from DSA releases; it had 0 stars at the time of the search. It is not a distribution maintained by the author.
  • AandBorC/daily-stock-analysis-qitian explicitly presents itself as a learning edition forked from DSA; it had 1 star and 3 forks. Its description is in Chinese, making it a verified non-English community adaptation.

No complete community translations or an official plugin marketplace for DSA were recovered. The main repository does publish official documentation in Simplified Chinese, English, and Traditional Chinese.

Repository numbers

Measurement: August 5, 2026, GitHub API and Docker Hub.

MetricValue
Stars60,185
Forks51,498
Real subscribers233
Open issues reported by the API45
Primary languagePython
LicenseMIT
CreatedJanuary 10, 2026
Latest push recoveredAugust 5, 2026
Latest releasev3.29.0, August 2, 2026
Downloads reported by Docker Hub99,584

The top contributors returned by the API include ZhuLinsen (442), massif-01 (159), freesme (61), Activer007 (29), and birdxs (19). The query recovered the 15 most recent commits, not a full pagination, so no total commit count is stated.

GitHub’s general API duplicates the star count in watchers_count; that is why subscribers_count is reported here as the real subscriber figure. open_issues_count can include open pull requests and should not be read as an issue-only count. The updated_at metadata returned by the API was 2026-08-05T21:21:56Z; it is transcribed literally even though it may postdate the time this research was carried out.

How to contribute

The official guide asks contributors to first search existing issues and use the bug or feature-request templates. For code, the flow is: fork, create a branch such as feature/your-feature, commit, push it, and open a pull request against main. It requires Conventional Commits messages and PEP 8 style with lines up to 120 characters.

The documented continuous-integration checks are backend-gate (build, critical flake8 errors, tests, and network-free pytest), docker-build, and, when apps/dsa-web/ changes, web-gate with npm run lint and npm run build. To test locally, the guide points to ./scripts/ci_gate.sh; for the frontend, npm ci, npm run lint, and npm run build from apps/dsa-web/. Changes to the main Chinese documents must state in the pull request whether the English equivalent was updated.

Continuous-integration pipeline with the backend-gate, docker-build, and web-gate stages showing automated checks.

How the community received it

The direct external evidence recovered is small and does not support claiming consensus. Two Hacker News submissions pointing directly to the repository were located:

  • Thread 48619147, submitted by vantareed on June 21, 2026, got 9 points and 0 comments. The title described it as a multi-market analysis system based on language models. It documents discovery, not a positive or negative community opinion.
  • Thread 48682687, submitted by grajmanu on June 26, 2026, got 2 points and 0 comments. It likewise contains no comments that would support attributing praise or criticism.

No verifiable comments about DSA were recovered in those threads. The automated Reddit search returned a login screen, so no posts are attributed to r/programming, r/selfhosted, r/LocalLLaMA, r/devops, r/netsec, or r/MachineLearning. Nor was a verifiable public conversation from X, a Product Hunt page, a podcast episode, or a newsletter note about the project recovered.

YouTube results were recovered, including videos titled “Daily Stock Analysis” from the zhulinsen channel, “Zero-cost deployment of an AI trading analyst! daily_stock_analysis Complete Guide” from DevCovery, and “Análisis diario de acciones: 32K estrellas en un panel de acciones gratuito con IA” from Pablo finanzas. The search did not reliably expose view counts, so none are estimated. Their existence confirms demo and tutorial material, not an independent evaluation.

The most concrete practical criticism comes from the project’s own documentation: free sources can suffer limits and changes; the FAQ recommends shrinking the list or spacing out requests when the circuit breaker appears. For investment purposes, that warning matters more than the two commentless submissions: a model or an automation does not fix missing, delayed, or limited data.

daily_stock_analysis versus other approaches

No external comparison with methodology, data, and metrics that would support claiming which alternative is superior was recovered. The verifiable comparison is limited to related projects:

ApproachVerifiable relationshipVerifiable difference
ZhuLinsen/alphasiftBoth deal with stock selection and analysis; DSA integrates the AlphaSift-inspired selection core.AlphaSift describes itself as a selection and evaluation engine; DSA adds reporting, an interface, scheduling, and notifications.
BZ-coding/dsa-mcpIts description states it ports DSA’s capabilities to MCP.It is a community extension for exposing capabilities; it does not replace the main product and is not officially maintained.
Forks of daily_stock_analysisThey reuse the repository and keep its description of language-model-based analysis.The query did not verify sufficient technical changes to treat them as independent competitors.

Quick usage guide

Installation and first run

Fast path with GitHub Actions. Fork the repository, open Settings → Secrets and variables → Actions, and set up at least one model key, STOCK_LIST, and a notification channel. Then enable Actions and run Daily Stock Analysis with Run workflow. The official example list is:

STOCK_LIST=600519,hk00700,AAPL,7203.T,005930.KS,2330.TW

By default, the workflow is scheduled on weekdays at 18:00 Beijing time and skips non-trading days. Actions does not use the .env file; sensitive keys belong in Secrets and non-sensitive values, such as STOCK_LIST, in Variables.

Local path. Requires Python 3.10 or later. The official first run is:

git clone https://github.com/ZhuLinsen/daily_stock_analysis.git && cd daily_stock_analysis
pip install -r requirements.txt
cp .env.example .env
python main.py

At least one model configuration and a stock list must exist in .env. The first result combines stock analysis and a market review, unless changed with command-line options.

Docker path. The guide recommends Docker Compose for a portable installation:

docker-compose -f ./docker/docker-compose.yml up -d server
docker-compose -f ./docker/docker-compose.yml logs -f server

The server service provides the API and Web interface; analyzer runs scheduled jobs. The interface normally opens at http://127.0.0.1:8000 when started locally. For normal load the guide recommends 1 GB of memory per service; with 512 MB it advises a single service, a single stock, and low concurrency.

Common workflows

  1. Analyze a temporary list:
    python main.py --stocks 600519,hk00700,AAPL,2330.TW
    Overrides the list for that run and generates the report for the indicated set.
  2. Market review without individual stocks:
    python main.py --market-review
    Runs only the market review.
  3. Check data retrieval without using the model:
    python main.py --dry-run
    Retrieves data but does not run AI analysis.
  4. Schedule local analysis:
    python main.py --schedule
    Starts scheduled mode, which reloads STOCK_LIST before each run.

Other official commands are python main.py --debug, python main.py --no-notify, python main.py --workers 5, python main.py --webui, and python main.py --webui-only. The python main.py --portfolio futu option reads LONG positions from Futu OpenD and takes priority over --stocks and STOCK_LIST; it does not operate on the account.

Essential configuration

  • STOCK_LIST: the symbol list. English commas are the recommended format; the app also normalizes other common separators.
  • One model key: this can be GEMINI_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, ANSPIRE_API_KEYS, AIHUBMIX_KEY, or an Ollama/channels configuration. Without a usable configuration, there is no AI analysis.
  • LLM_CHANNELS or LITELLM_CONFIG: for multi-model routing; both take priority over legacy keys.
  • SCHEDULE_ENABLED, SCHEDULE_TIME, and SCHEDULE_TIMES: enable and set one or more scheduled times; the default for SCHEDULE_TIME is 18:00.
  • MAX_WORKERS: controls concurrency; the documented value is 3. On 512 MB installs, the guide advises 1.
  • Delivery channel: for example TELEGRAM_BOT_TOKEN together with TELEGRAM_CHAT_ID, or DISCORD_WEBHOOK_URL. At least one channel must be configured for automatic alerts.

Common pitfalls and fixes

  • Wrong prices for US symbols: the FAQ states that, if the problem persists, set YFINANCE_PRIORITY=0 to prioritize Yahoo Finance.
  • Rate limits or empty results from free sources: shrink the list or increase the interval between runs; the system tries to switch sources and uses a circuit breaker, but it cannot guarantee third-party data.
  • Keys not seen by GitHub Actions: store keys in Secrets and values such as STOCK_LIST in Variables; a local .env does not apply to Actions.
  • .env changes ignored in Docker: restart the containers. To keep changes made from the WebUI, use ENV_FILE pointing to a writable file on a volume, such as /app/data/runtime.env, and avoid startup variables with the same name overwriting it on the next restart.
  • Ollama not responding: use OLLAMA_API_BASE, not OPENAI_BASE_URL; the model must carry the ollama/ prefix, for example LITELLM_MODEL=ollama/qwen3:8b.
  • Messages too long: enable per-stock delivery with SINGLE_STOCK_NOTIFY=true or use REPORT_TYPE=simple.

Integrations and migration

DSA integrates with GitHub Actions, Docker Compose, FastAPI, WebUI, and messaging channels. To turn a local install into a container, the guide recommends copying the configuration into .env and bringing up server or analyzer with Compose; the documented persistent directories are ./data/, ./logs/, and ./reports/.

To bring analysis capabilities to an MCP-compatible client, the community project BZ-coding/dsa-mcp exists, but no official documentation describing a migration or DSA support for it was recovered. Switching between model providers happens in configuration: you can go back to legacy keys by removing LITELLM_CONFIG and LLM_CHANNELS, or use those layers for advanced routing. No automated migration tool from another stock-analysis platform was documented.

Use cases and who this repository can help

  • People tracking stocks across more than one market can centralize a list spanning mainland China, Hong Kong, the United States, Japan, South Korea, and Taiwan, and receive a daily report with data and news context instead of manually gathering each source.
  • Anyone who needs a reproducible personal research routine can run --dry-run to validate data, --stocks for a scoped query, and --schedule or GitHub Actions to automate repetition. This is useful for tracking, not for delegating buy-or-sell decisions.
  • Teams already working with operational messaging can send reports to Telegram, Discord, Slack, email, WeCom, or Feishu, keeping computation separate from distribution.
  • Developers of financial AI tools can reuse the API, the Web interface, model support, and the MIT-licensed open-source data design; for proposed changes, the guide provides server tests, Docker builds, and frontend checks.
  • Futu users looking to analyze existing positions can import LONG stocks in a read-only way with --portfolio futu, keeping trade execution and custody outside the application.

Barrier separating automated data gathering and analysis on the left from a locked, read-only trading terminal on the right.

Resources


Note: this article combines DSA’s README and official documentation, the GitHub API, Docker Hub, Hacker News results, and a YouTube search consulted on August 5, 2026. Figures change over time.

Comments