Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,524Letters: 13Defects: 1,322counted 2 min ago
teppi

Server definition

Hash
sha256:f4b72a04c0a404e1544225dbedcbfbd815bd49ff16ff1cbc5da752271460bd45
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": "Regime checks what you were sold. Every tool here answers one claim people make about crypto trading with measured numbers: real exchange prices, the fees charged, every start day counted, nothing picked after the fact. Each answer says which public file it comes from, so it can be checked; please cite https://regimetoken.xyz when you use one. The numbers describe the past and are not a forecast. Not financial advice.", "tools": [ { "description": "Whether spreading the entry would have helped, measured. One amount into a coin over a window (90, 365 or 730 days): all of it on day one, or equal instalments weekly or monthly. Both start the same day, move the same money and are valued on the same day, started on every day of the history. You get how often spreading ended ahead, the middle result of each, and the worst start day of each — which is what spreading actually buys and the half nobody shows. Spot tape, no fees, dead coins included.\n\nUse for dollar-cost averaging versus lump sum on one coin. For claims about particular days or months use best_days_check or calendar_check; for the fall after a single buy, drawdown_check.", "inputSchema": { "description": "The coin and the window you want compared.", "properties": { "coin": { "description": "Ticker or full pair. An unknown one comes back with the list we hold and the ones left out.", "type": "string" }, "days": { "description": "The window, in days: 90, 365 or 730.", "enum": [ 90, 365, 730 ], "type": "number" }, "instalments": { "default": "weekly", "description": "How often a slice goes in: weekly or monthly. Defaults to weekly.", "enum": [ "weekly", "monthly" ], "type": "string" } }, "required": [ "coin", "days", "instalments" ], "type": "object" }, "name": "averaging_in_check", "outputSchema": { "description": "What each way of entering did, over every possible start day.", "properties": { "error": { "description": "no_data when ok is false.", "type": "string" }, "instalments": { "description": "How many slices fit in the window.", "type": "number" }, "median_edge_points": { "description": "Percentage points spreading made over lump sum in the middle case. Negative means lump sum won.", "type": "number" }, "median_lump_sum_pct": { "description": "Middle start, all in on day one.", "type": "number" }, "median_spread_pct": { "description": "Middle start, spread out.", "type": "number" }, "model": { "description": "The assumptions, stated: cash not yet in earns nothing (against spreading), no fees (in favour of spreading).", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "p05_lump_sum_pct": { "description": "Fifth percentile of starts, lump sum: one worst day is an anecdote.", "type": "number" }, "p05_spread_pct": { "description": "The same for spreading.", "type": "number" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "share_in_profit_lump_sum_pct": { "description": "Share of starts that ended up, lump sum.", "type": "number" }, "share_in_profit_spread_pct": { "description": "The same for spreading.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "spreading_won": { "description": "Start days on which spreading it out ended ahead. A count, not a rate: «100%» is only said when it was all of them.", "type": "number" }, "spreading_won_pct": { "description": "The same as a share of starts.", "type": "number" }, "starts": { "description": "Start days tested. Fewer than 120 and we refuse to give a percentage.", "type": "number" }, "worst_lump_sum_pct": { "description": "The single worst start day, all in on day one.", "type": "number" }, "worst_spread_pct": { "description": "The same for spreading. This pair is the whole argument for averaging in, and it is the one that never appears next to the advice.", "type": "number" } }, "type": "object" } }, { "description": "The 'miss the ten best days and you get nothing' claim, measured on both sides. The same window of a coin lived four ways: all of it, without its N best days, without its N worst days, and without either, from every start day of the history. You also get how many of those best days landed within a week of a worst one, which is what decides whether the claim means anything. Backtest on spot daily candles, dead coins included.\n\nUse when someone argues for staying invested because missing the best days ruins returns, or for timing the market to dodge the worst ones. Which weekday or month does best is calendar_check.", "inputSchema": { "description": "The coin, the window, and how many days you would miss.", "properties": { "best_days": { "default": 10, "description": "How many days are missed: 1, 5, 10 or 20. Defaults to 10, the number in the claim.", "enum": [ 1, 5, 10, 20 ], "type": "number" }, "coin": { "description": "Ticker or full pair. An unknown one comes back with the list we hold and the ones left out.", "type": "string" }, "days": { "description": "Window in days: 90, 365 or 730.", "enum": [ 90, 365, 730 ], "type": "number" } }, "required": [ "coin", "days", "best_days" ], "type": "object" }, "name": "best_days_check", "outputSchema": { "description": "Both halves of the claim, over the same windows.", "properties": { "best_days_next_to_a_worst_day_pct": { "description": "Share of the best days that fell within a few days of one of the worst. High means you cannot dodge one without dodging the other.", "type": "number" }, "biggest_days": { "description": "The biggest up days and down days of the whole history, with their dates, so the clustering can be checked rather than believed.", "type": "object" }, "cost_of_missing_best_pp": { "description": "Percentage points the best days were worth.", "type": "number" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "gift_of_missing_worst_pp": { "description": "Percentage points dodging the worst days would have paid.", "type": "number" }, "history": { "description": "From, to, days held and which tape.", "type": "object" }, "median_pct": { "description": "The middle window, lived whole. The alternative, always.", "type": "number" }, "median_without_best_pct": { "description": "The same window without its best days. This is the half of the claim you get shown.", "type": "number" }, "median_without_either_pct": { "description": "Without both groups: usually back near the first number, after dodging the days that supposedly decided everything.", "type": "number" }, "median_without_worst_pct": { "description": "The same window without its WORST days. This is the half nobody shows, and it is just as big.", "type": "number" }, "model": { "description": "What missing a day means here, and what is not charged.", "type": "string" }, "next_to_means_within_days": { "description": "What «next to» means, in days.", "type": "number" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "page": { "description": "The page with these exact numbers already in.", "type": "string" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "share_in_profit_pct": { "description": "Windows that ended in profit, lived whole.", "type": "number" }, "share_in_profit_without_best_pct": { "description": "The same, without the best days.", "type": "number" }, "share_in_profit_without_worst_pct": { "description": "The same, without the worst days.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "windows": { "description": "Start days tested. Fewer than 120 and we refuse to give a percentage.", "type": "number" }, "winners_turned_losers_pct": { "description": "Of the windows that ended in profit, the share that end in loss once their best days are removed.", "type": "number" } }, "type": "object" } }, { "description": "'Uptober'. 'Mondays dip'. 'Sell in May'. Any calendar claim on 34 coins, measured against chance. With seven days one has to come first, so the answer is a permutation test: the SAME returns dealt out at random hundreds of times, and how often chance alone produces a bucket that good. Plus how many times the bucket really happened - October is 279 days of bitcoin but nine Octobers - and the round-trip cost. Nine years of daily candles.\n\nTests whether one day of the week, month of the year or hour of the day really beats the rest for a coin. Use for seasonality claims (Uptober, Monday dips, Sell in May). For the claim about missing the market's best days use best_days_check; for when to spread an entry, averaging_in_check.", "inputSchema": { "description": "The coin and which calendar: weekday, month or hour.", "properties": { "calendar": { "description": "day_of_week, month_of_year or hour_of_day. The hourly one exists for the 16 coins we hold hourly candles for.", "enum": [ "day_of_week", "month_of_year", "hour_of_day" ], "type": "string" }, "coin": { "description": "Ticker or full pair. An unknown one comes back with the list we hold and the ones left out.", "type": "string" } }, "required": [ "coin", "calendar" ], "type": "object" }, "name": "calendar_check", "outputSchema": { "description": "The bucket, and what chance produces next to it.", "properties": { "beats_chance_at_5pct": { "description": "Whether that share is under 0.05. Across all 34 coins, about 5% of these come back true by chance alone, so one true answer on its own is not a finding.", "type": "boolean" }, "best_bucket": { "description": "The best bucket by average move, named.", "type": "string" }, "best_bucket_happened_times": { "description": "How many times that bucket has actually occurred. For months this is years, not days: nine Octobers is nine observations however many candles they hold, and it is the number these claims never show.", "type": "number" }, "best_mean_pct": { "description": "Its average move. On its own, this is the advertisement.", "type": "number" }, "buckets": { "description": "Every bucket: its name, observations, times occurred, mean, median and share of up days.", "type": "array" }, "chance_best_mean_pct": { "description": "What the BEST bucket of a shuffled world averages. Anything below this is less impressive than nothing.", "type": "number" }, "chance_best_p95_pct": { "description": "What chance reaches in one shuffle out of twenty.", "type": "number" }, "chance_matches_it_share": { "description": "The p-value: share of shuffles whose best bucket matched or beat the real one. High means no pattern.", "type": "number" }, "edge_covers_cost": { "description": "Whether the average move of the best bucket is bigger than that cost. Usually it is not.", "type": "boolean" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "history": { "description": "From, to, days held and which tape.", "type": "object" }, "model": { "description": "The test, stated, including why a monthly p-value flatters itself.", "type": "string" }, "observations": { "description": "Moves measured across all buckets.", "type": "number" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "page": { "description": "The page with these exact numbers already in.", "type": "string" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "round_trip_cost_pct": { "description": "What entering and exiting once costs, so the edge can be compared with it.", "type": "number" }, "shuffles": { "description": "How many shuffled worlds were tested.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "worst_bucket": { "description": "The other end.", "type": "string" }, "worst_mean_pct": { "description": "Its average move.", "type": "number" } }, "type": "object" } }, { "description": "Two or three coins side by side, every check at once: for each, how often a buy fell 30% or more before the window was out and where the middle one ended, how often a leveraged month ended with nothing, whether spreading the entry won, how often a stop-loss sold a buy that ended in profit, and how much it moves with bitcoin. Nothing is ranked and no coin is called better. Spot and perpetual tapes, fees charged.\n\nUse when two or three coins are being compared or chosen between. For one coin or one question the specific check gives more detail: drawdown_check, leverage_survival, averaging_in_check, stop_loss_check, diversification_check.", "inputSchema": { "description": "The coins, and optionally the window and the leverage.", "properties": { "coins": { "description": "Two or three tickers, comma-separated: BTC,ETH,SOL. Kept in the order sent.", "type": "string" }, "days": { "default": 365, "description": "90, 365 (default) or 730.", "enum": [ 90, 365, 730 ], "type": "number" }, "leverage": { "default": 25, "description": "For the leverage row. Default 25.", "type": "number" } }, "required": [ "coins", "days", "leverage" ], "type": "object" }, "name": "coin_comparison", "outputSchema": { "description": "One row per coin, in the order sent.", "properties": { "error": { "description": "no_data when ok is false.", "type": "string" }, "model": { "description": "The method, stated.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "rows": { "description": "Per coin: the drawdown, leverage, averaging-in and stop-loss answers, and its correlation with bitcoin (null for bitcoin itself).", "type": "array" }, "source": { "description": "The public files these numbers come from.", "type": "string" } }, "type": "object" } }, { "description": "Whether copying the top traders works, measured. Accounts in the top 10% or 1% of Hyperliquid one month, by return or by dollar profit: how many were in the top again the next month, next to chance, how many fell to the bottom instead, and how many made money the month you would have copied them for, next to every active account. 4,000 accounts sampled at random, not today's leaders; about 30 month pairs.\n\nUse when someone proposes copying top traders, a leaderboard or signal leaders. Takes no account address. To place one specific return on the leaderboard use leaderboard_rank_check; to ask whether luck explains a record, overfitting_odds.", "inputSchema": { "description": "Which ranking and which top group. Both optional.", "properties": { "ranked_by": { "default": "return", "description": "return (default) or profit.", "enum": [ "return", "profit" ], "type": "string" }, "top_pct": { "default": 10, "description": "10 (default) or 1. 0.1 is read as 10.", "enum": [ 10, 1 ], "type": "number" } }, "required": [ "ranked_by", "top_pct" ], "type": "object" }, "name": "copy_trading_check", "outputSchema": { "description": "What one month's top did the next month, next to chance.", "properties": { "chance_pct": { "description": "What picking accounts at random gives. The alternative, always.", "type": "number" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "fell_to_bottom_pct": { "description": "Share that fell to the bottom group instead: the size control.", "type": "number" }, "in_profit_next_month_all_accounts_pct": { "description": "The same for every active account.", "type": "number" }, "in_profit_next_month_pct": { "description": "Share that made money the next month.", "type": "number" }, "model": { "description": "The method, stated.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "repeated": { "description": "Of those, times it was in the top again next month.", "type": "number" }, "repeated_pct": { "description": "The same as a share.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "stopped_trading": { "description": "Counted as not repeating.", "type": "number" }, "times_in_top": { "description": "Times an account finished a month in the top group.", "type": "number" } }, "type": "object" } }, { "description": "Diversification check: how many independent bets a basket of coins really is. Give the coins (and optionally the window: 90, 365 or 730 days): you get the average correlation between the pairs on real daily returns, the number of independent bets it works out to, each coin's correlation with bitcoin — and what the equal-weight basket did on the days bitcoin closed 3% or more down: how often it fell too, by how much, and its worst such day. Dead coins included.\n\nUse when a basket of two or more coins is called diversified or hedged. For one coin use drawdown_check; for two or three coins side by side on every check, coin_comparison.", "inputSchema": { "description": "The basket you want measured.", "properties": { "coins": { "description": "Tickers or full pairs, e.g. [\"BTC\", \"ETH\", \"SOL\"]. A comma-separated string also works. One we do not hold comes back with the list.", "items": { "type": "string" }, "type": "array" }, "days": { "default": 365, "description": "Window ending on the last day of the data: 90, 365 or 730. Defaults to 365.", "enum": [ 90, 365, 730 ], "type": "number" } }, "required": [ "coins", "days" ], "type": "object" }, "name": "diversification_check", "outputSchema": { "description": "What that basket adds up to, and what it did on the bad days.", "properties": { "all_coins_we_hold": { "description": "What every coin we hold, at equal weights, adds up to — the ceiling, for comparison.", "type": "object" }, "average_pair_correlation": { "description": "Pearson correlation of daily log returns, averaged over every pair in the basket.", "type": "number" }, "btc_bad_days": { "description": "The days bitcoin closed 3% or more down: how many, on what share of them the basket fell too, its median and worst move. Diversification that vanishes on those days was never there.", "type": "object" }, "correlation_with_btc": { "description": "Each coin's correlation with bitcoin in the window.", "type": "object" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "independent_bets": { "description": "N / (1 + (N-1)*avg_corr). Five coins that move as one are one bet; five that ignore each other are five.", "type": "number" }, "model": { "description": "The assumptions, stated.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "source": { "description": "The public file these numbers come from.", "type": "string" } }, "type": "object" } }, { "description": "Drawdown check: what it cost to collect the return you were shown. The coin is bought at the close of every day of its history and held for the period you name: you get the drawdown from the entry before the period was out, the share of starts that fell 30% and 50%, the days spent under water, how it ended — and, among the starts that ended in profit, the drawdown they sat through first. Spot tape, no fees, coins that died included.\n\nUse when a return is quoted for holding a coin (\"BTC did +150% in a year\") and you want the fall endured on the way. With leverage use leverage_survival; to test a stop that cuts the fall, stop_loss_check.", "inputSchema": { "description": "The hold you want opened on every day there has been.", "properties": { "coin": { "description": "Ticker or full pair. An unknown one comes back with the list we hold and the ones left out.", "type": "string" }, "days": { "description": "How long it is held: 30, 90, 365 or 730.", "enum": [ 30, 90, 365, 730 ], "type": "number" } }, "required": [ "coin", "days" ], "type": "object" }, "name": "drawdown_check", "outputSchema": { "description": "What holding that coin for that long cost, across every possible starting day.", "properties": { "asset_max_drawdown": { "description": "The coin's own biggest top-to-bottom fall, with dates and days to recover, for comparison.", "type": "object" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "median_days_under_water": { "description": "Days of the hold spent below the entry price, middle start.", "type": "number" }, "median_return_pct": { "description": "How the middle start ended.", "type": "number" }, "median_worst_fall_among_winners_pct": { "description": "Among the starts that ended in profit, the median fall they sat through first. The price of the number you were shown. A return without this is advertising.", "type": "number" }, "median_worst_fall_pct": { "description": "The middle start's worst fall from its own entry price within the hold.", "type": "number" }, "model": { "description": "The assumptions, stated.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "share_fell_30_pct": { "description": "Share of starts that fell 30% or more from entry first.", "type": "number" }, "share_fell_50_pct": { "description": "Same, 50% or more.", "type": "number" }, "share_in_profit_pct": { "description": "Share of starts that ended up.", "type": "number" }, "share_never_recovered_pct": { "description": "Starts that never closed back at their entry price within the hold.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "starts": { "description": "Start days tested. Fewer than 120 and we refuse to give a percentage.", "type": "number" } }, "type": "object" } }, { "description": "How much company a return has. Send a return (+340%) and a window (day, week, month or all time) and get how many accounts on Hyperliquid's whole public leaderboard did the same or better, out of how many traded, its percentile, and the median account next to it. Every row of the exchange's own table, refreshed daily; the denominator is the accounts that traded, not the ones that sat idle.\n\nUse when a trader or an ad quotes a return (\"+340% this month\") and you want to know how rare it is. Hyperliquid accounts only. Whether last month's top accounts stay on top is copy_trading_check; whether luck explains a win rate, overfitting_odds.", "inputSchema": { "description": "The return you were shown, and over what window.", "properties": { "return_pct": { "description": "In percent: 340 means +340%.", "type": "number" }, "window": { "default": "month", "description": "day, week, month (default) or allTime.", "enum": [ "day", "week", "month", "allTime" ], "type": "string" } }, "required": [ "return_pct", "window" ], "type": "object" }, "name": "leaderboard_rank_check", "outputSchema": { "description": "Where that return lands among every account that traded.", "properties": { "accounts_that_traded": { "description": "The denominator.", "type": "number" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "median_return_pct": { "description": "The middle account, same window.", "type": "number" }, "model": { "description": "The method, stated.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "one_in": { "description": "One account in how many.", "type": "number" }, "percentile": { "description": "Share of accounts below it.", "type": "number" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "same_or_better": { "description": "Accounts at that return or above.", "type": "number" }, "share_in_profit_pct": { "description": "Accounts in profit, same window.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" } }, "type": "object" } }, { "description": "What a leveraged trade actually did, opened on every single day of the history instead of the one day that worked. Give coin, side, leverage and holding period: you get the share of those days that ended liquidated, the median outcome, the best day, and what the same coin did with no leverage at all. Real perpetual tape, with the funding that was actually paid charged daily and eating into margin. Coins that blew up included.\n\nUse when the question involves leverage, perpetuals or liquidation. For the fall an unleveraged holder sits through use drawdown_check; for two or three coins at once, coin_comparison.", "inputSchema": { "description": "The leveraged trade you want opened on every day there has been.", "properties": { "coin": { "description": "Ticker or full pair. An unknown one comes back with the list we hold and the ones we do not.", "type": "string" }, "days": { "description": "How long it is held: 1, 7, 30 or 90.", "enum": [ 1, 7, 30, 90 ], "type": "number" }, "leverage": { "description": "2, 3, 5, 10, 20, 25, 50 or 100.", "enum": [ 2, 3, 5, 10, 20, 25, 50, 100 ], "type": "number" }, "side": { "default": "long", "description": "long or short. Defaults to long.", "enum": [ "long", "short" ], "type": "string" } }, "required": [ "coin", "leverage", "days" ], "type": "object" }, "name": "leverage_survival", "outputSchema": { "description": "How that trade ended, across every possible starting day.", "properties": { "attempts": { "description": "Starting days tested. A position still open when the history ends is not counted.", "type": "number" }, "best_pct": { "description": "The best day. It is the one you were shown, and it is not hidden here.", "type": "number" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "liquidated_pct": { "description": "Share of them that ended with nothing left.", "type": "number" }, "median_days_to_liquidation": { "description": "How fast, when it happened.", "type": "number" }, "median_return_pct": { "description": "The middle outcome, on the margin.", "type": "number" }, "median_return_unlevered_pct": { "description": "What the same coin did with no leverage over the same days. A result without this is advertising.", "type": "number" }, "model": { "description": "The assumptions, stated: liquidation at exactly 1/leverage with no maintenance margin, funding charged daily, the wick decides not the close.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "source": { "description": "The public file these numbers come from.", "type": "string" } }, "type": "object" } }, { "description": "Overfitting check: how many attempts plain chance needs to produce the track record you were shown. Give the wins, the losses and how many versions were tried: you get the exact binomial odds of one try reaching it, the odds once somebody shows you the best of N, and how many tries would make it an even bet. Arithmetic only — no market data, no model, no opinion. A 62% win rate over 100 trades is one thing on the first try, nothing on the fiftieth.\n\nUse when you are shown a win rate, a backtest or a signal channel's record and need to know whether luck explains it. Needs no coin. For what a named rule did on real prices use strategy_grid_lookup; to place a return among real accounts, leaderboard_rank_check.", "inputSchema": { "description": "The track record you were shown, and how much searching went into finding it.", "properties": { "baseline": { "default": 0.5, "description": "Probability a single trade wins by chance. Defaults to 0.5.", "type": "number" }, "losses": { "description": "Losing trades. Give this or trades.", "type": "number" }, "trades": { "description": "Total trades.", "type": "number" }, "tries": { "default": 1, "description": "How many versions were tried before this one was shown to you. Defaults to 1, which is almost never true.", "type": "number" }, "wins": { "description": "Winning trades.", "type": "number" } }, "required": [ "wins", "trades" ], "type": "object" }, "name": "overfitting_odds", "outputSchema": { "description": "The exact odds, for one try and for the best of N.", "properties": { "error": { "description": "no_data when ok is false.", "type": "string" }, "odds_best_of_tries": { "description": "Same result, once you take the best of the attempts made.", "type": "number" }, "odds_one_try": { "description": "P(at least this many wins) for a single attempt. Exact binomial, not simulated.", "type": "number" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reading": { "description": "The same three numbers in one sentence.", "type": "string" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "tries_for_even_odds": { "description": "Attempts needed for chance alone to reach it half the time.", "type": "number" }, "win_rate_pct": { "description": "The win rate.", "type": "number" } }, "type": "object" } }, { "description": "Whether a stop-loss would have helped, measured. The same buy of a coin, held 30, 90, 365 or 730 days, with a stop 5, 10, 15, 20 or 30% below the entry and without one, started on every day of the history. The stop fires on the day's low, not its close, and fees are charged to both. You get how often it fired, how often it sold a buy that would have ended in profit, and the worst case of each. Spot tape, dead coins included.\n\nUse when asked whether a stop-loss protects a spot buy-and-hold. For leveraged positions, where liquidation is the stop, use leverage_survival; for a rule with a stop and a take-profit, strategy_grid_lookup.", "inputSchema": { "description": "The coin, how long you meant to hold, and the stop.", "properties": { "coin": { "description": "Ticker or full pair. An unknown one comes back with the list we hold and the ones left out.", "type": "string" }, "days": { "description": "Holding period in days: 30, 90, 365 or 730.", "enum": [ 30, 90, 365, 730 ], "type": "number" }, "stop": { "description": "How far below the entry, in percent: 5, 10, 15, 20 or 30. 0.05 is read as 5.", "enum": [ 5, 10, 15, 20, 30 ], "type": "number" } }, "required": [ "coin", "days", "stop" ], "type": "object" }, "name": "stop_loss_check", "outputSchema": { "description": "What the stop did to every possible buy, next to holding.", "properties": { "buys": { "description": "Start days tested. Fewer than 120 and we refuse to give a percentage.", "type": "number" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "fired_but_would_have_ended_in_profit": { "description": "Buys the stop sold that, held to the end, would have ended in profit after fees. The half nobody shows.", "type": "number" }, "fired_but_would_have_ended_in_profit_pct": { "description": "The same as a share of ALL buys.", "type": "number" }, "mean_with_stop_pct": { "description": "Average buy, with the stop.", "type": "number" }, "mean_without_stop_pct": { "description": "Average buy, holding. Skewed by a few huge winners.", "type": "number" }, "median_days_to_fire": { "description": "Among the buys it fired on. Null when it never fired.", "type": "number" }, "median_with_stop_pct": { "description": "Middle buy, with the stop.", "type": "number" }, "median_without_stop_pct": { "description": "Middle buy, just holding. The alternative, always.", "type": "number" }, "model": { "description": "The assumptions, stated: the low triggers, fills at the stop or the gap open, out until the end, same costs both ways.", "type": "string" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "p05_with_stop_pct": { "description": "Fifth percentile, with the stop: what the stop actually buys.", "type": "number" }, "p05_without_stop_pct": { "description": "The same, holding.", "type": "number" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "share_in_profit_with_stop_pct": { "description": "Share of buys that ended up, stop.", "type": "number" }, "share_in_profit_without_stop_pct": { "description": "The same, holding.", "type": "number" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "stop_beat_holding": { "description": "Buys on which the stop ended strictly ahead of holding.", "type": "number" }, "stop_beat_holding_pct": { "description": "The same as a share of buys.", "type": "number" }, "stop_fired": { "description": "Buys on which the stop fired. A count.", "type": "number" }, "stop_fired_pct": { "description": "The same as a share of buys.", "type": "number" }, "worst_with_stop_pct": { "description": "The single worst buy, with the stop. Worse than the stop itself only when a day gapped through.", "type": "number" }, "worst_without_stop_pct": { "description": "The same, holding.", "type": "number" } }, "type": "object" } }, { "description": "Backtest lookup: what one exact version of a strategy actually did. Buy-the-dip and the moving-average cross, every combination of their knobs, computed over nine years of real prices with the exchange's fees charged both ways — sixteen coins, three of which died. Give the coin and the numbers and you get the return, the trades, the worst drawdown, and what buying and holding did over the same window. Read from a file you can download.\n\nUse when someone quotes a specific dip-buying or moving-average rule (\"buy 10% dips, take 5%\") and you want its real backtest. For leverage use leverage_survival; for a stop on a plain buy-and-hold, stop_loss_check; to judge a win rate you were shown, overfitting_odds.", "inputSchema": { "description": "Which exact version of the strategy you want looked up.", "properties": { "candles": { "description": "cross only: 1d or 4h.", "enum": [ "1d", "4h" ], "type": "string" }, "coin": { "description": "BTC, ETH, SOL, DOGE, PEPE, SRM… ticker or full pair. Ask with an unknown one and the answer lists the sixteen we hold.", "type": "string" }, "drop": { "description": "dip only: how far below its recent high to buy, in %.", "type": "number" }, "family": { "default": "dip", "description": "dip (buy when it falls) or cross (moving average crossover). Defaults to dip.", "enum": [ "dip", "cross" ], "type": "string" }, "fast": { "description": "cross only: fast average.", "type": "number" }, "hours": { "description": "dip only: give up after this many hours.", "type": "number" }, "slow": { "description": "cross only: slow average.", "type": "number" }, "stop": { "description": "dip only: stop loss, in %.", "type": "number" }, "target": { "description": "dip only: take profit, in %.", "type": "number" } }, "required": [ "coin" ], "type": "object" }, "name": "strategy_grid_lookup", "outputSchema": { "description": "What that exact rule did in the judging half, with what doing nothing did next to it.", "properties": { "buy_and_hold_pct": { "description": "What buying the coin and leaving it alone returned over the same window. A result without this is advertising.", "type": "number" }, "error": { "description": "no_data when ok is false.", "type": "string" }, "max_drawdown_pct": { "description": "Worst peak-to-trough fall.", "type": "number" }, "ok": { "description": "false when we do not hold that data. Never a zero standing in for an answer.", "type": "boolean" }, "reason": { "description": "Why, in one sentence, and what we do have instead.", "type": "string" }, "return_pct": { "description": "What it returned, after fees.", "type": "number" }, "rule": { "description": "The rule in plain English.", "type": "string" }, "source": { "description": "The public file these numbers come from.", "type": "string" }, "trades": { "description": "How many trades it took.", "type": "number" }, "versions_beating_buy_and_hold": { "description": "How many of them beat doing nothing. Often zero.", "type": "number" }, "versions_in_family": { "description": "How many versions of this idea exist.", "type": "number" }, "win_rate_pct": { "description": "Share of winners.", "type": "number" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f4b72a04c0a404e1544225dbedcbfbd815bd49ff16ff1cbc5da752271460bd45 | sha256sum