Endpoints · Methodology
Methodology
Returns the hard rules, soft signals, bands and ranking. Public: no key needed.
GET
/api/v1/methodologyPublic, no key
Parameters
No parameters.
Request
curl https://yieldsniper.finance/api/v1/methodologyResponse200
{
"object": "methodology",
"version": "3.0",
"rules": [
{
"code": "tvl_floor",
"description": "Total value locked below $50M.",
"threshold": 50000000
},
{
"code": "apy_floor",
"description": "Total APY below 1%.",
"threshold": 1
},
{
"code": "apy_ceiling",
"description": "Total APY above 30%: treated as an outlier, not an opportunity.",
"threshold": 30
},
{
"code": "out_of_scope",
"description": "Not a stablecoin-only or single-asset Bitcoin, Ether or XRP instrument (pairs and other assets are out of scope).",
"threshold": "stablecoin-only or single-asset BTC / ETH / XRP"
},
{
"code": "impermanent_loss",
"description": "The position is exposed to impermanent loss."
},
{
"code": "recent_incident",
"description": "A security incident on the protocol in the last 90 days, or one of at least $10M in the last 365 days.",
"threshold": "90 days; $10M within 365 days"
},
{
"code": "exit_blocked",
"description": "A simulated withdrawal is blocked, drained or unavailable."
},
{
"code": "unaudited_small",
"description": "No audit on record and total value locked below $100M.",
"threshold": 100000000
},
{
"code": "unverified_yield",
"description": "Realized yield (measured by simulated deposits and withdrawals, high or medium confidence) below 50% of the advertised native yield.",
"threshold": 0.5
},
{
"code": "score_floor",
"description": "Safety score below 50.",
"threshold": 50
}
],
"signals": [
{
"code": "no_audit_on_record",
"description": "No audit on record for the protocol.",
"impact": -20
},
{
"code": "unknown_protocol",
"description": "The protocol is not in our protocol registry.",
"impact": -10
},
{
"code": "prior_incident",
"description": "A past security incident on the protocol.",
"impact": "-25 within 365 days, -15 when older"
},
{
"code": "young_protocol",
"description": "The protocol is younger than 365 days.",
"impact": -15
},
{
"code": "young_instrument",
"description": "Less than 30 days of yield history.",
"impact": -10
},
{
"code": "exit_queue",
"description": "Withdrawals go through a queue.",
"impact": -10
},
{
"code": "partial_exit",
"description": "Only part of a position can be withdrawn at once.",
"impact": -15
},
{
"code": "exit_unverified",
"description": "The withdrawal path could not be verified by simulation.",
"impact": -5
},
{
"code": "realized_below_advertised",
"description": "Realized yield below 80% of the advertised native yield.",
"impact": -10
},
{
"code": "incentive_dependent",
"description": "More than half of the yield is paid in incentive tokens.",
"impact": -10
},
{
"code": "volatile_yield",
"description": "Unsteady yield over 30 days (consistency below 0.7).",
"impact": "-20 below 0.5, -10 below 0.7"
},
{
"code": "concentrated_depositors",
"description": "The ten largest depositors hold more than 80% of deposits.",
"impact": "-10 above 90%, -5 above 80%"
},
{
"code": "small_tvl",
"description": "Total value locked below $100M.",
"impact": -5
},
{
"code": "elevated_apy",
"description": "Total APY above 15%.",
"impact": -10
}
],
"bands": [
{
"band": "low",
"min_score": 80,
"max_score": 100
},
{
"band": "moderate",
"min_score": 60,
"max_score": 79
},
{
"band": "high",
"min_score": 0,
"max_score": 59
}
],
"ranking": "Every instrument starts at 100 points and each signal deducts its impact. Instruments that fail a rule are excluded. Within each asset class, the instruments that pass are ranked by risk band (low, then moderate, then high) and then by total APY, highest first; the top 5 per class form the daily report. The front-runners' history is checked before publishing: an instrument with less than 30 days of history loses 10 points (young_instrument) and drops out if it falls below 50.",
"schedule": {
"cadence": "daily",
"local_time": "07:30",
"time_zone": "America/New_York"
}
}Returns
The methodology.
Object: Methodology