Back

A-Share Panel 2.0

A-Share Panel 1.0 (Archived)

Why it changed

A-share positions used to be the “recreational allocation” inside this quantitative system: a RMB 20,000 cap, swing-trading experiments, and a hard stop when the allocation was gone. That role was retired in August 2026. The capital pool grew, participation increased, and A-shares became a market treated as seriously as U.S. and Japanese equities. A small experimental interface could no longer support real daily decisions. I therefore rebuilt the whole panel around how I actually use it on each trading day—not to add features, but to answer one question: during the ten minutes around the open, what do I need to see at a glance?

Portfolio overview

Portfolio overview · historical snapshot as of 2026-08-19

Cost, market value, unrealized P&L, realized P&L and number of holdings: five figures describe the account. The position cap is drawn directly as a progress bar, and the cap itself can be edited inside the panel. Every change remains in the audit trail, so discipline does not depend on memory.

Market layer

Market layer · historical snapshot as of 2026-08-19

CSI 300, CSI 500 and ChiNext divide the market by economic dimension—large cap, small and mid cap, and growth—rather than by exchange administration. Each index has four readings: distance from its annual moving average (SMA200/250), drawdown from the 250-day high, position in the 60-day range, and volume percentile. It is a water gauge, not an instruction engine: it displays facts and emits no position directive. The “AI market interpretation” control in the top right is the sole exception, described in the AI interpretation section.

Sector layer

Sector layer · historical snapshot as of 2026-08-19

Using Sina’s 49-industry classification, the day’s top five and bottom five are visible at a glance. The full table adds five-day and twenty-day interval returns plus rotation strength. Those two readings are built from the panel’s own daily snapshots. When there is not enough data, it says “accumulating x/N,” publishes no value and makes no extrapolation. If a refresh fails, the panel falls back to the latest successful snapshot from that day and marks it “as of HH:MM · this refresh failed.” Old data may still be useful, but it must admit that it is old.

Economic calendar

Economic calendar · historical snapshot as of 2026-08-19

A graded event stream for the coming two weeks. The source’s four importance levels are mapped to three, then only levels two and three are shown. The filter is “Chinese events at level 2 or above, plus overseas events only at level 3.” Macro releases include previous, expected and reported values; company events are timed “subject to the company announcement.” It replaces a manual event register that was never used. The best fate for an unused feature is retirement.

Holding cards: two-layer grid

Holding cards: two-layer grid · historical snapshot as of 2026-08-19

The first layer contains only the decision loop: current price, chandelier line, distance to that line, initial stop, shares, average cost, days held, market value, unrealized P&L, portfolio weight, and previous and next earnings dates. Twelve cells are sorted by distance to the chandelier line, with the nearest risk first. Background indicators such as RSI, MACD and volume ratio move into the second layer and appear only when opened. That layer also contains peer cross-sections, a financial summary and the AI interpretation entry. Concentration breaches, T+1 sale restrictions and unadjusted prices remain visible as warning chips. The chandelier trailing stop is the system’s only mechanical discipline: anchored to the opening date, with a hard floor at 0.80× average cost, and written on every card.

Watchlist

Watchlist · historical snapshot as of 2026-08-19

An observation pool. Every security automatically passes through seven hard exclusions, including ST status and pledges. When a source degrades, each rule states which date its data came from and why. The panel also gives an initial-stop reference assuming entry now: entry−min(3ATR,15%). Its identity is written at the top: an execution tool, not a stock picker; it does not predict and is not a buy signal.

Holding registration

Holding registration · historical snapshot as of 2026-08-19

A separate A-share ledger using the moving-average method and including commissions and stamp duty. A purchase made today is automatically marked unavailable for sale under T+1. The share-count arrows move in lots of 100, while direct entry remains unrestricted. After a purchase is recorded, the security automatically enters data collection and the holdings area. The ledger is the panel’s source of truth, not a transaction list filled in after the fact.

Tradable market segments

Tradable market segments · historical snapshot as of 2026-08-19

Trading permissions for each market segment are configured by checking a box. Disabled segments can still enter the watchlist, but their cards keep a “no trading permission” marker. If access is granted later, checking the box removes the marker automatically, without changing a line of code. The change is recorded as usual.

AI interpretation layer

The panel’s objective layer is strictly non-directional: no card, ranking or sort order implies a trade. The AI interpretation area is the sole exemption, paid for by four restraints: a separate area, on-demand activation, a header that always reads “AI opinion · unverified · not a system signal,” and the heaviest restraint—scoring. Every interpretation stores its input snapshot, full output, style and contemporaneous price. Actual returns are filled in automatically at T+5 and T+20. The record page groups hit rate and neutral rate by style, and draws no conclusion from fewer than twenty samples. Conservative, balanced and aggressive styles share eight iron rules; the first is that they must never recommend breaking stop discipline. If something cannot be tested through a preregistered backtest, it should at least be auditable afterward.

Technical notes

The application runs locally with Flask + PyWebView, stores data in SQLite and has no cloud dependency. On the data side, akshare aggregates several public sources: prices and sectors from Sina, scheduled earnings from CNInfo, and the economic calendar from Wallstreetcn’s macro calendar. Sources subject to persistent rate limits have an implemented circuit breaker: failures are skipped quickly, half-open probes restore service automatically, and probe logs accumulate success rates as the recovery criterion. Every degradation is stated in the interface; there is no path that presents old data as new. On the AI side, DeepSeek V4-Pro in thinking mode handles interpretation, while Bocha Search covers news. News windows are filtered strictly by publication date, and the two sources share a hard daily budget cap. Engineering discipline includes globally serial data collection to prevent concurrent failures, nine suites with 358 permanent regression checks, and complete audit trails for five classes of change: position caps, trades, market permissions, peer groups and AI opinions. Features rejected during the rebuild are documented as fully as features that shipped. Strategies that fail preregistered backtests are archived without parameter rescue. That casualty list and the panel itself are two faces of the same method.