{"uid":"cap_ND2ixKR9L6Cs2VUPXzMnL","slug":"cloudmaxi0x-trade-filter-validator-e9e9752f","name":"CloudMaxi0x Trade Filter Validator","description":"Deterministic, verifiable crypto market data and honest backtest audits. Use GET /v1/data/ohlcv for exact OHLCV over a half-open range with a SHA-256 Merkle manifest - only closed candles are returned, exchange decimal strings are preserved byte for byte, so the same query always yields the same root. Use GET /v1/data/proof to verify one candle against a root you already hold. Use POST /v1/validate/trades to find out whether a list of trade returns can be distinguished from luck, and POST /v1/validate/filter to test a trade filter against a permutation null. GET /, /v1/schema and /v1/data/sources are free.","url":"https://cloudmaxi0x.com/v1/validate/filter","method":"GET","headers":{},"bodySchema":{"type":"object","properties":{"exit_ms":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"title":"Exit Ms","default":null,"description":"Optional exit timestamps (epoch ms)."},"entry_ms":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"title":"Entry Ms","default":null,"description":"Optional entry timestamps (epoch ms). Supplying these lets us detect overlapping trades, which silently invalidate walk-forward testing."},"features":{"type":"array","items":{"type":"array","items":{"type":"number"}},"title":"Features","minItems":120,"description":"One row per candidate trade, in chronological order. Every value must have been computable strictly BEFORE that trade's entry - this is the assumption the whole audit rests on, and the one we can only partly check."},"returns_r":{"type":"array","items":{"type":"number"},"title":"Returns R","minItems":120,"description":"Outcome of each candidate trade in R, same order as `features`. Include the trades your filter rejected: without them there is no baseline to measure lift against, and lift is the entire question."},"permutations":{"type":"integer","title":"Permutations","default":50,"minimum":20,"description":"Permutations used to build the chance distribution. The p-value cannot resolve below 1/(permutations+1)."},"feature_names":{"type":"array","items":{"type":"string"},"title":"Feature Names","minItems":1},"claimed_lift_r":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Claimed Lift R","default":null,"description":"Optional: the out-of-sample edge your own backtest reported for the filtered subset, in R above the unfiltered baseline. We report the gap between your number and our strict replay."},"gross_returns_r":{"anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}],"title":"Gross Returns R","default":null,"description":"Optional but strongly recommended: the same trades BEFORE fees and slippage. Any feature that is part of how `returns_r` is computed - a fee column, a slippage estimate, anything subtracted to get net - will correlate with it by arithmetic alone. Supplying gross lets us re-measure against a target the feature is not part of, which is the only way to tell a real effect from bookkeeping."},"selection_threshold_r":{"type":"number","title":"Selection Threshold R","default":0.1,"description":"Predicted-R cutoff above which a trade is selected. Higher means a more selective filter."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.25","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.25/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.25","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.25","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_4EE0YWJiCs1H4HxYTeN5V","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.25","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Tests a trade filter against a permutation null hypothesis to determine whether its selection lift is statistically distinguishable from chance, with optional gross-return and claimed-lift gap reporting.","exampleAgentPrompt":"Run a permutation audit on my crypto trade filter — I have 200 candidate trades with 5 features each (all computed before entry), returns in R, and entry timestamps. Use 100 permutations and check whether my claimed lift of 0.35 R holds up against the null.","exampleUseCases":[{"title":"Overfitting check for algo strategy","prompt":"I have a crypto trading filter I built on 18 months of data — 150 trades, each with 4 features I computed before entry, and their realized returns in R. Can you run a permutation test with 80 permutations to see if the filter's lift is statistically real or just noise?"},{"title":"Auditing a vendor's claimed edge","prompt":"A signal provider is claiming their trade filter produces 0.6 R of lift over baseline. I have their 220 trades, 6 features, and returns. Can you run 100-permutation validation on it and tell me how big the gap is between their claimed 0.6 R lift and what actually survives a strict permutation audit?"},{"title":"Walk-forward integrity check","prompt":"I want to make sure my trade filter isn't accidentally using overlapping trade windows that would invalidate my walk-forward test. I have entry and exit timestamps for 180 trades with 3 features each — can you run the permutation filter validation with 50 permutations and flag any overlapping trade periods?"}],"resultDescription":"Returns a p-value indicating whether the filter's lift is distinguishable from chance, the measured lift in R over the unfiltered baseline, the permutation null distribution, and optionally the gap between claimed out-of-sample lift and audited lift; also reports any detected overlapping trade windows that would invalidate walk-forward testing.","failureModes":["Fewer than 120 trades supplied — request rejected with validation error","Features matrix row count does not match returns array length — schema mismatch error","Features contain values not computable before trade entry (lookahead) — cannot be fully detected, audit proceeds with caveat","Entry/exit timestamp arrays length mismatch — error returned","Permutations below minimum of 20 — rejected","p-value floor limited by 1/(permutations+1) — very low p-values unresolvable with few permutations","Returns include post-fee costs but gross_returns_r omitted — audit proceeds but fee-snooping check skipped"],"whenToPreferThis":"Choose this endpoint when you need to statistically validate whether a trade filter's selection lift exceeds what random permutation of the same features would produce — specifically when you want a permutation null hypothesis test rather than a simple Sharpe or t-test. Prefer this over generic statistics APIs when the input is trade-level feature rows with R-denominated returns and you want an honest audit that accounts for baseline performance, overlap detection, and claimed-vs-actual lift gaps in a crypto trading context.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T06:40:57.601Z","isFirstParty":false}