Assay · User Guide
Applies to: Desktop 0.3.2 · Web app at assay.onepbdc.com/m/ · Data package 2026-09-11 · Guide dated 2026-09-15
This guide is for people who use Assay to look at companies.
Contents
- 0. Before you start: what Assay is, and is not
- 1. Pick an edition
- 2. Install and first launch
- 3. Accounts, sign-in and membership
- 4. The interface at a glance
- 5. Page by page
- 6. Data and updates
- 7. How to read the numbers (required)
- 8. FAQ and troubleshooting
- 9. Privacy, terms and contact
- Appendix A: Glossary
- Appendix B: Pages and permissions
0. Before you start: what Assay is, and is not
Assay does one narrow thing: it reads the numbers a listed company signs in its SEC filings and pins the contradictions between them, quarter by quarter, in plain sight. The classic one is "profit is positive, operating cash flow is negative" — both figures are in the filing, both reconcile, and the gap between them cannot lie. Every finding traces back to an EDGAR accession number.
It is made of three instruments, all derived from the same filings, so they never disagree about what a company reported:
| Instrument | The question it answers |
|---|---|
| Company Doctor (checkup, vital signs, attribution, prescriptions, Operating Score) | Where do this company's latest-quarter numbers fail to add up? |
| Cockpit and Ledger (universe status, new alerts, insider and congressional trades, Market Weather) | Across the whole coverage, who developed a new problem this quarter? Did the market notice? |
| Daily Forecast and the scoring desk | When the system (or you) made a call, how did it fare afterwards — and what did it cost? |
Three things it is not. Please read these first:
- Not investment advice. It outputs observations and probabilities, tailored to nobody's circumstances. Any decision you make, and its consequences, are yours.
- Not a price predictor. The seven-dimension Operating Score was back-tested and has no predictive power for returns; not one registered forecast model has yet produced a consistently positive skill score (skill scores near zero). The interface publishes those negatives as they are.
- It detects operating decay, not fraud or off-balance-sheet risk. It reads only structured XBRL fields; off-balance-sheet leverage, refinancing risk, Level 3 valuations and legal liabilities are invisible to it. Companies later named in SEC enforcement actions looked, beforehand, like everyone else on this checkup.
How useful it is has a checkable number. The library holds labels for 203 companies that later filed for bankruptcy (each anchored to an 8-K), 140 of them evaluable. Raising an alarm on "three or more anchored alerts per quarter on average" lights up 142 companies, of which 75 actually went bankrupt (precision 53%) — but simply "has any alert" carries almost no information, since nine in ten companies do. Keep both sentences together.
1. Pick an edition
| You want to | Use | Install | Account? |
|---|---|---|---|
| Look at company checkups on a PC, offline | Desktop (Windows / Linux) | One installer (~130 MB) | Not for the free tier; Company Doctor etc. need sign-in + membership |
| Install nothing, just open it | Web app https://assay.onepbdc.com/m/ | Nothing (first load a few tens of MB, then cached) | Same |
| Look on a phone, offline | Mobile (iOS / Android) | In testing, not yet in stores | Same |
| Take the raw data into SQL / a notebook | Data package (~20 MB, 22 Parquet files) | Anything that reads Parquet | No |
Desktop, web and mobile run the same front end, the same queries and the same data package; only the shell differs. The page descriptions below apply to all three.
Queries run on your own device. Which companies you look at and what you search never leave your machine. The server does exactly one job — keeping score (sign-in, membership, forecast submissions, paper trading) — because a record has to live somewhere the person being scored cannot edit.
2. Install and first launch
2.1 Windows 10 / 11 (64-bit)
- Open https://assay.onepbdc.com/, scroll to Download, and get
Assay-0.3.2-Windows.zip(132 MB). - Optional but recommended: verify the hash. The download section prints the zip's SHA-256. In PowerShell:
powershell Get-FileHash .\Assay-0.3.2-Windows.zip -Algorithm SHA256Install only if it matches. - Unzip and double-click
Assay.Setup.0.3.2.exe. - The installer is not yet code-signed, so Windows SmartScreen shows "Windows protected your PC". Click More info → Run anyway.
- Launch Assay from the Start menu. First launch lands on the Cockpit; no registration needed.
The install folder contains resources\legal\LICENSE and THIRD-PARTY-NOTICES, readable even if the app will not start.
2.2 Linux
- Any distribution: download
Assay-0.3.2.AppImage(162 MB),chmod +xit and run. - Debian / Ubuntu: download
assay-desktop_0.3.2_amd64.deb(130 MB) andsudo apt install ./assay-desktop_0.3.2_amd64.deb.
A machine without a desktop environment (bare WSL, for example) will lack Electron's runtime libraries and complain about libnspr4.so or similar; install the usual desktop libraries (libnspr4 libnss3 libgtk-3-0t64 libgbm1 libasound2t64 …).
2.3 Web app
Open https://assay.onepbdc.com/m/. On first load a splash screen walks through three stages: downloading the data package (~25 MB), downloading the query engine (~8 MB compressed), and compiling the engine (a few seconds). This happens once; the browser caches everything and later opens are instant. If the connection drops while the page is open, local queries (Company Doctor, insider trades, coverage, …) keep working; reopening the page needs the network.
- Desktop Chrome / Edge / Firefox / Safari all work; so do phone browsers — the layout is designed at phone width.
- In a private window the browser may block local storage; the app will then think you are signed out and stay on the sign-in form. Use a normal window.
- The web app stores only your session token and language choice in browser local storage.
2.4 What you see first
All three editions open on the Cockpit as a guest: the bottom bar shows Cockpit, Ledger and More, and under More you can open Coverage Check, Data Health and About & Licence. Company Doctor, Operating Score, Market Weather, Insider Trades and Daily Forecast need a sign-in and a membership — see section 3.
2.5 Language
The interface ships complete Chinese and English copy. The default follows your system: Chinese locales get Chinese, everything else English. Switch under the top-right avatar → Language; the sign-in page has a toggle too. The choice is remembered.
Content returned by the backend (company names, the checkup's headline sentences, prescription text, 10-K excerpts) is not translated — it is data, not interface.
3. Accounts, sign-in and membership
3.1 What works without signing in
Guests (and registered accounts without a membership) get the free tier:
- Cockpit: universe checkup status, this quarter's new alerts
- Ledger vs Ticker (for companies with an operating ledger)
- Coverage Check, Data Health, About & Licence
- The public forecast scorecard (via the public endpoint and the daily evidence files, see 5.8)
- Data package download and verification
The free tier never needs an account — "a record you must pay to inspect is not a record."
3.2 Register
Open any page that needs a sign-in and you land on the sign-in form. Tap "No account yet? Create one":
- Choose a password (at least 6 characters).
- Type the 4-character captcha (case-insensitive; tap the image for a new one).
- Tap Create account.
The system assigns a numeric account ID (e.g. 20000123) and shows it once. Write it down immediately — it is your sign-in name and will not be shown again. No email, phone number or name is required.
Limit: at most 5 registrations per hour from one IP address; wait an hour if refused.
3.3 Sign in
Three fields: Account (the numeric ID — not a username, not an email), Password, Captcha. The password is hashed on your device before it is sent; the plain text never leaves your machine.
Sessions are issued by the scoring server. The same account signed in on desktop and web shares one session; signing out in one place signs out the other.
3.4 Plans and prices
| Free | Pro | Lab | |
|---|---|---|---|
| Price | $0 | $12 / month or $96 / year | $29 / month or $240 / year |
| Cockpit, Ledger vs Ticker, Coverage Check, Data Health | ✅ | ✅ | ✅ |
| Yesterday's Market (top-10 gainers / losers / volume, indices, FX, rates, metals, futures; the checkup score column and the close-vs-estimated-value board need Pro) | ✅ | ✅ | ✅ |
| Company Doctor: vital signs, attribution, prescriptions | — | ✅ | ✅ |
| Operating Score (seven dimensions) | — | ✅ | ✅ |
| Market Weather, Stance | — | ✅ | ✅ |
| Insider and congressional trades | — | ✅ | ✅ |
| Daily Forecast subscription and submissions | — | ✅ | ✅ |
| Paper trading and My Scorecard | ✅ | ✅ | ✅ |
| Strategy Lab (back-tests) | — | — | ✅ |
| API keys for programmatic access | — | — | ✅ |
Prices are in US dollars; at checkout you can settle in USD or CAD. Billing goes through Stripe; Assay never sees or stores your card number.
3.5 Upgrade, manage, cancel
Upgrade: sign in, open More → Membership, tap "Upgrade to pro" or "Upgrade to lab", choose a currency, and pay on Stripe's checkout page; you are sent back to the app afterwards. Membership takes effect immediately, no re-sign-in needed — every request re-reads the membership table. If the menu has not grown new entries when you return, reload the page once.
Manage / cancel / change card / invoices: More → Membership → Manage subscription opens the Stripe billing portal. After cancelling, access continues to the end of the paid period and then stops; there is no grace period and no retention pop-up.
Refunds (full text at /legal.html on the site):
- No pro-rated refund of the rest of a monthly or yearly period after cancellation.
- Billing mistakes (duplicate charges, charges after a cancellation took effect, a plan you did not choose) are refunded in full if reported within 60 days.
- Yearly plans: cancel within 14 days of the first payment without having used the paid features, and it is refunded in full.
- Refunds go back to the original payment method, usually within 5–10 business days.
3.6 Permissions: why some pages are missing
Menus and the bottom bar follow permissions. A page you cannot see is not hidden; the account simply cannot call that group of endpoints. Each page's permission is listed in Appendix B.
- Free account / guest:
STOCK_QUERY+LEDGER_VIEW - Pro: adds
DOCTOR_VIEW - Lab: adds
BACKTEST_RUN - Trade and My Scorecard (
ORDER_PLACE/ACCOUNT_VIEW) are open to every registered account, free tier included: sign up and you get USD 100,000 in virtual cash. You can only act on and view your own account.
When a membership lapses or is revoked, its permissions are withdrawn immediately. Roles changed by an administrator need a fresh sign-in (roles are issued with the session).
If you sign in and a page says "These pages are not open to you yet", it lists the permissions you hold — compare with Appendix B to see which one is missing. Signing in again does not change permissions; do not loop on it.
3.7 Change or forgotten password
- Change: More → Change Password. Enter the current and new password. The current session stays valid; the new password applies from the next sign-in.
- Forgotten: accounts have no email attached, so there is no self-service reset. Write to support@onepbdc.com with your account number; an administrator resets it and sends you the new password. Keep your account number and password in a password manager.
3.8 Sign out
Top-right avatar → Sign out. You return to guest status; the free tier keeps working.
4. The interface at a glance
A single-column, phone-first layout (the desktop window caps at 980 px wide).
Bottom bar: Cockpit · Ledger · Doctor · Trade · My Scorecard · More. Which tabs light up depends on permissions; guests see three.
Top-right avatar (shows the last two digits of your account): account, role, permission list, language toggle, sign out.
Ticker strip (top of Cockpit, Company Doctor and others): a search box that matches ticker, company name or industry; by default it lists the companies with the most new alerts this quarter. Once you pick a company, Company Doctor, Operating Score, Insider Trades, Market Weather and Stance share the same current company — no re-selecting when you switch pages.
Status chips (used everywhere):
| Shown | Meaning |
|---|---|
| Alert | The metric tripped its criterion |
| Watch | Close to the criterion |
| Not triggered | Normal |
| No basis | Cannot be judged — the year-ago base was distorted by a restatement, the prior-year quarter is missing, or the metric is not judged at all. This is not "normal". |
| New / Ongoing | First appeared this quarter / already present last quarter |
Colour rules: only the anchored layer (figures that reconcile to the filing) gets semantic colour and counts toward ratings; the structural layer (customer concentration, overdue share, …) is greyed and labelled "not judged". Forecast probabilities are never coloured. Colour always appears together with a text label and never carries meaning alone.
5. Page by page
5.1 Cockpit (free)
The landing page. Four blocks, top to bottom:
- Reconciliation gate: "N checks reconciled · zero variance" — the synthesized operating ledger equals the 10-K disclosed totals line by line. A quarter that fails reconciliation is unusable for any judgment, hence it comes first. Desktop and web have no local ledger layer, so the gate is not shown there.
- Universe checkup · latest quarter: counts of all checked companies by latest-quarter status (Alert / Watch / Not triggered / No basis). Status is decided by the anchored layer only.
- New alerts: companies whose alert findings first appeared this quarter and were absent last quarter. Chronic problems are not re-counted — otherwise an old issue would ring every day. Tap a company to open its Doctor page.
- My watchlist: your watchlist (shared with the Daily Forecast; edit it there). Each company shows one anchored finding most worth reading, plus the count of insider-sale filings in the last 90 days and a "year-ago base distorted by restatement" flag. Neither of those is coloured: a sale is a fact, not a judgment; the restatement flag says "this quarter's year-over-year cannot be judged", not "the company got worse" — restated companies look cleaner in the findings, which is exactly why the flag is listed separately.
The footer states "N companies checked · read from a materialized snapshot · not real-time" with the snapshot time.
5.2 Ledger vs Ticker (free)
A company's operating ledger and its share price on one chart.
- The picker lists only the few dozen companies with an operating ledger (order-, invoice- and purchase-order-level detail); other companies have anchors and checkups but no CCC / DSO / DIO / DPO — filings do not disclose those.
- Four header tiles: revenue (USD millions), year-over-year, gross margin, CCC days.
- Chart 1: revenue YoY vs in-quarter price return. Both are same-period percentage changes on one shared scale — quarters where they diverge are where the books and the tape disagree.
- Chart 2: cash conversion cycle (DSO + DIO − DPO, days).
- Market language: a volume × price × checkup quadrant scatter. Up on volume is healthy, up on thin volume is a warning, down on volume is panic, down on thin volume is a standoff; volume only confirms, it does not give direction. Toggle between the "post-filing" and "in-period" windows; the in-period window contains look-ahead bias and is for comparison only.
- Quarterly table: revenue, gross margin, CCC and return per quarter. Note that "in-quarter return" is the price change within the fiscal quarter, not the reaction after disclosure.
This page needs prices, so desktop and web hand it to the server. Offline it shows "the local edition has no market data" — not a fault.
5.3 Company Doctor (Pro)
A checkup report for one company, one fiscal quarter. After picking a company, top to bottom:
Scope note: how many anchored metrics were examined, and the five categories explicitly out of scope: off-balance-sheet leverage, debt maturity structure, Level 3 assets, legal liabilities, refinancing risk.
Anchored: one card per finding, each with
- metric name and status chip (Alert / Watch / No basis), New / Ongoing;
- a one-line conclusion, e.g. "Operating cash flow −372 USD m, down 41% YoY, prior year +630";
- the basis: "same quarter last year FY2024 Q3" (YoY), "peer distribution (median of same-industry companies)" (cross-section), or "industry rule-of-thumb threshold (a configured value, not a disclosed one)".
Normal findings are folded under "N more normal signs"; expand to read them.
Anchored metrics include: revenue, gross margin, net margin, contract liabilities, operating cash flow, cash conversion (OCF / revenue), DSO, DIO, DPO, cash conversion cycle, accrual ratio, TTM free cash flow, profit without cash, payables-propped cash, net debt / OCF, shareholder equity (negative equity), HTM securities eroding equity (financials), ROIC minus cost of capital and its durability, capex intensity, incremental ROIC, invested-capital change, working-capital model, and the YoY baseline (restatement).
Structural: customer concentration, overdue receivables share, order count, active customers. The whole block is greyed and titled "not judged" — these numbers reflect generator configuration, not the company (filings do not disclose them; nothing to reconcile against).
Prescriptions: this quarter's entries, each generated by a model from reconciled data and each required to quote a passage of the 10-K. "Quote verified" entries link to the filing on EDGAR; "No filing quote to support it" marks reasoning, not evidence. Older quarters' prescriptions are not mixed in; only their count is noted.
5.4 Operating Score (Pro)
More → Operating Score. The Doctor's findings grouped into seven dimensions, each starting at 100 and losing 25 per Alert and 10 per Watch, floored at 0.
| Dimension | What it reads |
|---|---|
| Financial health | Net debt / OCF, return on capital, accrual ratio, free cash flow, HTM unrealized losses |
| Growth | Revenue, net income, gross and net margin YoY, contract liabilities |
| Risk | DSO, DIO, CCC, capex intensity |
| Peer comparison | Cross-sectional findings against the same industry in the same calendar quarter |
| Disclosure credibility | Restatement history, bankruptcy filings, SEC enforcement |
| Insider flow | Form 4 open-market trades, relative position within the same quarter's cross-section |
| Valuation | P/E rank within industry and quarter (P/S and P/B shown but not scored) |
- Total is the mean of the dimensions; fewer than 4 computable dimensions → no total.
- Absolute score vs peer percentile must be read together: the absolute score is comparable over time but most companies crowd into 80–100; the percentile separates them horizontally, at the cost of drifting (peers improve, this company drops without changing).
- Solvency alert is a separate row, not in the total: this quarter tripped "negative equity while burning cash" or "held-to-maturity securities marked to market wipe out equity". Of 110 companies that ever tripped it, 55 filed for bankruptcy within a year (precision 50%). It shows the state as of that filing, not necessarily today.
- Price and valuation: first trading-day price after disclosure, latest close, market cap, TTM P/E. Neither price is real-time. When TTM net income is not positive, P/E shows "no basis" rather than an extreme value. Offline on desktop this block shows "unavailable".
- Two closing sections are required reading: "What it does see is operating decay" (bankrupt companies' pre-event median percentile is 16, yet among similarly small peers the AUC is only 0.59) and "This score is not a buy recommendation" (back-test: indistinguishable from zero once the tails are trimmed).
5.5 Market Weather (Pro)
Volume, price and the checkup read as weather. This is observation, not forecast — the icons describe the quarter that already happened.
- This quarter: sky (Clear / Thinning cloud / Cloudy / Overcast / Thunderstorm / Not observed), barometer (checkup), visibility (volume YoY), price. Readings: Confirmed up / Confirmed down / "Clear sky, falling pressure" (a front: price rising while the checkup found new alerts — trust the instrument) / "Rain, rising pressure" (possibly oversold, or the instrument has not caught it yet).
- History: a row of icons for recent quarters; a question mark means not observed — missing filing date, missing post-filing window or missing prior-year volume baseline — not a display error.
- Weather map · universe: bars by industry, sorted by "share that is raining", so the industries with the most thunderstorms and overcast come first.
- Profit that did not become cash: companies with a positive accrual ratio whose price is still rising. Accrual ratio = (TTM net income − TTM operating cash flow) ÷ average total assets. High accruals are not fraud; only companies the checkup flagged are coloured.
- Fronts: companies whose price rose after the filing while the checkup says something is wrong. Selection uses two anchored conditions only (first alert this quarter, or positive accruals judged Watch / Alert). The insider buy / sell counts, congressional sellers and longest lag beside them are background only, never selection criteria. "Longest lag" is days from trade to public visibility — a measure of information asymmetry itself. The window is always (this filing date, next filing date].
- This station's forecast skill: the project's own skill score to date; positive means skill, and it is not a percentage.
5.6 Stance (Pro)
Existing conclusions summed by weight and normalised into Long / Hold / Short leans. Weights: checkup 2.5 > quadrant 2.0 > reading 1.5 > revenue YoY 1.0 > CCC YoY 0.75.
These are leans, not probabilities — they answer "which way does the evidence tip, and how clearly", not "what are the odds it goes up". The page ends with a falsification chart (universe-wide, independent of the selected company): forward excess return by stance bucket at entry time, ±2 standard errors. All three buckets sit on the zero line — the reading shows no directional effect, which is a result, not a fault.
5.7 Insider Trades (Pro)
- Largest buys · universe: open-market purchases by insiders (officers, directors, 10% holders) in the last year, by value. This is the only source in the library that answers "who bought how much at what price" — Form 4 files each trade with an exact date, price and share count. Tap a row to open that company's full detail.
- A company's insider trades: buys and sells, each with a trade date and a filing date. Median lag 2 days, mean 10 days, longest observed 8,767 days. Aligning prices to the trade date is hindsight.
- One trade filed by several reporting persons (beneficial vs direct ownership) is merged by accession number and marked +1.
- Grants, option exercises and tax withholding are excluded — those are not market trades.
Selling is routine; buying is rare (81k buys vs 353k sells in the library), so only buys are coloured. This page is fact, not a buy signal: "insider buying" was built as a forecast signal and scored a skill of −0.0016 — statistically zero.
5.8 Daily Forecast (Pro)
One brief per trading day at 18:30 New York time.
Subscribe: tap "Subscribe to the daily forecast". Optionally set a watchlist (comma-separated tickers; empty = all; it only changes which rows the brief shows you, never the brief itself) and an email (empty = no mail; if set, each issue is sent as plain text with the count in the subject; the in-app inbox is the delivery of record, email is only a reminder).
Inbox: issues listed with an unread count. You receive an issue even on days with no forecast, saying "No new forecast today" with the rolling score attached — otherwise, two quiet weeks would be indistinguishable from a dead system.
Brief: a table of ticker, horizon (5 / 21 / 63 trading days), model probability and climatology baseline. Probabilities are never coloured — what matters is the gap to climatology. An issued brief is never rewritten.
- Under the probability sits a quantile line: the median and worst 5% of excess return, followed by the same two numbers for climatology. The probability says how likely a beat is; this line says by how much either way — the worst-5% figure is the one worth asking about. Forecasts with fewer than 400 settled observations behind them have no such line (better none than a made-up tail).
Rolling score: two columns, Live and Backfill. Each gives per-model Brier, baseline Brier, skill and actual hit rate.
- Lower Brier is better; random guessing is 0.25. skill = 1 − model Brier / baseline Brier; positive means skill. Neither is a percentage.
- Quantile skill is the same formula with pinball loss (the standard score for quantile forecasts): it measures how well the median and tails were called, counting only cells where both sides carry quantiles, so its count is usually smaller than the line above. Positive means skill, as before.
- The backfilled model was designed after seeing that history, so the whole column is greyed and is reference only.
- An empty live record is normal — a forward record accrues one day at a time.
Account score: each contributor (all model names merged per account) with points balance, settled count and skill. Calibration: of the times it said 60%, did about 60% happen? Buckets with fewer than 50 forecasts are not drawn.
The scorecard does not require a subscription: public endpoint https://app.assay.onepbdc.com/api/lt/dx/forecast/scorecard, also answered locally on desktop. At the end of each trading day the hashes of that day's forecasts, baselines and checkup snapshot are written into an evidence file and pushed to the public repository https://github.com/wr169/assay-data, each chained to the previous — anyone can verify that issued records were not altered.
5.9 Submit a Forecast (Pro)
Hand your own signal to the scoring machine to be settled, benchmarked and scored.
Form: ticker (must have price data), horizon (5 / 21 / 63 days, default 21), probability (the probability that this stock beats the equal-weighted universe over the window, strictly between 0 and 100), model name (your own, e.g. MOMENTUM), basis (why — a probability without a rationale is unexplainable afterwards).
You get a receipt: your probability, today's climatology baseline, and how many settled observations the baseline was estimated from. The forecast cannot be edited; it settles automatically when the window closes.
Five rules (each one is a refusal, not a correction):
- The information cut-off is today — no date parameter is accepted.
- Out-of-range probabilities are rejected, not clamped.
- The ticker must have price data, or it could never settle.
- One forecast per day per ticker per horizon per model; to revise, use another model name.
- Today's climatology baseline must already be published (it goes out with the 18:30 brief; submissions before that are refused).
Every submission stakes points. Each contributor has a fixed, non-refillable budget of points (no real money is involved). Each forecast opens a binary position against the day's baseline: above baseline buys YES, below buys NO; the stake is Kelly-sized by how far your probability sits from the baseline, and is deducted at submission. Right calls pay out, wrong calls go to zero; a depleted account is sealed and cannot restart. It answers the half of the question the scorecard cannot: what did you put behind what you said?
My submissions: each forecast with its state (pending / beat / missed). Pending is not a fault: a 63-day window naturally hangs for three months.
5.10 Coverage Check (free)
The question to ask before subscribing: how many of my holdings are covered?
Paste tickers (commas, spaces and newlines all separate; up to 500 at once) and tap "Check coverage". Each ticker comes back with seven layers: anchor, prices, checkup, prescription, segments, ledger, weather.
Three-state legend: filled = present; hollow = checked, absent; dashed with a question mark = this layer cannot answer right now. The last two are never the same thing — desktop has no local prices, ledger or weather, so those layers are drawn as question marks rather than declared "absent".
Tickers missing from the master list are marked "not in master": a typo, not on the SEC list, or delisted.
5.11 Data Health (free)
Answers "what day is this system's data stuck on". A read-only backend being "alive" says almost nothing; what actually breaks is an upstream source stopping — every endpoint keeps returning fine, the content just quietly freezes on a date.
- Local data package (desktop / web): integrity (verified / mismatch / not checkable), version, and an "Download and switch" button when a new version exists — swaps in place, no restart (a few tens of MB; keep the window open). See 6.1.
- Sources: latest date, row count and entity count per source; sources idle for days are flagged.
- Layered coverage: live counts of master, priced, anchored, checked, prescribed, segmented, ledgered, and weather-readable companies.
- Materialized snapshots: last refresh time.
- Forecast pipeline: live issued, settled, pending, brief count, subscribers, last issue.
- Restatement distortion: companies whose year-ago base was distorted by a later restatement among quarters filed in the last N days.
This endpoint needs no sign-in: https://app.assay.onepbdc.com/api/lt/status; it returns aggregate counts and timestamps only.
5.12 Strategy Lab (Lab)
Compresses "idea → signal → back-test" into minutes. Its value is cheap trial, not endorsement: a quarterly signal on one stock over four or five years gives a dozen rebalances, so return differences are mostly noise.
Three tabs:
Technical: a single-stock moving-average rule. Parameters: MA length (default 20), buy multiple (default 1.05 — buy when price crosses 1.05 × MA), sell multiple (default 0.90), one-way fee in basis points (default 3).
Diagnostic: tick a set of Doctor statuses (Alert / Watch / Not triggered / No basis) and hold only while the company's checkup is in one of them. Entry is always the first trading day after the filing date — aligning to quarter-end is look-ahead.
Wall St.: ten literature templates.
| Template | Parameters | Note |
|---|---|---|
| Earnings drift (PEAD) | SUE threshold, holding days | Entry anchored to the first trading day after the 10-Q/10-K filing date |
| Fundamental factor | Factor (composite / low accruals / high gross profit ÷ assets / low asset growth / buybacks), percentile threshold | Hold when the filing-day cross-sectional percentile ≥ threshold |
| Pairs (long leg) | Peer ticker, formation window, entry z, exit z | Long leg only; the NAV contains market direction |
| Trend following | Rule (past return positive / above SMA), lookback, skip, SMA, monthly or daily | Flat when trend is off; no shorting |
| Follow insider buys / Follow Congress buys | Amount threshold, buyers, cluster window, holding days | Anchored to the day after the filing date; Congress data starts in 2025; companies with no filings say so |
| 52-week high / MA crossover / RSI oversold bounce / Calendar effect | Their own windows and thresholds | Price only; each note states how the rule fared in the pool tests |
Tap "Run backtest". Results: strategy vs buy-and-hold total and annualized return, signals / usable / held, trade count, wins / losses, average win / loss, exposure, years, NAV curve (normalized to 1), by-year table, trade list, and whether the strategy is holding or flat at the end of the range. That end state uses the last daily bar in the library, not the current market.
Trial registry (always at the foot of the page): every pool-wide test this project has run on "does this rule predict returns", one row each, never deleted or edited — hypothesis, sample, result, verdict (passed / thin / no power / reversed / withdrawn) and any forecast model it was promoted to. The header shows the number tested and the hurdle for the next hypothesis: the larger of 2.78 (single test), 3.0 (family floor) and the Bonferroni value for that count. Testing twenty rules and reporting one is not the same as testing one, and the hurdle should not be the same either. Single-ticker backtest returns are not evidence; the evidence is this registry, and most of it is negative.
5.13 Trade (paper trading; any registered account)
A simulated book with USD 100,000 of virtual cash and one closing auction per trading day as the only fill opportunity.
- Order: pick a ticker, buy or sell, limit orders only, whole shares. The page shows available cash and the most shares affordable at that price; on sells it shows your current position. A sell beyond your long is rejected; with no long position, a sell is a short sale: it needs 150% margin (the sale proceeds cannot be used, plus 50% of own cash), dividends during the hold are paid out, and a rising price loses. A buy first covers the short; no single order can flip you from long to short or the other way. The counter does not liquidate for you — below 30% equity-to-short-value the page warns and blocks new shorts and buying to add. Stops and targets work for longs only. "Order placed" means accepted, not filled — fills depend on the other side.
- Positions: quantity, average cost, market value (estimated at the analytics backend's daily close, not real-time), P&L.
- Stop / target: attach a stop price (sell if breached) and/or target price (sell if reached) to a position. Triggers use the day's high / low; fills happen at the closing auction, so on gap days the two differ a lot. If both are touched on the same day it counts as a stop. Cancellable.
- Orders: today's orders and their state (not sent / placed / partly filled / filled / cancelled / partly cancelled / rejected). Only placed and partly-filled orders can be cancelled; a successful cancel means "cancel accepted".
- Trades: today's fills.
5.14 My Scorecard (any registered account)
Two tracks that answer different questions; do not read them together:
- Buy calls: every buy settles on a fixed 63-trading-day window, regardless of whether you sold later. It answers "was the judgment I formed after the checkup right?" The benchmark is the equal-weighted universe over the same day and window — a return without a benchmark is uninterpretable. Shows count, share beating the benchmark, average excess.
- Round trips: real P&L of every buy-to-sell, including spread and fees, matched first-in-first-out. It answers "how well did I execute?" Shows realized P&L, fees and how many were stopped out.
You can pick the right company and still get stopped out — the buy call is positive, the round trip is negative, and both are correct. With few trades a hit rate or an average says nothing; the page warns you.
5.15 Other pages
- About & Licence: the three licence tiers (raw SEC fields are public domain and freely redistributable; Assay-derived content is for personal and internal use, not for resale; the software is proprietary), the full licence text, third-party components, and "not investment advice".
- Change Password: see 3.7.
- User Admin: administrators only. Account creation, roles, funding, membership grant / revoke, password reset.
6. Data and updates
6.1 The data package and updates
A new package ships weekly (published on Sundays). Everything in it comes from public SEC filings (public domain) and Assay's own derived output; no third-party market prices. The current version is assay-public-2026-09-11.zip, about 20 MB, 22 Parquet files, with MANIFEST.json (bytes and sha256 per file, plus the datasets excluded and why) and SHA256SUMS.
- Desktop: checks the index in the background at launch; when Data Health finds a new version it shows "Download and switch". The sequence is download → verify the zip hash → unpack alongside → confirm the MANIFEST → only then replace. Every step fails without touching the old data. The swapped-in package lives in your user directory (
%APPDATA%\Assayon Windows); the copy in the install folder is only a seed. - Web app: each load takes the currently published version; the browser cache updates itself.
- Manual download: the Data section on the site, or https://github.com/wr169/assay-data/releases.
The local package can be up to a week older than the server. Data Health shows the package date.
6.2 Verification
- The downloaded zip: against the SHA-256 printed on the site / release page.
- The unpacked Parquet files: against
SHA256SUMS(sha256sum -c SHA256SUMS). - Desktop runs a quick check at launch (size and existence); the full check's result appears in the "Integrity" field on Data Health.
A failed check does not block launch (you may have deliberately swapped in a trimmed package of your own); it just says which file does not match.
6.3 Desktop / web: what runs locally
Queries take one of two routes: whatever can be answered locally is answered locally (even when connected to the server); the rest goes to the scoring server.
| Answered locally (works offline) | Sent to the server (needs network) |
|---|---|
| Company list, Company Doctor checkup / findings / attribution / prescriptions, 10-K narrative | Ledger vs Ticker, market language |
| Operating Score, six dimensions (the seventh, valuation, and the two prices need market data) | Market Weather, Stance, valuation |
| Insider trades, congressional trades, restatement detection | Strategy Lab back-tests |
| Coverage Check (prices / ledger / weather drawn as question marks) | Sign-in, membership, paper trading, scorecard |
| Data Health (local package), forecast scorecard | Daily brief, subscription, submissions |
When the server is unreachable only the right-hand column is affected, and the error says which side is down; the left column keeps working.
6.4 Fully offline mode (optional)
Desktop ships pointed at https://app.assay.onepbdc.com. To make it never touch the network: create config.json inside the resources folder of the install directory containing { "remote": "" } and restart. The app then injects a local session (with LEDGER_VIEW + DOCTOR_VIEW) instead of a guest one, so Company Doctor and the other local pages open without signing in; server-only pages show "not in the local edition" with a reason.
7. How to read the numbers (required)
Not every number in this library is equally trustworthy. This section matters more than any feature.
7.1 Two layers. Anchored = reconciles to the filing; coloured; rated. Structural = customer concentration, overdue share, order size and the like, derived from generator parameters; greyed; not judged. Three companies in unrelated businesses all show top-10 customer share around 30% — that is a configuration value, not a fact.
7.2 Three states, not two. "Checked, absent" and "cannot answer this layer" are never the same. When you see the dashed question mark, do not conclude on its behalf.
7.3 "No basis" is not "normal". When a later restatement distorts the year-ago base, the Doctor demotes that finding to no-basis instead of raising a false alert; the company then looks cleaner, which is why the Cockpit lists the restatement flag separately.
7.4 New is the signal. Sort by "New" to find the quarters where something actually happened; a chronic problem should not be re-reported every quarter.
7.5 Density beats presence. Nine in ten companies have had an alert; what separates them is "three or more per quarter on average". Even then precision is 53%, and the lowest score decile's one-year bankruptcy rate is 6.7% — 93% false alarms, though 2.7× the base rate.
7.6 Read skill, not probability. Forecasts are probabilities, not directions; each carries a same-ticker, same-day, same-window climatology baseline (the unconditional hit rate), and skill is the difference in Brier scores. A Brier without a baseline is an uninterpretable number. No registered model has yet shown consistently positive skill.
7.7 Insider selling is not bearish. Sales are mostly routine post-vesting disposals (sells : buys ≈ 4 : 1); buys are someone staking their own money — and even the "insider buying" signal scored zero skill.
7.8 In-quarter returns contain look-ahead. That move happened before the filing was public; to judge "did the market read this filing", use the post-filing window only.
7.9 A high back-test return does not make a strategy valid. A dozen rebalances on one stock is mostly noise; in the universe-wide test neither trend rule beat buy-and-hold.
8. FAQ and troubleshooting
| Symptom | Cause | What to do |
|---|---|---|
| Windows says "protected your PC" | Installer not code-signed | More info → Run anyway; verify SHA-256 before installing |
| Only three tabs / no Company Doctor under More | Guest or free account; DOCTOR_VIEW missing |
Sign in and subscribe to Pro; reload after paying |
| "These pages are not open to you yet" | Missing that page's permission | Compare the listed permissions with Appendix B; signing in again changes nothing |
| Paid but the menu did not change | Membership state not re-fetched yet | Reload; if still missing, sign out and in; then email with your account number |
| Sign-in says the account is wrong | You typed a username / email | The account is the number assigned at registration |
| Forgot password | No self-service reset | Email support@onepbdc.com with your account number |
| Registration refused | 5 per hour per IP | Wait an hour |
| "The local edition has no market data" / "no such endpoint" | Desktop offline, or the feature is server-side | Normal; goes to the server once online |
| "Cannot reach the scoring server" | Network or server | Local diagnostics keep working; retry later; status at https://app.assay.onepbdc.com/api/lt/status |
| "Offline — check you are still on the same Wi-Fi" | Device offline | Check the connection |
| A page does nothing when tapped (web) | Front end just redeployed; the old page references retired chunks | The page reloads itself once; otherwise refresh manually |
| Question marks on Coverage Check | Layer cannot answer locally | Normal, see 7.2 |
| Operating Score shows no total | Fewer than 4 computable dimensions | Normal |
| Question marks in weather history | Those quarters cannot be read | Normal; usually the prior-year volume baseline is missing |
| "Pending" for a long time | 63-day windows take three months | Normal; only a settled count that never grows is abnormal |
| Data Health says "mismatch" | A package file was altered or the download was incomplete | "Download and switch" again from Data Health, or reinstall |
| Web app stuck on the sign-in form | Private window blocked local storage | Use a normal window |
| Want to see which endpoints the app calls (desktop) | — | Run from source with npm run serve; the terminal prints every [api] line |
9. Privacy, terms and contact
- Collected: numeric account ID, password hash, roles and membership state; an email address only if you subscribe to the forecast email; Stripe customer and subscription IDs (never card numbers); the forecasts you file and the resulting paper-trading ledger (part of the public scoring record by design; not editable or deletable after issue); scoring-server access logs kept up to 30 days.
- Not collected: which companies you look at or search for on desktop / web — queries run on your device. No advertising or analytics trackers.
- Where it lives: the scoring server on Microsoft Azure, Canada Central; payment data with Stripe; daily evidence files (hashes only) in a public GitHub repository.
- Your rights: ask at any time to delete your account and any stored email; issued forecasts remain in the sealed record under your numeric ID.
- Operator: Home 7 Inc., 1022 Wyandotte St E, Windsor, ON N9A 3K2, Canada. Governed by the laws of Ontario.
- Support: support@onepbdc.com, answered within two business days.
- Full terms, privacy and refund policy: https://assay.onepbdc.com/legal.html
- Data and releases: https://github.com/wr169/assay-data
Appendix A: Glossary
| Term | Meaning |
|---|---|
| Anchor | Quarterly financials aligned by filing date and restatement-aware, from SEC XBRL |
| Anchored / structural layer | Metrics that reconcile to the filing / metrics derived from generator parameters (not judged) |
| Finding | The Doctor's verdict on one metric in one quarter: Alert / Watch / Not triggered / No basis |
| New / Ongoing (onset) | First appeared this quarter / already present last quarter |
| Prescription | A model-written note on a new alert, required to quote the 10-K |
| Restatement | The company later rewrote last year's figures, distorting the YoY base |
| CCC / DSO / DIO / DPO | Cash conversion cycle / days sales outstanding / days inventory / days payables |
| Accrual ratio | (TTM net income − TTM operating cash flow) ÷ average total assets; higher means more profit that did not become cash |
| Climatology | The unconditional hit rate for the same ticker, day and window; what a forecast must beat |
| Brier / skill | Mean squared error of a probability forecast (lower is better; random = 0.25) / 1 − model Brier ÷ baseline Brier (positive = skill) |
| Quantiles / quantile skill | The 5 / 25 / 50 / 75 / 95% quantiles of forward excess return (the brief shows the median and worst 5%) / the same skill formula with pinball loss; positive = skill |
| Calibration | Of the times it said 60%, did about 60% happen? |
| Live / backfill | Scores settled on forward-issued forecasts / scores replayed on history (greyed, reference only) |
| Kelly stake | A stake sized by the gap between your probability and the baseline; reporting your honest probability is the only optimum |
| Front | A company whose price rose after the filing while the checkup says something is wrong |
| Materialized snapshot | A pre-computed summary the pages read instead of computing live; carries a refresh time |
| Form 4 | The per-trade insider transaction filing |
| PEAD | Post-earnings-announcement drift |
| Evidence chain (attest) | Daily hash files pushed to a public repository, each chained to the previous, for verifying that issued records were not altered |
Appendix B: Pages and permissions
| Page | Where | Permission | Who has it |
|---|---|---|---|
| Cockpit | Bottom bar | LEDGER_VIEW |
Guest / free |
| Ledger vs Ticker | Bottom bar | LEDGER_VIEW |
Guest / free |
| Coverage Check | More | LEDGER_VIEW |
Guest / free |
| Data Health | More | Any session (the endpoint itself is public) | Guest / free |
| About & Licence, Change Password | More | Any session | All accounts |
| Company Doctor | Bottom bar | DOCTOR_VIEW |
Pro / Lab |
| Operating Score, Stance, Market Weather, Insider Trades | More | DOCTOR_VIEW |
Pro / Lab |
| Daily Forecast, Submit a Forecast | More | DOCTOR_VIEW |
Pro / Lab |
| Strategy Lab | More | BACKTEST_RUN |
Lab |
| Trade | Bottom bar | ORDER_PLACE or ACCOUNT_VIEW |
Every registered account |
| My Scorecard | More | ACCOUNT_VIEW |
Every registered account |
| User Admin | More | ADMIN_OPS |
Administrators |
In fully offline mode (6.4) the local session carries LEDGER_VIEW + DOCTOR_VIEW, so Company Doctor and the other local pages open without signing in.
Assay 试金 · 用户使用手册
适用版本:桌面版 0.3.2 · 网页版 assay.onepbdc.com/m/ · 数据包 2026-09-11 · 手册日期 2026-09-15
这份手册写给用 Assay 看公司的人。
目录
- 0. 读之前:Assay 是什么,不是什么
- 1. 选一种用法
- 2. 安装与首次打开
- 3. 账号、登录与会员
- 4. 界面总览
- 5. 逐页说明
- 6. 数据与更新
- 7. 读数规则(必读)
- 8. 常见问题与故障排除
- 9. 隐私、条款与联系方式
- 附录 A:术语表
- 附录 B:页面与权限速查
0. 读之前:Assay 是什么,不是什么
Assay 做的是一件很窄的事:读一家上市公司自己向美国证监会(SEC)申报并签了字的数字,把这些数字之间的矛盾按季度钉在明面上。 典型的一条是「利润为正、经营现金流为负」——两个数都在财报里、都能对账,它们的差说不了谎。每一条结论都能追溯到 EDGAR 上的申报编号。
它由三样东西组成,都算自同一批申报,因此彼此不会打架:
| 仪器 | 答的问题 |
|---|---|
| 企业医生(体检、体征、归因、处方、经营评分) | 这家公司最近一季的账,哪里对不上? |
| 驾驶舱与经营对股价(全池状态、新增预警、内部人与议员交易、股市天气) | 整个覆盖池里,谁本季出了新问题?市场读没读懂? |
| 每日预报与记分台 | 系统(和你)说过的话,事后准不准?为此付出过什么? |
它不是什么,请先记住三句:
- 不是投资建议。 它输出的是观察与概率,不针对任何人的具体情况;任何买卖决定与后果由你自己承担。
- 不预测股价。 七维经营评分回测过,对收益没有预测力;至今没有一个已注册的预报模型稳定跑出正的 skill score(接近零)。界面上会把这些负结果照登,不美化。
- 抓经营衰竭,不抓造假与表外风险。 它只读 XBRL 结构化字段:表外杠杆、再融资风险、Level 3 估值、法律负债读不到。被 SEC 点名的公司,事前在这套体检上和别人长得一样。
它有多大用,有可复核的数字:库里 203 家后来真的申请破产的公司标签(每条带 8-K 编号),其中 140 家可评。按「平均每季 ≥3 条锚定层异常」拉警报,点亮的 142 家里 75 家真破产(精确率 53%);但单看「有没有异常」几乎没有信息量——九成的公司都有。这两句话要一起记。
1. 选一种用法
| 你想 | 用这个 | 要装什么 | 要账号吗 |
|---|---|---|---|
| 在电脑上离线看公司体检 | 桌面版(Windows / Linux) | 一个安装包(约 130 MB) | 免费功能不要;企业医生等要登录 + 会员 |
| 什么都不装、打开就看 | 网页版 https://assay.onepbdc.com/m/ | 无(首次加载约几十 MB,之后缓存) | 同上 |
| 在手机上离线看 | 手机版(iOS / Android) | 测试中,尚未上架 | 同上 |
| 拿原始数据自己写 SQL / 进 notebook | 数据包(约 20 MB,22 个 parquet) | 任何能读 parquet 的工具 | 不要 |
桌面版、网页版、手机版跑的是同一套前端、同一份查询、同一个数据包,只是壳不同。手册后面的页面说明对三者通用。
查询在你自己的设备上跑。 你看了哪家公司、搜了什么,不会离开你的机器。服务器只做一件事:记分(登录、会员、预报投稿、纸上交易)——记录必须放在被记分的人改不了的地方。
2. 安装与首次打开
2.1 Windows 10 / 11(64 位)
- 打开官网 https://assay.onepbdc.com/,滚到 Download 区,下载
Assay-0.3.2-Windows.zip(132 MB)。 - 可选但推荐:核对哈希。官网下载区印着这个 zip 的 SHA-256,在 PowerShell 里跑
powershell Get-FileHash .\Assay-0.3.2-Windows.zip -Algorithm SHA256对得上再装。 - 解压,双击
Assay.Setup.0.3.2.exe。 - 安装包尚未做代码签名,Windows SmartScreen 会弹「Windows 已保护你的电脑」。点 更多信息 → 仍要运行。
- 安装完成后从开始菜单打开 Assay。首次启动直接进驾驶舱,不需要注册。
安装目录下有 resources\legal\LICENSE 与 THIRD-PARTY-NOTICES,就算应用打不开也能直接读条款原文。
2.2 Linux
- 任意发行版:下载
Assay-0.3.2.AppImage(162 MB),chmod +x后直接运行。 - Debian / Ubuntu:下载
assay-desktop_0.3.2_amd64.deb(130 MB),sudo apt install ./assay-desktop_0.3.2_amd64.deb。
无桌面环境的机器(比如裸 WSL)会缺 Electron 的运行库,报 libnspr4.so 之类的错误;装上 libnspr4 libnss3 libgtk-3-0t64 libgbm1 libasound2t64 等常见桌面库即可。
2.3 网页版
浏览器打开 https://assay.onepbdc.com/m/。首次打开会有一个启动画面,进度条走完三段:下载数据包(约 25 MB)、下载查询引擎(约 8 MB 压缩包)、编译引擎(几秒)。这些只下载一次,之后浏览器缓存住,再开就是秒开。页面打开后即使断网,本地查询(企业医生、内部人、覆盖率等)仍然能用;但重新打开页面需要联网。
- 桌面 Chrome / Edge / Firefox / Safari 都可以;手机浏览器也可以,界面是按手机宽度设计的。
- 隐私模式下浏览器本地存储可能被禁,网页版会认为你没登录并停在登录框——换普通窗口。
- 网页版把会话令牌与语言选择存在浏览器本地存储里,别的什么都不存。
2.4 首次打开看到什么
三种版本首次打开都是驾驶舱,且都以访客身份运行:底栏能看到「驾驶舱」「经营对股价」「更多」,「更多」里能进「覆盖率查询」「数据健康」「关于与许可」。企业医生、经营评分、股市天气、内部人交易、每日预报这些要登录并开通会员,见第 3 节。
2.5 语言
界面有中文与英文两套完整文案。默认跟系统走:中文环境显示中文,其余显示英文。切换在右上角头像 → 语言,登录页右上角也有切换按钮。选择会记住。
后端返回的内容(公司名、体检结论原句、处方正文、10-K 原文摘录)不翻译——它们是数据,不是界面。
3. 账号、登录与会员
3.1 不登录能用什么
访客(以及注册后没买会员的账号)拥有免费层:
- 驾驶舱:全池体检状态、本季新增预警
- 经营对股价(有经营明细的公司)
- 覆盖率查询、数据健康、关于与许可
- 公开的预报记分卡(通过公开接口与每日证据文件,见 5.8)
- 数据包下载与校验
免费层不需要账号,也永远不需要——「一份要付钱才能查验的记录不是记录」。
3.2 注册
在任何需要登录的页面点进去会落到登录页,点 「还没有账号?创建一个」:
- 设一个密码(至少 6 位)。
- 输入 4 位验证码(不分大小写;点图片可以换一张)。
- 点 创建账号。
系统会分配一个数字账号(例如 20000123)并显示出来。请立刻记下这个数字——它就是你的登录账号,之后不会再显示第二次。 注册不需要邮箱、手机号或姓名。
限制:同一 IP 每小时最多注册 5 个账号,超过会被拒;等一小时再试。
3.3 登录
登录页三个框:账号(数字 uid,不是用户名,不是邮箱)、密码、验证码。密码在你的设备上先做哈希再上送,明文不出你的机器。
登录会话由记分服务器签发。同一个账号在桌面版、网页版登录的是同一份会话;在一处退出,另一处也一并失效。
3.4 套餐与价格
| 免费 | Pro | Lab | |
|---|---|---|---|
| 价格 | $0 | $12 / 月,或 $96 / 年 | $29 / 月,或 $240 / 年 |
| 驾驶舱、经营对股价、覆盖率、数据健康 | ✅ | ✅ | ✅ |
| 昨日行情(涨跌 / 成交量前十、指数、外汇、利率、贵金属、期货;榜上的体检分与「收盘 vs 估算价值」两组要 Pro) | ✅ | ✅ | ✅ |
| 企业医生:体征、归因、处方 | — | ✅ | ✅ |
| 经营评分(七维) | — | ✅ | ✅ |
| 股市天气、三态倾向 | — | ✅ | ✅ |
| 内部人交易、议员交易 | — | ✅ | ✅ |
| 每日预报订阅与投稿 | — | ✅ | ✅ |
| 纸上交易与我的成绩单 | ✅ | ✅ | ✅ |
| 策略实验室(回测) | — | — | ✅ |
| API key 程序化取数 | — | — | ✅ |
价格以美元计,结账时可以选 USD 或 CAD 结算。通过 Stripe 收款,Assay 不接触也不存储你的卡号。
3.5 开通、管理与取消
开通:登录后进 更多 → 会员,点 「升级到 pro」 或 「升级到 lab」,选币种,会跳到 Stripe 的结账页面付款;付完自动跳回应用。会员立即生效,不用重新登录——每个请求都重新查会员表。回来后如果菜单没多出条目,刷新一次页面。
管理 / 取消 / 换卡 / 看发票:更多 → 会员 → 管理订阅,进 Stripe 账单门户。取消后已付周期内照常使用,到期即止;没有宽限期,也没有挽留弹窗。
退款规则(全文见官网 /legal.html):
- 取消不按比例退当月 / 当年剩余部分。
- 计费错误(重复扣款、取消后仍扣、你没选的套餐)60 天内全额退。
- 年付:首次付款 14 天内取消且未使用付费功能,全额退。
- 退款原路退回,通常 5–10 个工作日到账。
3.6 权限点:为什么有的页面看不到
菜单和底栏按权限点显示。看不到某一页,不是被藏起来了,而是这个账号当前调不动那组接口。各页面对应的权限点见 附录 B。
- 免费账号 / 访客:
STOCK_QUERY+LEDGER_VIEW - Pro:再加
DOCTOR_VIEW - Lab:再加
BACKTEST_RUN - 纸上交易与我的成绩单(
ORDER_PLACE/ACCOUNT_VIEW)对所有注册账号开放,免费版也有:注册即得 100,000 美元虚拟资金。只能操作、查看自己的账户。
会员到期或撤销,对应权限立即收回;管理员改的角色则要重新登录才生效(角色随会话签发)。
如果你登录后进到某页看到「这些页面还没对你开放」,页面会列出你当前持有的权限点——对照附录 B 就知道缺哪一个。重新登录不会改变权限,别反复登录。
3.7 修改密码 / 忘记密码
- 修改:更多 → 修改密码。输当前密码和新密码。改完当前会话不失效,新密码从下次登录起生效。
- 忘记:账号不绑邮箱,没有自助找回。写信到 support@onepbdc.com,说明账号数字,由管理员重设后告诉你新密码。因此请务必把账号数字和密码存在密码管理器里。
3.8 退出登录
右上角头像 → 退出登录。退出后回到访客身份,免费层照常可用。
4. 界面总览
界面是一列式的窄栏设计(手机优先,桌面版最宽 980 px)。
底栏:驾驶舱 · 经营对股价 · 企业医生 · 交易 · 我的成绩单 · 更多。哪几格亮由权限点决定;访客只有三格。
右上角头像(显示账号末两位):账号、角色、权限点清单、语言切换、退出登录。
公司代码条(驾驶舱、企业医生等页顶部):一个搜索框,输代码、公司名或行业都能搜;默认列出本季新增预警最多的若干家。选中一家后,企业医生、经营评分、内部人、股市天气、三态倾向这些页共用同一个当前公司,切页不用重选。
状态芯片(贯穿全篇):
| 显示 | 含义 |
|---|---|
| 异常(ALERT) | 该项指标触发了判据 |
| 关注(WATCH) | 接近判据 |
| 未触发(NORMAL) | 正常 |
| 不判定(NOT_JUDGED / NO_BASIS) | 判不出——同比基准被重述扭曲、缺去年同季数据、或指标本身不参与判定。它不是「正常」。 |
| 新增 / 持续 | 本季首次出现 / 上季已有 |
颜色约定:只有能对回财报的锚定层才带语义色并参与评级;结构层(客户集中度、逾期占比这类)一律灰化,标题直书「不参与判定」。预报概率一律不着色。颜色永远和文字标签同时出现,不单独承载含义。
5. 逐页说明
5.1 驾驶舱(免费)
打开即到。四块,自上而下:
- 对账闸门:「N 项对账 · 零差异」——合成的经营总账与 10-K 披露值逐项相等。对不上的财季不可用于任何判断,所以放在最前。桌面版 / 网页版本地没有这一层,不显示。
- 全池体检 · 最新财季:所有已体检公司按最新财季的状态计数(异常 / 关注 / 未触发 / 不判定)。状态只由锚定层决定。
- 新增预警:本季首次出现、上季没有的异常体征的公司清单。持续存在的老问题不重复计入——否则一个老问题会天天报警。点任一家进企业医生。
- 我的关注:你的关注列表(与每日预报共用同一份,在预报页编辑)。每家只列一条最该看的锚定层体征,另附近 90 天内部人卖出申报数与「同比基准被重述扭曲」标记。后两者不着色:一笔卖出是事实不是判断;重述标记说的是「这一季的同比没法判」,而不是公司变差——被重述扭曲的公司在体征里反而显得更「干净」,所以必须单独标出来。
页脚写着「N 家公司完成体检 · 数据读自物化快照 · 非实时」和快照时间。
5.2 经营对股价(免费)
把一家公司的经营账本和股价放在同一张图上。
- 选择器只列有经营明细(ERP 级别的订单、发票、采购单)的几十家公司;其余公司有财报锚、有体检,但没有 CCC / DSO / DIO / DPO——那些财报不披露。
- 顶部四格:营收(百万美元)、同比、毛利率、CCC 天数。
- 图一:营收同比 vs 财季内股价回报,两者都是同期百分比变化、共用一条刻度——背离的季度就是账本与行情说法不一致的地方。
- 图二:现金转换周期(DSO + DIO − DPO,天)。
- 市场语言:量 × 价 × 体检的四象限散点。价涨量升是健康,价涨量缩是预警,价跌量升是恐慌,价跌量缩是僵持;量只是确认器,不是方向。可切「披露后」/「财季内」两种窗口,财季内窗口含前视偏差,只能当对照看。
- 财季明细表:每季营收、毛利率、CCC、回报。注意「财季内回报」是该财季区间内的股价变化,不是披露后的反应。
这一页要行情,桌面版与网页版会把它交给服务器答。离线时显示「本地版不含行情」,不是故障。
5.3 企业医生(Pro)
对一家公司一个财季的体检报告。选好公司后自上而下:
检查范围说明:本次检查了多少项能对回财报的锚定层指标,以及明确不在范围内的五类:表外杠杆的真实性、融资期限结构、Level 3 资产、法律负债、再融资风险。
锚定层:逐项体征卡片,每张含
- 指标名与状态芯片(异常 / 关注 / 不判定)、新增 / 持续;
- 一句结论,例如「经营现金流 −372 百万美元,同比下滑 41%,去年同期 +630」;
- 判据来源:「去年同财季 FY2024 Q3」(同比)、「同业分布(同行业公司的中位数)」(横向)、或「行业经验阈值(配置值,非披露值)」。
正常的体征折叠在「另有 N 项正常体征」里,点开可看。
锚定层的指标包括:收入、毛利率、净利率、合同负债、经营现金流、经营现金流占收入、应收周转(DSO)、存货周转(DIO)、应付周转(DPO)、现金转换周期、应计比率、滚动四季自由现金流、利润未变现金、应付撑起的现金、净负债 / 经营现金流、股东权益(负权益)、持有到期证券侵蚀权益(金融机构)、ROIC 减资本成本及其持续季数、资本开支强度、增量 ROIC、投入资本变化、营运资金模式、同比基准(重述)。
结构层:客户集中度、逾期应收占比、订单笔数、活跃客户数。整块灰化,标题写「不参与判定」——这些数字反映的是生成器配置,不是这家公司(财报不披露,无从对账)。
处方:本季的处方条目,每条由模型基于对账后的数据生成,必须挂一段 10-K 原文。带「原文已核验」的可点「10-K 原文」跳到 EDGAR;标「无披露原文支撑」的是推理,不是依据。更早财季的处方不混在本页,只提示数量。
5.4 经营评分(Pro)
「更多 → 经营评分」。把企业医生的体征归成七维,各维从 100 起扣:每条异常扣 25、每条关注扣 10,扣到 0 为止。
| 维 | 看什么 |
|---|---|
| 财务体质 | 净负债对经营现金流、资本回报、应计比率、自由现金流、HTM 浮亏 |
| 成长性 | 收入、净利、毛利率、净利率同比,合同负债 |
| 风险 | DSO、DIO、CCC、资本开支强度 |
| 产业比较 | 同行业、同日历季度的横向体征 |
| 披露可信度 | 重述史、破产申请、SEC 执法 |
| 筹码流向 | Form 4 公开市场买卖在同季横截面里的相对位置 |
| 估值高低 | 同行业同季市盈率排名(市销率、市净率一并给出但不进分) |
- 总分是各维平均,不足 4 维不给总分。
- 绝对分 vs 同业百分位要一起看:绝对分跨时间可比、但多数公司挤在 80–100;百分位横向分得开,代价是会漂(同行变好,它自己没变也会掉)。
- 偿付能力警报是独立的一行,不进总分:本季触发「负权益且在烧钱」或「持有到期证券按市价吃光权益」。实测触发过的 110 家里 55 家一年内破产(精确率 50%)。它显示的是那次申报时的状态,不一定是此刻的。
- 价格与估值:披露后首个交易日价、最近收盘、市值、TTM 市盈率。两个价都不是实时价。TTM 净利不为正时市盈率给「未判定」而不是极端值。桌面版离线时这一块显示「拿不到」。
- 页尾两段必读:「它看得见的是经营衰竭」(破产组事前中位数百分位 16,但在同规模小公司里 AUC 只有 0.59)与 「这个分不是买入建议」(回测:去掉长尾后与零无法区分)。
5.5 股市天气(Pro)
把量价与体检读成天气。这是实况,不是预报——天气图标说的是已经发生的那一季。
- 当季天气:天空(晴 / 薄云 / 多云 / 阴 / 雷暴 / 未观测)、气压计(体检)、能见度(成交量同比)、股价。判读:共振向上 / 共振向下 / 「晴,但气压在掉」(锋面:股价在涨而体检查出新增异常,此时该信仪器)/ 「雨,但气压在升」(可能错杀,也可能仪器还没测到)。
- 历史天气:近若干季一排图标,画成问号的是未观测——缺披露日、缺披露后窗口或缺去年同季成交量基准,判不了,不是显示出错。
- 天气图 · 全池:按行业分组的条形,按「在下雨的比例」排序,雷暴与阴占比最高的行业排最前。
- 利润没变成现金:应计比率为正、而股价还在涨的公司。应计比率 =(滚动四季净利润 − 滚动四季经营现金流)÷ 平均总资产。应计高不等于造假,只有体检判了预警的才带色。
- 锋面:财报公开后股价在涨、而体检说这家有问题的公司。入选只看两条锚定层条件(本季首次报异常,或应计为正且被判关注 / 预警)。旁边的内部人买 / 卖笔数、议员卖出人数、最长滞后天数只作背景,不参与入选。「最长滞后」是成交到公众可见隔了多少天——量的就是信息不对称本身。窗口一律是(本次财报申报日,下次财报申报日]。
- 本台预报准确率:本项目预报至今的 skill score,正数才算有技能,不是百分比。
5.6 三态倾向(Pro)
把已有结论按权重加起来,归一成多头 / 持有 / 空头三个倾向度。权重:体检 2.5 > 象限 2.0 > 判读 1.5 > 营收同比 1.0 > CCC 同比 0.75。
这三个数是倾向度,不是概率——它回答「现有证据往哪边倒、倒得有多明显」,不回答「涨的概率有多大」。页尾附一张证伪表(全池、与所选公司无关):按建仓时刻的三态分桶,看之后到下次披露的超额收益 ±2 个标准误。目前三个桶都压着零线——这套判读测不出方向性效果,这是结论,不是故障。
5.7 内部人交易(Pro)
- 最大买入 · 全池:近一年公司内部人(高管、董事、10% 以上股东)在公开市场的买入,按金额排序。这是库里唯一能回答「谁在什么价位买了多少」的数据源——Form 4 逐笔申报,有确切成交日、成交价、股数。点一条跳到该公司的完整明细。
- 某公司的内部人交易:买 / 卖分列,每笔给成交日和申报日。中位滞后 2 天,均值 10 天,最长实测 8767 天。拿成交日去对齐股价是事后诸葛。
- 同一笔交易多个申报人各报一次的(受益所有权与直接持有分开披露),按申报号合并,标 +1。
- 授予、行权、代扣税不计入——那些不是市场交易。
卖出是常态,买入才罕见(库内买 8 万笔、卖 35 万笔),所以只给买入着色。这一页是事实,不是买入依据:「内部人买入」做成过预报信号,实测 skill −0.0016,统计上就是零。
5.8 每日预报(Pro)
每个交易日 18:30(纽约时间)出一期简报。
订阅:点「订阅每日预报」。可填关注列表(逗号分隔代码,留空 = 全部;只改简报里显示哪几条,不改简报本身)和邮箱(留空不发信;填了每期发一封纯文本邮件,条数写在标题上;站内信箱是投递本体,邮件只是提醒)。
信箱:按期列出,标未读数。没有预报的日子也会收到一期,明说「今日无新预报」并附滚动成绩——否则连着两周收不到东西时,分不清是系统停了还是真没预报。
简报:一张表:标的、窗口(5 / 21 / 63 个交易日)、模型概率、气候基准。预报概率一律不着色——该看的是它与气候基准差多少。已出的一期永不重写。
- 概率下面多一行分位数:超额收益的「中位」与「最差 5%」,后面是气候基准的同两个数。概率只说「跑赢的概率」,这一行说「跑赢跑输各多少」——最差 5% 才是该问的那个数。历史观测不够 400 条的预报没有这一行(宁可不给,不硬凑一条尾巴)。
滚动成绩:分「实盘」与「回填推演」两栏。每栏按模型给 Brier、基准 Brier、skill、实际命中率。
- Brier 越小越好,随机猜是 0.25;skill = 1 − 模型 Brier / 基准 Brier,正数才算有技能;两个都不是百分数。
- 分位 skill 是同一个公式换成 pinball loss(分位数预报的标准分数):它记的是中位数与尾部报得准不准,只数两边都带分位数的格子,所以条数常比上一行少。同样正数才算有技能。
- 回填那份的模型是在看过这段历史之后设计的,整段灰化,只当参考。
- 实盘还没结算记录是正常的——前向成绩要一天一天攒。
账户成绩:投稿人(按账号合并所有模型名)的积分余额、已结算数、skill。校准:说 60% 的那些次里是不是真有约 60% 发生了;分桶不足 50 条的不画。
记分卡不需要订阅就能看:公开接口 https://app.assay.onepbdc.com/api/lt/dx/forecast/scorecard,桌面版本地也能答。每个交易日结束时,当天发出的预报、基准与体检快照的哈希会写进一份证据文件推到公开仓库 https://github.com/wr169/assay-data,前后链接——任何人都能验「已发出的有没有被改」。
5.9 投一条预报(Pro)
把你自己的信号交给这台记分机结算、配基准、打分。
表单:标的(必须有行情)、窗口(5 / 21 / 63 日,默认 21)、概率(这只票在窗口内跑赢等权全池的概率,0 与 100 之间、两端不含)、模型名(自起,例如 MOMENTUM)、依据(为什么这么报——只给概率不给判据,事后没人说得清当时在想什么)。
提交后给一张回执:你报的概率、今日气候基准、基准由多少条已结算观测估出。这条预报不可修改,窗口走完自动结算。
五条规矩(每条都是拒绝,不是纠正):
- 信息截止日只能是今天——不接受日期参数。
- 概率越界直接拒,不夹逼。
- 标的必须有行情,否则永远结算不了。
- 同日同标的同窗口同模型只收一次;要改就换个模型名另发一条。
- 必须有当日已发布的气候基准(每交易日 18:30 随发报一起发布,之前投会被拒)。
每条投稿要押注。 每个投稿人有一份固定的、不可充值的积分(不涉及任何真实资金)。每条按当日气候基准建一个二元仓位:报得比基准高就是买 YES、低就是买 NO;注码按 Kelly 由你报的概率与基准差多远决定,下注当时就扣。押对拿回来,押错归零,亏光封存出局、不能重开。它答的是记分卡答不了的那半个问题:你为自己说过的话付出过什么。
我投过的:列出你每条投稿与状态(待结算 / 跑赢 / 没跑赢)。待结算不是故障:63 日窗口天然要挂三个月。
5.10 覆盖率查询(免费)
订阅之前该先问的一件事:我的持仓里有几只在覆盖范围内。
贴一串代码(逗号、空格、换行都当分隔符,一次最多 500 个),点「查覆盖」。逐只返回七层:财报锚、行情、体检、处方、分部、经营明细、天气。
三态图例:实心 = 有;空心 = 查过了,没有;虚线加问号 = 这一层现在答不上来。后两者绝不是一回事——桌面版本地没有行情、经营明细、天气这三层,就画成问号,而不是替它们下「没有」的结论。
不在主数据里的代码单独标「未收录」:可能是拼写、不在 SEC 清单里,或已退市。
5.11 数据健康(免费)
回答「这套东西的数据停在哪一天」。这个后端「活着」几乎不说明任何事,真正会坏的是上游数据停了——那时所有接口正常返回,只是内容悄悄停在某一天。
- 本地数据包(桌面版 / 网页版):完整性(已校验 / 对不上 / 无从校验)、版本、有新版时给「下载并换上」按钮——点完原地换好,不用重启(十几 MB,别关窗口)。见 6.1。
- 数据源:每个来源的最新日期、行数、标的数,几天没动的标「需要注意」。
- 分层覆盖:主数据 / 有行情 / 有财报锚 / 有体检 / 有处方 / 有分部 / 有经营明细 / 判得出天气的实时计数。
- 物化快照:上次刷新时刻。
- 预报运行状态:实盘已发、已结算、待结算、简报期数、订阅者、最近一期。
- 重述失真:近 N 天披露的财季里,同比基准被事后重述扭曲的公司名单。
这个接口不需要登录:https://app.assay.onepbdc.com/api/lt/status,只出聚合计数与时间戳。
5.12 策略实验室(Lab)
把「想法 → 信号 → 回测」压到几分钟。它的价值是降低试错成本,不是给结论背书:季频信号一只标的四五年只有十几次调仓,收益差异主要是噪音。
三个标签页:
技术面:单标的均线策略。参数:均线天数(默认 20)、买入倍数(默认 1.05,价格站上均线 × 1.05 买)、卖出倍数(默认 0.90)、单边费率(基点,默认 3)。
诊断状态:勾选一组企业医生结论(异常 / 关注 / 未触发 / 不判定),只在该公司体检落在这些状态时持有。入场一律在披露日之后的第一个交易日——按财季末对齐是前视。
华尔街:十个文献模板。
| 模板 | 参数 | 备注 |
|---|---|---|
| 盈利惊喜漂移(PEAD) | SUE 门槛、持有天数 | 进场锚在 10-Q/10-K 提交日之后第一个交易日 |
| 基本面因子 | 因子(复合 / 低应计 / 高毛利÷总资产 / 低资产增长 / 回购)、百分位门槛 | 披露当日截面百分位 ≥ 门槛才持有 |
| 配对(多头腿) | 对手标的、形成窗口、开仓 z、平仓 z | 只表达多头腿,净值含市场方向 |
| 趋势跟踪 | 规则(过去收益为正 / 高于均线)、回看、剔除最近、均线、每月末 / 每日判定 | 趋势为空时空仓、不做空 |
| 跟内部人买 / 跟国会议员买 | 金额门槛、买家人数、成簇窗口、持有天数 | 锚在申报日次日;国会数据从 2025 年起;没有申报的公司会明说 |
| 52 周新高 / 均线金叉 / RSI 超卖反弹 / 日历效应 | 各自的窗口与阈值 | 只看价格;每条说明里写着它在全池检验里的下场 |
点「跑回测」,结果:策略 vs 买入持有的总收益与年化、信号数 / 可用 / 命中持仓、交易次数、盈亏笔数、平均盈亏、持仓占比、区间年数、净值曲线(起点归一为 1)、分年度对照、逐笔成交、区间末端持有 / 空仓状态。末端状态取的是库里最后一根日线,不是此刻行情。
试验登记册(页尾常驻):本项目对「某条规律能不能预测收益」做过的每一次全池检验,一次一行、不删不改,写明假设、样本、结果、结论(过门槛 / 薄 / 无区分度 / 反的 / 已撤回)与注册成的预报模型。上面写着已测条数与下一条假设的门槛——单检验 2.78、家族下限 3.0、按条数的 Bonferroni 三者取大;测二十条只讲一条与只测一条,不该用同一个门槛。单票回测的收益数字不构成证据,证据在这一册里,而且多数是否定的。
5.13 交易(纸上交易;注册即可用)
模拟盘,初始资金 100,000 美元(虚拟),一天只有收盘一次集合竞价成交机会。
- 下单:选标的,买入 / 卖出,只支持限价单,整数股。页面显示可用资金与按此价最多可买股数;卖出显示当前持仓。卖出超过持有的多头要拒;没有多头时卖出就是卖空(开空):开空要 150% 保证金(卖出所得不能动用,再加 50% 自有资金),持有期内的分红要付出,价格上涨就亏;买入则先回补空头,不能一单从空头翻成多头,也不能一单从多头翻成空头。柜台不替你强平,净资产低于空头市值 30% 时页面警告并拦下新开空与买入加仓。止损 / 止盈只对多头有效。报单成功只代表「委托已报」,能否成交取决于对手盘。
- 持仓:数量、均价、市值(按分析后端的日线收盘估,不是实时价)、盈亏。
- 止损 / 止盈:为某个持仓挂止损价(跌破就卖)和 / 或止盈价(涨到就卖)。触发看当日最高 / 最低价,成交在当日收盘竞价,跳空日两者差别会很大;同一天两个价都碰到一律按止损算。可撤。
- 委托:今天的委托与状态(未报 / 已报 / 部成 / 已成 / 已撤 / 部撤 / 废单)。只有已报与部成的能撤,撤单返回成功指「撤单已受理」。
- 成交:今天的成交明细。
5.14 我的成绩单(注册即可用)
两条轨道,答的是不同的问题,不要合起来读:
- 买入判断:每一笔买入按固定 63 个交易日结算,不看你后来卖没卖。答「看完体检形成的判断对不对」。基准是同一天、同一窗口、全池等权——没有基准的收益率不可解释。给笔数、跑赢基准比例、平均超额。
- 实际往返:每一次买入到卖出的真实盈亏,含价差与费用,按先进先出配对。答「我操作得怎么样」。给已实现、费用、其中被止损扫出的次数。
一个人可能选对了公司却被止损扫出去——那时买入判断是正的、实际往返是负的,两个都对。笔数少时命中率与平均值说明不了任何事,页面会提醒。
5.15 其他页
- 关于与许可:三层许可(SEC 原始字段公有领域可自由再分发;Assay 加工部分个人与内部可用、不得转售;软件专有)、条款原文、第三方组件清单、「这不是投资建议」。
- 修改密码:见 3.7。
- 用户管理:仅管理员。账号创建、角色、资金额度、会员开通 / 撤销、重设密码。
6. 数据与更新
6.1 数据包与更新
数据包每周一版(每周日发布),内容全部来自 SEC 公开申报(公有领域)与 Assay 自有产物,不含第三方行情。当前版 assay-public-2026-09-11.zip,约 20 MB,22 个 parquet,附 MANIFEST.json(每个文件的字节数与 sha256、被剔除的数据集及理由)与 SHA256SUMS。
- 桌面版:启动时后台查一次索引;数据健康页发现新版就出「下载并换上」按钮,流程是下载 → 校验 zip 哈希 → 解压到旁边 → 确认有 MANIFEST → 才替换。每一步失败都不碰旧数据。换来的包放在用户目录(Windows 是
%APPDATA%\Assay),安装目录里那份只是种子。 - 网页版:每次打开取当前发布的版本,浏览器缓存自动更新。
- 自己下载:官网 Data 区或 https://github.com/wr169/assay-data/releases。
本地包最多比服务器旧一周。数据健康页写着包的日期。
6.2 校验
- 下载的 zip:对官网 / Release 页公布的 SHA-256。
- 解压后的 parquet:对
SHA256SUMS(sha256sum -c SHA256SUMS)。 - 桌面版启动时自动跑快速档(比大小与存在性);完整校验的结果在数据健康页的「完整性」一栏。
校验不过不拦启动(你可能是有意换了自己裁的包),只是说清楚哪个文件对不上。
6.3 桌面版 / 网页版:本地能做什么
查询分两路:本地能答的一律本地答(哪怕连着服务器),其余交给记分服务器。
| 本地答(离线可用) | 交给服务器(要联网) |
|---|---|
| 公司清单、企业医生体检 / 体征 / 归因 / 处方、10-K 叙事 | 经营对股价、市场语言 |
| 经营评分六维(第七维估值与两个价格要行情) | 股市天气、三态倾向、估值 |
| 内部人交易、议员交易、重述检出 | 策略实验室回测 |
| 覆盖率查询(行情 / 经营明细 / 天气三层画问号) | 登录、会员、纸上交易、成绩单 |
| 数据健康(本地包)、预报记分卡 | 每日简报、订阅、投稿 |
服务器连不上时只影响右边那列,错误信息会说清楚是哪一边不通;左边照常。
6.4 纯离线模式(可选)
桌面版出厂默认连接 https://app.assay.onepbdc.com。想让它完全不联网:在安装目录的 resources 文件夹里新建 config.json,写入 { "remote": "" },重启应用。此时不注入访客会话而是一份本地会话(带 LEDGER_VIEW + DOCTOR_VIEW),企业医生等本地页不需要登录即可看;要服务器的页显示「本地版没有」并说明原因。
7. 读数规则(必读)
这个库里的数字不是一样可信的。 这一节比任何一页的功能都重要。
7.1 两个层。 锚定层 = 能对回财报的口径,带色、参与评级。结构层 = 客户集中度、逾期占比、笔均订单这类由生成器参数派生的,灰化、不参与判定。三家业态迥异的公司前十大客户占比都在 30% 上下——那是配置值,不是事实。
7.2 三态,不是两态。 「查过了没有」与「这一层答不上来」绝不是一回事。虚线问号出现时,不要替它下结论。
7.3 「不判定」不是「正常」。 同比基准被事后重述扭曲时,企业医生会把该体征降为不判定而不是报假异常;这家公司在体征里反而显得更干净,所以驾驶舱把重述标记单独列出。
7.4 新增才是信号。 按「新增」排序才能找出哪几季真的出了事;持续的老问题不该每季重报。
7.5 密度比有无重要。 九成公司都出过异常;有区分度的是「平均每季 ≥3 条」。即便如此,精确率也只有 53%,而分数最低一档的公司一年内破产率是 6.7%——九成三是假警报,虽然是基础率的 2.7 倍。
7.6 预报看 skill,不看概率。 报的是概率而不是方向;每条预报配一条同标的、同日、同窗口的气候基准(无条件命中率),两者 Brier 相减才是 skill。没有基准的 Brier 是个无法解释的数字。至今没有一个已注册的预报模型稳定跑出正的 skill。
7.7 内部人卖出不是看空。 卖出多半是期权到期的例行减持(卖 : 买 ≈ 4 : 1),买入才是有人拿自己的钱下注;即便如此,「内部人买入」信号实测 skill 也是零。
7.8 财季内回报含前视。 那段涨跌发生在财报公布之前;要判断「市场读没读懂这份财报」,只能用披露后窗口。
7.9 回测收益高不等于策略有效。 单标的四五年十几次调仓,差异主要是噪音;全池检验里趋势跟踪两条规则都没跑赢买入持有。
8. 常见问题与故障排除
| 症状 | 原因 | 怎么办 |
|---|---|---|
| Windows 弹「已保护你的电脑」 | 安装包未签名 | 更多信息 → 仍要运行;装前核对 SHA-256 |
| 底栏只有三格 / 更多里没有企业医生 | 访客或免费账号,缺 DOCTOR_VIEW |
登录并开通 Pro;开通后刷新页面 |
| 「这些页面还没对你开放」 | 缺该页的权限点 | 看页面列出的权限点,对照附录 B;重新登录不会改变权限 |
| 付了钱菜单没变 | 页面还没重新拉会员状态 | 刷新页面;仍不行则退出重登;再不行写信附账号数字 |
| 登录说账号不对 | 填了用户名 / 邮箱 | 账号是注册时分配的数字 |
| 忘记密码 | 无自助找回 | 写信 support@onepbdc.com 附账号数字 |
| 注册被拒 | 同一 IP 每小时 5 个 | 等一小时 |
| 「本地版不含行情」「本地版没有这个接口」 | 桌面版离线,或该功能要服务器 | 正常;联网后自动走服务器 |
| 「连不上记分服务器」 | 网络或服务器 | 本地诊断照常;稍后再试;服务状态 https://app.assay.onepbdc.com/api/lt/status |
| 「网络不通,检查是否还连着同一个 Wi-Fi」 | 设备离线 | 检查网络 |
| 某页点了没反应(网页版) | 前端刚更新,旧页面引用的分块已下线 | 页面会自动重载一次;仍不行手动刷新 |
| 覆盖率页画问号 | 本地答不上这一层 | 正常,见 7.2 |
| 经营评分没有总分 | 算得出的维度不足 4 维 | 正常 |
| 股市天气历史里有问号 | 那几季判不出 | 正常,多半缺去年同季成交量基准 |
| 「待结算」挂了很久 | 63 日窗口要三个月 | 正常;已结算数不涨才是异常 |
| 数据健康说「对不上」 | 数据包某文件被改或下载不完整 | 数据健康页重新「下载并换上」,或重装 |
| 网页版停在登录框且登不上 | 浏览器隐私模式禁了本地存储 | 换普通窗口 |
| 想看应用到底调了什么接口(桌面版) | — | 用源码方式 npm run serve,终端打印每条 [api] |
9. 隐私、条款与联系方式
- 收集什么:数字账号、密码哈希、角色与会员状态;仅在订阅预报邮件时收邮箱;Stripe 的客户号与订阅号(不存卡号);你投的预报与纸上交易账本(按设计属于公开记分记录,发出后不可修改删除);记分服务器的访问日志保留最多 30 天。
- 不收集什么:你在桌面版 / 网页版看了哪家公司、搜了什么——查询在你自己的设备上跑。没有广告与分析追踪器。
- 数据在哪:记分服务器在 Microsoft Azure 加拿大中部;支付数据在 Stripe;每日证据文件(只有哈希)在公开 GitHub 仓库。
- 你的权利:随时可要求删除账号与存档邮箱;已发出的预报以数字账号留在封存记录里。
- 运营主体:Home 7 Inc.,1022 Wyandotte St E, Windsor, ON N9A 3K2, Canada。适用安大略省法律。
- 支持:support@onepbdc.com,两个工作日内回复。
- 条款、隐私、退款全文:https://assay.onepbdc.com/legal.html
- 数据与发布:https://github.com/wr169/assay-data
附录 A:术语表
| 术语 | 含义 |
|---|---|
| 财报锚(anchor) | 按申报日对齐、重述感知的季度财务数据,来自 SEC XBRL |
| 锚定层 / 结构层 | 能对回财报的指标 / 由生成器参数派生的指标(不参与判定) |
| 体征(finding) | 企业医生对一项指标在一个财季的判定:异常 / 关注 / 未触发 / 不判定 |
| 新增 / 持续(onset) | 本季首次出现 / 上季已有 |
| 处方(prescription) | 针对新增异常、挂着 10-K 原文的模型生成建议 |
| 重述(restatement) | 公司事后改写了去年数据,导致同比基准失真 |
| CCC / DSO / DIO / DPO | 现金转换周期 / 应收周转天数 / 存货周转天数 / 应付周转天数 |
| 应计比率 | (滚动四季净利润 − 滚动四季经营现金流)÷ 平均总资产,越高利润越多没变成现金 |
| 气候基准(climatology) | 同标的、同日、同窗口的无条件命中率,预报要打败的对象 |
| Brier / skill | 概率预报的均方误差(越小越好,随机 0.25)/ 1 − 模型 Brier ÷ 基准 Brier(正数才有技能) |
| 分位数 / 分位 skill | 前向超额收益的 5 / 25 / 50 / 75 / 95% 分位(简报只显示中位与最差 5%)/ 同一个 skill 公式换成 pinball loss,正数才有技能 |
| 校准 | 说 60% 的那些次里,是否真有约 60% 发生 |
| 实盘 / 回填 | 前向发出后结算的成绩 / 用历史数据推演的成绩(灰化,只当参考) |
| Kelly 注码 | 按报的概率与基准差多远定注码;报你真信的概率是唯一最优 |
| 锋面 | 财报公开后股价在涨、而体检说有问题的公司 |
| 物化快照 | 预先算好的汇总表,页面读它而非实时算;有刷新时刻 |
| Form 4 | 内部人交易的逐笔申报 |
| PEAD | 盈利公告后漂移 |
| 证据锚定链(attest) | 每日推到公开仓库的哈希文件,前后链接,用于验证已发出的记录未被改 |
附录 B:页面与权限速查
| 页面 | 入口 | 权限点 | 谁有 |
|---|---|---|---|
| 驾驶舱 | 底栏 | LEDGER_VIEW |
访客 / 免费 |
| 经营对股价 | 底栏 | LEDGER_VIEW |
访客 / 免费 |
| 覆盖率查询 | 更多 | LEDGER_VIEW |
访客 / 免费 |
| 数据健康 | 更多 | 登录即可(接口本身免鉴权) | 访客 / 免费 |
| 关于与许可、修改密码 | 更多 | 登录即可 | 所有账号 |
| 企业医生 | 底栏 | DOCTOR_VIEW |
Pro / Lab |
| 经营评分、三态倾向、股市天气、内部人交易 | 更多 | DOCTOR_VIEW |
Pro / Lab |
| 每日预报、投一条预报 | 更多 | DOCTOR_VIEW |
Pro / Lab |
| 策略实验室 | 更多 | BACKTEST_RUN |
Lab |
| 交易 | 底栏 | ORDER_PLACE 或 ACCOUNT_VIEW |
所有注册账号 |
| 我的成绩单 | 更多 | ACCOUNT_VIEW |
所有注册账号 |
| 用户管理 | 更多 | ADMIN_OPS |
管理员 |
纯离线模式(6.4)下本地会话自带 LEDGER_VIEW + DOCTOR_VIEW,企业医生等本地页免登录。