Decision scope
What the completeness stress test can decide
This tool can decide whether a supplied CSV follows its required-column schema, whether signal identifiers are unique after trimming and Unicode caseless normalization, how many rows are resolved, open, cancelled, or no-fill, and whether an entered declared period total is at least as large as the supplied population. When a valid declared total is present, it calculates supplied-row coverage, resolved-row coverage, and the declared row gap. Those are reproducible statements about the inputs in this browser session.
It can also recalculate observed resolved net R and observed profit factor under two user-visible sensitivity assumptions. Declared-gap stress treats each count difference between the entered declared total and the supplied row count as one hypothetical loss of the selected R magnitude. Open-plus-declared-gap stress adds each supplied open row to that modeled count. The tool never converts cancelled or no-fill rows into losses because those labels describe non-executed states.
The output cannot decide whether the entered total is true, whether an archive itself is complete, whether a source post was edited or deleted, whether a row was executable, whether costs are accurate, or whether a provider acted intentionally. A count match is not authenticity proof. A row gap is not proof that any record was omitted. The stress result is not evidence that a modeled loss occurred. These limits are part of the method, not optional disclaimers after a favorable number.
Interactive calculation
Run the browser-local test
Required columns are signal_id, outcome, and net_r. Optional columns are closed_at_utc, source_url, fees_included, and notes. The wider CSV produced for the existing result-sheet validator remains compatible: additional nonblank columns are retained in the local input, reported as ignored, and do not suppress this calculation. Accepted outcomes are win, loss, break_even, open, cancelled, and no_fill. Resolved rows require net R. Open, cancelled, and no-fill rows require a blank net-R cell.
Processing stays local because the embedded script decodes strict UTF-8 bytes and performs the calculation inside this page. Analyzer inputs use no fetch request, upload endpoint, cookie, browser storage, or telemetry call. The optional JSON export contains counts, issue codes, assumptions, and aggregate metrics; it excludes the original CSV, signal identifiers, notes, source URLs, provider names, and account or wallet identifiers.
declared row gap = entered declared period total - unique supplied rowssupplied-row coverage = unique supplied rows / entered declared period total * 100declared-gap stress net R = observed net R - declared row gap * hypothetical equal loss RMaximum 256,000 UTF-8 bytes, 2,000 nonblank data rows, 40 columns, 12,000 Unicode code points per cell, and 12 decimal places for net R. Change any input and the prior result is hidden until the test runs again.
Metrics stay suppressed until a structurally usable result set is tested.
Supplied row states
Declared-period comparison
Observed resolved aggregate
Declared-gap scenario
Open-row sensitivity
| Severity | Code | Row | Message | Repair |
|---|
Population arithmetic
How supplied and declared coverage differ
The supplied population is observable inside the CSV. After the header, each nonblank row must carry one signal identifier. Identifiers are trimmed and compared without case distinctions, so ABC-12 and abc-12 cannot occupy two rows. Unique supplied rows include every accepted outcome because a complete period record needs to preserve unresolved and non-executed states rather than report only closed winners and losses.
The declared period total is a separate, user-entered denominator. It should come from a statement that uses the same period, timezone, signal-unit rule, and treatment of revisions as the CSV. If a provider says that a monthly record contains 100 signals, but the export contains 80 unique rows, the declared row gap is 20 and supplied-row coverage is 80 percent. That arithmetic does not identify which rows are absent or what their outcomes were.
Resolved-row coverage is intentionally lower when open, cancelled, or no-fill records exist. It divides only win, loss, and break-even rows by the same declared total. This distinguishes two questions: how much of the declared population is represented at all, and how much has a numeric resolved outcome. A row can improve supplied-row coverage without entering observed net R. That is not a defect; it prevents unresolved states from disappearing.
When no credible declared total exists, the tool does not invent one from the supplied row count. It still validates rows and calculates observed resolved net-R components, but it suppresses both coverage percentages, the declared row gap, and declared-gap stress. The state reads "Rows parsed; declared total not supplied." This is more limited than assuming the file contains the whole population, and that limitation remains visible in the export.
Sensitivity, not accusation
How the two declared-gap scenarios work
The declared-gap stress scenario begins only when a valid declared total is larger than the unique supplied-row count. It multiplies the declared row gap by the hypothetical equal-loss assumption. The modeled amount is added to the absolute negative net-R denominator and subtracted from observed net R. Gross positive R is unchanged. The calculation answers a narrow question: what would these aggregates become if each declared count difference were assigned this exact loss size?
The open-plus-declared-gap stress scenario uses the same method but adds one modeled loss for each supplied open row. It does not claim that an open row ultimately lost, that every open row had equal risk, or that the position was executed. It simply exposes how much an aggregate depends on leaving both the declared row gap and unresolved rows outside realized loss arithmetic. Because cancelled and no-fill rows describe non-execution, they remain visible counts but are never included in either modeled loss total.
The hypothetical equal-loss assumption is a user-controlled sensitivity value. One R can be useful when the sheet defines R consistently, but the correct review value may differ if stops, partial exits, or risk units differ. The page rejects zero, negative, exponent-form, out-of-range, and more-than-12-decimal inputs. It does not search for a dramatic value or optimize a conclusion.
The "equal losses to non-positive net R" metric is the smallest whole count whose cumulative stress loss meets or exceeds positive observed net R. If observed net R is already zero or negative, the count is zero. This is deterministic offset arithmetic, not the probability of a future losing streak, not a confidence interval, and not a claim about how many records are actually missing.
Evidence boundary
Why a complete count is not authenticity proof
A CSV can contain exactly the number of rows stated in a caption and still fail a source audit. Identifiers can be invented, timestamps can be revised, losing calls can be replaced with different calls, execution prices can be unattainable, or the declared total can omit a separate category. Conversely, a row gap can come from an export failure, a counting convention, a duplicate, or an unresolved correction rather than deliberate concealment. Count equality and count difference both require context.
Verification requires source-level work that this browser-local calculator does not perform: stable provider identity, original timestamped calls, immutable or well-documented edit history, a declared population, every loss and unresolved state, exchange and market context, fill and fee assumptions, and independent review. The calculator does not contact Telegram, Discord, an exchange, a blockchain, an archive, or a provider. It never awards a rating or verification mark.
The SEC advises readers to understand how a performance claim was calculated, including what was included or omitted and how fees affect the outcome. The CFTC warns that selected historical trades and hypothetical results can differ from actual market conditions. Those observations explain why row-level reconciliation matters, but they do not turn a structural anomaly into a legal or factual verdict. This page uses neutral issue labels and concrete next steps rather than accusation language.
Denominator discipline
How to define one result period
Write the period definition before comparing counts. Record the start and end timestamp, timezone, whether boundary timestamps are inclusive, and which publication channel supplies the calls. Decide whether one signal means one initial call, one asset-direction idea, each re-entry, each target, or each edited post. A declared total and a CSV are comparable only when they use the same unit.
Preserve revisions rather than silently overwriting them. A corrected entry can retain the original identifier with a revision note, or a clearly linked replacement identifier, but it should not appear as two independent wins. Duplicate identifiers are rejected because double-counting would inflate the supplied population. The tool does not decide how a provider should number revisions; it requires the chosen rule to stay consistent.
Include open, cancelled, and no-fill calls in the period population when the declared total includes them. If the publisher declares only closed trades, state that narrower denominator and do not compare it with an all-signal export. Likewise, avoid mixing free-channel calls, premium calls, automated alerts, and discretionary updates unless the declared total explicitly combines them. Separate populations make later comparisons interpretable.
A useful audit note names who supplied the file, when it was captured, the file hash, the declared total source, the fee policy, and any known export limitation. Those details are outside this calculator's export because it deliberately avoids identifiers and URLs. Keep them in a separate evidence ledger when they are needed for a provider review.
Outcome handling
How to read open, cancelled, and no-fill rows
An open row belongs to the supplied period record but lacks a resolved net-R outcome at the cutoff. It raises an OPEN_ROWS_PRESENT notice and enters only the open-plus-declared-gap scenario. The page does not mark it as a win or loss. Reviewers should preserve the cutoff date so a later closure does not rewrite what was known at the original measurement time.
A cancelled row says the call was withdrawn before the method treats it as executed. A no-fill row says the stated entry was not reached or not filled under the publisher's rule. Both remain in the supplied count when they are part of the declared population, but neither receives a modeled loss. Their practical significance depends on publication timing, entry rules, and whether followers could have acted before cancellation.
Win, loss, and break-even labels require a numeric net_r. Arithmetic follows the numeric sign. A win label paired with negative R, a loss label paired with positive R, or a break-even label paired with nonzero R produces OUTCOME_SIGN_MISMATCH. The row remains calculable so the discrepancy stays visible rather than being silently repaired.
The optional fees_included field accepts yes, no, unknown, or blank. A resolved row without yes produces a warning because spread, commission, funding, slippage, and partial fills can change net results. The calculator accepts supplied R for internal arithmetic but does not certify the unit definition or translate R into a wallet balance or account return.
Calculation formulas
Calculation formulas
declared row gap = declared period total - unique supplied rowssupplied-row coverage = unique supplied rows / declared period total * 100resolved-row coverage = resolved rows / declared period total * 100Gross positive R is the sum of positive numeric net-R values among resolved rows. Absolute gross negative R is the magnitude of negative numeric values. Observed net R is their signed sum. Observed profit factor is gross positive R divided by absolute gross negative R. When no resolved negative value exists, observed profit factor is not calculable; the page never displays infinity. If gross positive R is zero and a negative denominator exists, profit factor is exactly zero.
declared-gap stress R = declared row gap * hypothetical equal loss Rdeclared-gap-only stress net R = observed net R - declared-gap stress Rdeclared-gap-only stress profit factor = gross positive R / (gross negative R + declared-gap stress R)Open-plus-declared-gap stress substitutes declared row gap + open rows for the modeled count. Cancelled and no-fill counts are excluded. Equal losses to non-positive net R uses the ceiling of positive observed net R divided by the stress-loss size. Every net-R and stress value is parsed into a signed integer at a fixed scale of 1012. Sums and comparisons stay in integers; published ratios are rounded half-up to 12 decimal places.
Fixed-scale arithmetic prevents familiar binary floating-point drift from changing a fixture such as 0.123456789012 minus 0.023456789012. Values with finer precision are rejected instead of silently rounded. The published calculation fixtures include exact decimal strings so later releases can reproduce the same outputs independently.
Worked synthetic example
Worked synthetic example
The synthetic example enters a declared period total of 10 and supplies 8 unique rows. Seven rows are resolved, one is open, and none is cancelled or no-fill. The declared row gap is 2. Supplied-row coverage is 80 percent and resolved-row coverage is 70 percent.
Resolved rows contain 5.25 R gross positive, 1.5 R absolute gross negative, and 3.75 R observed net. Observed profit factor is 3.5. With a 1 R hypothetical equal-loss assumption, declared-gap stress models 2 rows and changes net R to 1.75 and profit factor to 1.5. Open-plus-declared-gap stress models 3 rows and changes net R to 0.75 and profit factor to 1.166666666667.
The smallest number of 1 R equal losses needed to make the observed net R non-positive is 4. That does not mean four losses were omitted or likely. It describes one sensitivity boundary for invented rows. Every identifier, timestamp, URL, and outcome in the starter is synthetic and represents no provider, exchange, account, or recommendation.
Download the synthetic CSV or inspect the machine-readable calculation fixtures. These are deterministic test artifacts, not provider performance data.
Reproducibility
Fixtures cover valid, invalid, unresolved, and fixed-scale cases
The generator executes every fixture before writing output. Cases include a missing denominator, a declared count below the supplied population, duplicate identifiers, no observed loss denominator, an open-row-only stress change, all-loss results, malformed quoting, 12-decimal arithmetic, an outcome-sign warning, and a zero stress-loss rejection. Invalid cases produce no metrics.
Open the deterministic fixture table
| Fixture | Expected | Calculated state | Rows | Key prompts |
|---|---|---|---|---|
starter-declared-gap-open-rowEight supplied rows, ten declared signals, one open row, and two declared row gaps. | Calculable | unresolved_rows | 8 supplied; 7 resolved; 1 open | OPEN_ROWS_PRESENTDECLARED_GAPS_PRESENTSTRESS_ASSUMPTION_NOT_EVIDENCE |
declared-completeThree unique resolved rows equal the entered declared total. | Calculable | declared_complete | 3 supplied; 3 resolved; 0 open | FEES_NOT_CONFIRMEDDECLARED_COUNT_MATCHESSTRESS_ASSUMPTION_NOT_EVIDENCE |
denominator-not-suppliedValid rows with no declared total suppress completeness and declared-gap outputs. | Calculable | denominator_missing | 2 supplied; 2 resolved; 0 open | FEES_NOT_CONFIRMEDDECLARED_COUNT_MISSINGSTRESS_ASSUMPTION_NOT_EVIDENCE |
declared-total-below-suppliedA declared total smaller than supplied unique rows is invalid. | Rejected | invalid | 3 supplied; 3 resolved; 0 open | FEES_NOT_CONFIRMEDDECLARED_COUNT_LT_SUPPLIED |
duplicate-signal-idDuplicate identifiers are rejected before coverage arithmetic. | Rejected | invalid | 2 supplied; 2 resolved; 0 open | SIGNAL_ID_DUPLICATEFEES_NOT_CONFIRMED |
no-observed-loss-gap-creates-denominatorObserved profit factor is not calculable, but one modeled declared-gap loss creates a stress denominator. | Calculable | declared_gaps | 2 supplied; 2 resolved; 0 open | FEES_NOT_CONFIRMEDNO_NEGATIVE_RESOLVED_RDECLARED_GAPS_PRESENTSTRESS_ASSUMPTION_NOT_EVIDENCE |
open-row-only-stressA complete declared row count can still contain one open row that appears only in the open-plus-declared-gap scenario. | Calculable | unresolved_rows | 3 supplied; 2 resolved; 1 open | FEES_NOT_CONFIRMEDOPEN_ROWS_PRESENTDECLARED_COUNT_MATCHESSTRESS_ASSUMPTION_NOT_EVIDENCE |
all-resolved-lossesZero gross positive R produces observed and stressed profit factor zero, not a missing value. | Calculable | declared_complete | 2 supplied; 2 resolved; 0 open | FEES_NOT_CONFIRMEDDECLARED_COUNT_MATCHESSTRESS_ASSUMPTION_NOT_EVIDENCE |
malformed-quoted-fieldAn unclosed quoted field fails without partial arithmetic. | Rejected | malformed | 0 supplied; 0 resolved; 0 open | CSV_MALFORMED |
fixed-scale-precisionTwelve-decimal values use exact fixed-scale aggregation. | Calculable | declared_gaps | 2 supplied; 2 resolved; 0 open | FEES_NOT_CONFIRMEDDECLARED_GAPS_PRESENTSTRESS_ASSUMPTION_NOT_EVIDENCE |
outcome-sign-mismatch-warningA win label with negative net R remains calculable but creates a visible warning. | Calculable | declared_complete | 2 supplied; 2 resolved; 0 open | OUTCOME_SIGN_MISMATCHFEES_NOT_CONFIRMEDDECLARED_COUNT_MATCHESSTRESS_ASSUMPTION_NOT_EVIDENCE |
stress-loss-zero-invalidA zero stress-loss assumption is rejected because it cannot express a loss scenario. | Rejected | invalid | 1 supplied; 1 resolved; 0 open | FEES_NOT_CONFIRMEDSTRESS_LOSS_INVALID |
Repair reference
Stable issue codes keep the repair path concrete
Errors suppress all calculations because continuing would require a structural or value guess. Warnings preserve arithmetic but identify a row-level evidence limitation. Notices describe denominator, open-row, non-executed, or stress-assumption context. The issue order follows the frozen source ledger, so machine output does not depend on incidental row traversal order.
Open the 34-code repair reference
| Code | Severity | Meaning |
|---|---|---|
CSV_MALFORMED | error | CSV quoting or record structure cannot be parsed without guessing. |
FILE_TOO_LARGE | error | Input exceeds the fixed byte limit. |
TOO_MANY_ROWS | error | Input exceeds the fixed nonblank-row limit. |
TOO_MANY_COLUMNS | error | Input exceeds the fixed column limit. |
CELL_TOO_LONG | error | At least one cell exceeds the fixed Unicode code-point limit. |
HEADER_EMPTY | error | A header cell is blank. |
HEADER_DUPLICATE | error | A normalized header name appears more than once. |
HEADER_IGNORED | warning | A nonblank extra column is preserved in the input but ignored by this narrow calculation; compatible wider schemas remain calculable. |
REQUIRED_COLUMN_MISSING | error | A required column is absent. |
ROW_WIDTH_MISMATCH | error | A data row does not have the same field count as the header. |
SIGNAL_ID_EMPTY | error | A data row has no signal identifier. |
SIGNAL_ID_UNSAFE | error | A signal identifier contains an invisible formatting control or invalid surrogate code unit. |
SIGNAL_ID_DUPLICATE | error | A normalized signal identifier appears more than once. |
OUTCOME_INVALID | error | Outcome is not one of the accepted states. |
NET_R_REQUIRED | error | A resolved row has no net-R value. |
NET_R_FORBIDDEN | error | An open, cancelled, or no-fill row contains a net-R value. |
NET_R_INVALID | error | Net R is not a strict decimal. |
NET_R_RANGE | error | Net R is outside the fixed accepted range. |
NET_R_PRECISION | error | Net R has more than twelve decimal places. |
OUTCOME_SIGN_MISMATCH | warning | The outcome label and numeric net-R sign do not agree. |
FEE_STATE_INVALID | error | fees_included contains an unsupported value. |
FEES_NOT_CONFIRMED | warning | At least one resolved row does not confirm fee inclusion. |
SOURCE_URL_INVALID | warning | A supplied source URL is not an absolute HTTP or HTTPS URL. |
DECLARED_COUNT_INVALID | error | The declared total is not a whole number within the accepted range. |
DECLARED_COUNT_LT_SUPPLIED | error | The entered declared total is smaller than the supplied unique-row count. |
DECLARED_COUNT_MISSING | notice | No declared denominator was supplied, so completeness and declared-gap outputs are suppressed. |
STRESS_LOSS_INVALID | error | The stress-loss input is not a positive decimal within the accepted range and precision. |
NO_RESOLVED_ROWS | warning | No supplied row can enter observed net-R arithmetic. |
NO_NEGATIVE_RESOLVED_R | notice | Observed profit factor has no negative denominator and is not calculable. |
OPEN_ROWS_PRESENT | notice | One or more supplied rows remain open and are shown separately. |
NON_EXECUTED_ROWS_PRESENT | notice | Cancelled or no-fill rows are supplied but are not modeled as losses. |
DECLARED_GAPS_PRESENT | notice | The entered declared total exceeds the supplied unique-row count. |
DECLARED_COUNT_MATCHES | notice | The entered declared total equals the supplied unique-row count; authenticity and denominator accuracy remain unverified. |
STRESS_ASSUMPTION_NOT_EVIDENCE | notice | Stress results depend on a user-entered hypothetical equal-loss value and do not prove omitted outcomes. |
Evidence limits
Evidence limits
Correct row arithmetic cannot establish that the input population is authentic or complete. The calculator cannot recover deleted calls, detect a fabricated identifier, validate execution prices, inspect edited messages, reconcile multiple channels, or determine whether a user could enter at the claimed price. It cannot distinguish deliberate selection from an export mistake. It cannot verify a provider, award a rating, or settle a dispute.
Profit factor and net R remain properties of the supplied resolved rows under the stated unit. They are not account returns. Position sizing, leverage, compounding, simultaneous exposure, deposits, withdrawals, fees, funding, liquidation, taxes, subscription costs, and missed entries can change an account outcome. Historical and hypothetical arithmetic does not predict future performance.
A declared row gap compares two counts; it does not identify a missing signal. A source-level reconciliation needs a separate expected-ID ledger so a reviewer can classify missing, extra, revised, and mismatched identifiers. This calculator deliberately does not infer those identities from a total.
Method provenance
Official sources and frozen release identity
The research ledger separates official-source observations from local editorial interpretation. It records access dates and explicitly says that web-extracted official pages have no addressable local capture or byte hash in this source package. The generated source identity includes the ledger, generator, checker, selected repository commit, V3 version, analyzer version, and artifact hashes so later changes remain attributable.
| Publisher | Source | Accessed | Use in this method |
|---|---|---|---|
| Google Search Central | Google's Guide to Optimizing for Generative AI Features on Google Search | 2026-07-14 | Foundational SEO remains the basis for visibility in Google's generative search features. |
| Google Search Central | Spam Policies for Google Web Search | 2026-07-14 | Doorway abuse includes substantially similar pages created for specific query variants. |
| OpenAI | Overview of OpenAI Crawlers | 2026-07-14 | OAI-SearchBot controls eligibility for ChatGPT search results, while GPTBot controls potential training use; the settings are independent. |
| IndexNow | Documentation | 2026-07-14 | Submit URLs after they are added, updated, or deleted and verify host ownership with the published key. |
| U.S. Securities and Exchange Commission, Investor.gov | Investor Bulletin: Performance Claims | 2026-07-14 | Readers should understand how a performance claim was calculated and which factors were included or omitted. |
| U.S. Commodity Futures Trading Commission | Fraud Advisory: Commodity Trading Systems Sold on the Internet | 2026-07-14 | Hypothetical results were not subjected to actual market conditions. |
| RFC Editor | Common Format and MIME Type for Comma-Separated Values Files | 2026-07-14 | A header and each record should carry the same number of fields. |
Dataset ID csr-crypto-signal-result-sheet-completeness-stress-test-2026-07-14. Source commit 4c6f7305b79b4aa0ec512d1f455ca1b7bf0ee895. Immutable source ledger.
Questions
FAQ
Does 100% supplied-row coverage prove the result sheet is complete?
No. It only means the number of unique supplied rows equals the declared total you entered. The total itself, row authenticity, deleted posts, duplicate identities, execution, costs, and period boundaries still need separate evidence.
Does a declared row gap prove that the provider hid a loss?
No. A gap can reflect an incorrect declared total, a missing export row, an open record, a cancellation, or another reconciliation issue. Duplicate identifiers are rejected before gap arithmetic. The tool shows the difference and a hypothetical stress scenario; it does not assign intent or outcome.
Why is the declared signal count optional?
Some result sheets publish rows without a credible period total. In that case the tool can still parse supplied rows and observed net R, but it suppresses completeness percentages and declared-gap counts rather than inventing a denominator.
Why are open rows separate from cancelled and no-fill rows?
An open row still has unresolved outcome exposure. Cancelled and no-fill rows describe non-executed states and should not automatically become modeled losses. The open-plus-declared-gap scenario includes open rows only and labels that assumption explicitly.
What does equal losses to non-positive net R mean?
It is the smallest whole number of losses at the entered stress-loss size that would offset the observed resolved net R. It is sensitivity arithmetic, not a probability and not evidence that those losses occurred.
Does the tool upload my CSV?
No. The calculation runs in the browser and the release contract permits zero uploads, network requests, cookies, or storage writes for analyzer inputs.
Can the stress test verify a crypto signal provider?
No. Verification would require stable identity, original timestamped calls, declared population, loss-inclusive outcomes, source records, execution and cost evidence, and an independent review process. This tool performs only the stated arithmetic.
Can I compare two providers with this result?
Only with caution. Different periods, signal definitions, open-trade treatment, fees, leverage, assets, and publication rules can make coverage and stress outputs non-comparable. The tool does not rank providers.
Corrections
Correct the method without buying the conclusion
Corrections to the method or public route can be submitted through Submit a Group. Payment, sponsorship, profile work, or production services cannot buy a favorable conclusion, verified status, ranking position, or removal of missing-proof notes.