Model or dataset
ArvinLovegood/go-stock avatar
ArvinLovegood/go-stock

ArvinLovegood/go-stock: A Local-First AI Stock Analysis Desktop App in Go

🦄🦄🦄AI赋能股票分析:AI加持的股票分析/选股工具。股票行情获取,AI热点资讯分析,AI资金/财务分析,涨跌报警推送。支持A股,港股,美股。支持市场整体/个股情绪分析,AI辅助选股等。数据全部保留在本地。支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型。

7,748 stars1,357 forksGoGPL-3.0

At a glance

What is it?
go-stock is a Wails and NaiveUI desktop application that pulls A-share, Hong Kong and US market data, runs it through a configurable LLM, and keeps the data on your machine. It is a research toy with real plumbing, and the documentation is thinner than the feature list suggests.
Who is it for?
Adopt go-stock if you want a local desktop workspace that puts an LLM next to A-share, Hong Kong and US quotes, and you are willing to read the Chinese manual and treat the AI output as a study aid rather than a signal. Skip it if you need a headless service, a documented API, or anything you would run unattended against real money.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What go-stock actually is, and who it is for

go-stock is a desktop application, not a library and not a service. The README describes it as built on Wails and NaiveUI, with an AI model layered on top for stock analysis. It covers A-shares, Hong Kong stocks, US stocks, and exchange-traded funds, and it keeps data locally. That last point is the design centre: the app is a personal workstation, and the README states plainly that data is retained on the local machine.

The intended user is an individual investor or hobbyist who already follows Chinese and Hong Kong markets and wants an LLM in the loop. The README is explicit about the framing: the project is for entertainment, and AI analysis results are for study and research. That sentence is doing real work. It tells you the maintainer does not position this as an execution or advisory system.

The feature list is broad. The README mentions three AI agent modes (React, PlanExecute, DeepAgents), more than 150 AI data tools, a skills system, MCP extension support, a floating AI assistant, candlestick analysis with adjustment switching and wave theory, intraday and tick data, call auction data, capital flow, market news aggregation, dragon-tiger lists, limit-up ladders, unusual-movement monitoring, a knowledge base with long-term memory, daily operation plans, trade journals, scheduled alerts, and push to Feishu or DingTalk. Read that list as a map of the app's surface area, not as a promise that each item is finished.

Wails, a Go backend, and an LLM provider you choose

The architecture is visible from the repository layout. The top level holds main.go, app.go, and platform-specific files named app_windows.go, app_darwin.go and app_linux.go. That is the Wails pattern: a Go process owns the application lifecycle and exposes bindings to a web frontend, and the platform files carry per-OS behaviour. The frontend directory holds the NaiveUI interface, and ai-assistant-web holds the assistant surface.

The module file shows how the AI layer is wired. go-stock depends on github.com/cloudwego/eino and a set of eino-ext model components: ark, claude, deepseek, gemini, ollama, openai, openrouter, and qwen, plus an MCP tool component. Eino is the orchestration framework, and each component is an adapter for one provider. That explains the provider table in the README: OpenAI-compatible endpoints, Ollama, LMStudio, AnythingLLM, DeepSeek, Zhipu, Volcengine Ark, Alibaba DashScope, Moonshot, Tencent Hunyuan, iFlytek Spark, MiniMax, Xiaomi MiMo, and aggregators such as SiliconFlow. Adding a provider is an adapter problem, not a rewrite.

Market data comes through github.com/bensema/gotdx, a TDX protocol client, which is how the app reaches Chinese market quote feeds. Storage is SQLite. The go.mod comments are unusually candid here: gorm's official SQLite driver blank-imports mattn/go-sqlite3, which requires CGO, so go-stock replaces that module with a stub package in third_party/mattn-sqlite3-stub and uses modernc.org/sqlite instead, keeping the build pure Go and avoiding two SQLite implementations in one binary. That is a deliberate trade: pure-Go builds are easier to cross-compile, and the maintainer accepted the substitution to get them.

There is also a browser automation dependency, chromedp, which suggests some data paths are scraped from pages rather than read from a clean API. The README does not document which sources are scraped and which are not, so treat that as an open question if scraping stability matters to you.

Installing go-stock and running your first analysis

The README points to prebuilt binaries rather than a source build for first use. Two are named: go-stock-windows-amd64.exe, described as the green or portable build, and go-stock-darwin-universal for macOS. Both are linked from the releases page. There is no Linux binary named in the README, even though the repository carries app_linux.go and update_helper_linux.go. The README also states that development happened mainly on Windows 10 and that other platforms are untested or have limited functionality.

So the shortest path is to download the Windows portable executable from the releases page and run it. Nothing to install, no package manager step. If you prefer to build from source, the repository is a Wails project, so you would use the Wails CLI against wails.json, but the README does not spell out that procedure and I am not going to invent one.

After launch, the first real task is choosing a model. The provider table lists many options; the practical split is between a cloud API key and a local runtime. Ollama and LMStudio are both listed as local large-model platforms, which means you can point the app at a model running on your own machine and send nothing to a vendor.

Once a provider is configured, the natural first use is a single-stock analysis rather than a screen. Pick a symbol you already know well, open its chart view, and ask the assistant about it. You should see the model's answer alongside the quote data the app fetched, with the data staying on disk.

The alerting path is the other early thing to try, because it is the feature with an external side effect. The README lists scheduled alerts and push to Feishu or DingTalk. Those are configured in the app, and the README does not document the webhook fields, so expect to read the Chinese manual in docs/go-stock使用手册.md for the exact keys.

The limits the README admits, and the ones it does not

Start with the admitted ones. The project is described as for entertainment, and AI analysis is for study and research. That is not boilerplate; it is the maintainer telling you the output is not validated. An LLM reading a news feed and a capital-flow table will produce fluent text regardless of whether the underlying data arrived correctly, and nothing in the README describes a correctness check on the model's claims.

Platform support is the second admitted limit. Development was mainly on Windows 10, and the README says other platforms are untested or limited. The macOS build is published, so it exists, but the README does not claim it is verified to the same degree.

The third limit is documentation language and depth. The README is in Chinese, and the usage manual is a single Chinese markdown file. If you do not read Chinese, you are working from the README table and the UI itself. The README does not document rollback, does not document a headless mode, and does not document a stable public API for the data layer.

Then there is the update path. The repository contains update_helper_windows.go, update_helper_darwin.go and update_helper_linux.go alongside a go-update dependency, so the app can update itself. The README does not describe how updates are signed or verified. For a tool that holds your local database and your API keys, that is worth knowing before you enable anything automatic.

Finally, the release cadence. Releases are dated 2026-09-09, 2026-09-08 and 2026-09-08, and the last push to the repository was on 2026-09-10. That is a fast-moving project. Fast movement cuts both ways: features arrive quickly, and the version you installed last week may behave differently from the one documented today. The README itself says to prefer the newest release.

How go-stock differs from a Python quant stack or a charting terminal

The obvious alternative for this kind of work is a Python stack: akshare or tushare for data, pandas for transformation, backtrader or vectorbt for testing, and a notebook for the LLM calls. The difference is not capability, it is shape. A Python stack gives you a scriptable pipeline you can version, test and schedule. go-stock gives you a compiled desktop app with a UI, a local database and an assistant panel. If your goal is a repeatable screen that runs every morning and writes a file, the Python route is the one that fits, and go-stock is the wrong tool.

The other comparison is with charting terminals such as the desktop clients brokers ship. Those are strong at charting, order entry and real-time quotes, and they are connected to your account. go-stock does not place orders. What it adds over a terminal is the model layer and the local knowledge base: you can ask questions about a symbol and keep a trade journal next to the analysis. What it gives up is execution and the operational reliability of a vendor-supported product.

A third comparison is with hosted AI stock tools. Those run the model server-side and you send them your watchlist. go-stock's stated position is the opposite: data stays local, and you can point it at Ollama or LMStudio so the model runs locally too. If you are comfortable with a hosted service and want zero setup, the hosted tool wins on effort. If the reason you are looking at this project is that you do not want your positions leaving your machine, that constraint is the whole point and the hosted tools do not satisfy it.

Maintenance, licence and what GPL-3.0 means for you

Maintenance looks current. The last push was on 2026-09-10, and the most recent release is v2026.09.09.1-release from 2026-09-09. The repository is not archived. The README states that the software is in rapid iterative development and asks users to test and use the newest release. That is a fair description of the cadence, and it also means you should expect churn rather than a frozen interface.

The upgrade cost is tied to that cadence. There are platform-specific update helpers and a go-update dependency, so the app can replace itself. The README does not document a migration path for the local SQLite database, and it does not document whether a schema change between releases is handled automatically. If you keep a trade journal or a knowledge base in the app, that is the thing to back up before upgrading, and the README does not tell you where that file lives.

The licence is GPL-3.0. For an end user running the binary, that is unremarkable. For anyone who wants to take this code into a closed product, it is not: GPL-3.0 is a copyleft licence, and distributing a modified version carries source obligations. If you are evaluating go-stock as a base for something you intend to ship, that is a design constraint to check with your own counsel, not something the README resolves. The project also carries CONTRIBUTING.md, CODE_OF_CONDUCT.md and SECURITY.md at the top level, so there is a defined channel for reporting problems.

Editorial conclusion

Adopt go-stock if you want a local desktop workspace that puts an LLM next to A-share, Hong Kong and US quotes, and you are willing to read the Chinese manual and treat the AI output as a study aid rather than a signal. Skip it if you need a headless service, a documented API, or anything you would run unattended against real money. Before relying on it, verify which LLM provider you can actually reach, confirm the platform build for your machine, and check that the data you care about is the data the app fetches.

Frequently asked questions

What is go-stock?

It is a desktop stock analysis application built with Wails and NaiveUI, with an AI model layer for analysis. The README says it covers A-shares, Hong Kong stocks, US stocks and ETFs, and that data is kept locally.

What is go-stock up to?

The README describes it as under rapid iterative development and asks users to test and use the newest release. The last push to the repository was on 2026-09-10, and the most recent release listed is v2026.09.09.1-release.

Is go-stock a good investment tool to rely on?

The README states the project is for entertainment and that AI analysis results are for study and research only, with an explicit risk warning. It does not place orders and does not claim validated accuracy.

Which AI models and platforms does go-stock support?

The README lists OpenAI-compatible endpoints, Ollama, LMStudio, AnythingLLM, DeepSeek, Zhipu, Volcengine Ark, Alibaba DashScope, Moonshot, Tencent Hunyuan, iFlytek Spark, MiniMax, Xiaomi MiMo and aggregators such as SiliconFlow. The go.mod file shows separate eino-ext adapters for ark, claude, deepseek, gemini, ollama, openai, openrouter and qwen.

What platforms can run go-stock?

The README links a portable Windows build and a macOS universal build. It states that development was mainly on Windows 10 and that other platforms are untested or have limited functionality, and no Linux binary is named in the README.

Official sources

  1. ArvinLovegood/go-stock on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/arvinlovegood-go-stock.svg)](https://hysenlabs.com/projects/arvinlovegood-go-stock)