AION Edge Engine
Whether a statistical edge exists right now, and whether it survives the cost of trading it. Available as a hosted API for index options. Commodities are coming soon.
The problem
Intraday signals are not scarce. Any charting package will generate more of them in an hour than anyone could act on, and most are noise dressed up as a pattern.
The harder question is the one that usually goes unanswered: a pattern has fired, but does an edge actually exist here, and is it still an edge once spread, slippage and costs are taken out? Those are different questions, and conflating them is how a strategy that looks profitable on a chart loses money in an account.
How it solves it
Edge Engine assesses each contract continuously and answers the two questions separately: whether an edge is present, and whether it is tradable after costs.
It is the single authority for tradability in the AION stack. Nothing further down the chain may override it, which prevents the common failure where a more optimistic component quietly overrules the more conservative one and the system ends up trading things it had already judged untradable.
Its output is a contract, not a suggestion: consistent fields, on every contract, whether or not the answer is interesting. An honest "no edge here" is the most frequent response, and that is the system working rather than failing.
Where it sits in your system
Edge Engine is the last check before your own order logic. Your system decides what it wants to trade; Edge Engine answers, for that contract and that moment, whether a tradable edge exists. It can stop a trade. It never starts one, and it never sees your orders, positions or account.
Fail closed: if the API is unreachable, returns no fresh reading, or the as-of time is older than your own tolerance, treat the answer as "no" and stand aside.
The API
Base URL https://aionanalytics.in/api/v1/edge. Send your key in the X-API-Key header. Keys are issued after checkout and are scoped to Edge Engine and to the indices on your plan.
| Endpoint | What it returns |
|---|---|
| GET /underlyings | Which indices are live and which are coming soon. No key needed. |
| GET /snapshot?underlying=nifty | Current readings for every live, unexpired contract of that index. Add &symbol= with an exchange tradingsymbol for one contract. |
| POST /predict | The same readings, for clients that send JSON: {"underlying": "banknifty", "symbol": null}. |
curl -H "X-API-Key: $AION_EDGE_KEY" \ "https://aionanalytics.in/api/v1/edge/snapshot?underlying=nifty"
The full response, with real readings, is shown in What you receive below.
| Field | Meaning |
|---|---|
| tradable | The engine's final decision for this contract now. This is the field to gate on. |
| edge_score | Signed score. Above zero means comparable past conditions were favourable after trading costs. Compare within one index, not across indices. |
| lower_bound | A conservative estimate of the same score. A positive score with a negative lower bound is not an edge. |
| as_of | Time of the last exchange tick behind the reading (UTC). |
- Freshness. A contract appears only if it is unexpired and its last exchange tick is under 15 minutes old. Outside market hours the response is
"status": "no_fresh_readings"with an empty list. Stale readings are never served. - Thin history.
tradablealso needs enough history behind it, so it can stay false even when the score looks positive. SENSEX has a shorter live history than NIFTY and says "no edge" more often. - Polling. Readings look five minutes ahead and the server refreshes them continuously. Once a minute per index is enough; faster polling returns the same answer and uses your daily cap.
- Errors. 401 missing key, 403 key not active or index not on your plan, 404 unknown index or contract, 429 daily cap reached.
import requests
def edge_allows(symbol, key, index="nifty"):
r = requests.get("https://aionanalytics.in/api/v1/edge/snapshot",
params={"underlying": index, "symbol": symbol},
headers={"X-API-Key": key}, timeout=5)
if r.status_code != 200:
return False # fail closed
rows = r.json().get("contracts", [])
return bool(rows) and rows[0]["tradable"]
What you receive
This is the JSON your system receives from GET /snapshot?underlying=nifty. The readings are real, from the NIFTY session on 29 September 2026 at 11:39 IST; the contract list is shortened to three of the 98 returned.
{
"model": "edge-engine",
"underlying": "nifty",
"display_name": "NIFTY 50",
"exchange": "NSE F&O",
"session": "09:15-15:30 IST",
"note": null,
"generated_at": "2026-09-29T06:10:02.114000+00:00",
"count": 98,
"tradable_count": 0,
"status": "ok",
"message": null,
"contracts": [
{
"symbol": "NFONIFTY26SEP22200CE",
"instrument": "CE",
"strike": 22200.0,
"expiry": "2026-09-29",
"tradable": false,
"edge_score": 0.3759,
"lower_bound": -4.254,
"as_of": "2026-09-29T06:09:20.787000+00:00"
},
{
"symbol": "NFONIFTY26O0622300PE",
"instrument": "PE",
"strike": 22300.0,
"expiry": "2026-10-06",
"tradable": false,
"edge_score": 1.1425,
"lower_bound": -0.227,
"as_of": "2026-09-29T06:09:18.402000+00:00"
},
{
"symbol": "NFONIFTY26SEPFUT",
"instrument": "FUT",
"strike": null,
"expiry": "2026-09-29",
"tradable": false,
"edge_score": 3.8682,
"lower_bound": -3.012,
"as_of": "2026-09-29T06:09:21.055000+00:00"
}
],
"usage": {"daily_count": 12, "daily_cap": 166},
"disclaimer": "Informational only. Not investment advice and not a recommendation to buy or sell. Edge Engine does not place orders."
}
Reading this response
- All three contracts show a positive
edge_score, and all three aretradable: false. Eachlower_boundis below zero: the conservative estimate does not clear, so there is no edge to act on. That day, no NIFTY contract was tradable, which is the most common answer. as_ofis the exchange tick behind each reading, in UTC (06:09 UTC is 11:39 IST). Readings older than 15 minutes are never served.usageshows how many of your daily requests you have used.
Outside market hours
{
"model": "edge-engine",
"underlying": "nifty",
"status": "no_fresh_readings",
"message": "No contract has an exchange tick in the last 15 minutes. The market may be closed or the feed idle. Stale readings are never served.",
"count": 0,
"tradable_count": 0,
"contracts": [],
...
}
Errors
| Status | Response message |
|---|---|
| 401 | X-API-Key header is required. |
| 403 | API key is not active for this model. |
| 403 | Edge Engine plan does not include underlying 'sensex'. Allowed underlyings: nifty. |
| 403 | Edge Engine for 'gold' is coming soon and not yet available. |
| 404 | No fresh reading for that contract. It may be expired, not in the live feed, or its last exchange tick is older than 15 minutes. |
| 429 | Edge Engine daily request cap exceeded. |
Errors arrive as {"error": {"code": "HTTP_403", "message": "...", "details": {}}}. Treat any error as "no answer" and stand aside.
Plans
| Plan | Price | Coverage and limits |
|---|---|---|
| Single index | ₹10,000 a month | NIFTY, BANKNIFTY or SENSEX. 166 requests a day. |
| All indices | ₹25,000 a month | NIFTY, BANKNIFTY and SENSEX. 500 requests a day. Opening shortly; write to [email protected] to reserve. |
| Commodities | Coming soon | Gold, silver and crude oil (MCX, 09:00 to 23:30 IST). Not yet available. |
No free trial. If you are not satisfied, ask for a full refund within 2 days of your first payment. See the refund policy.
SubscribeWhat it will not do
- It does not place orders and it is not a strategy. It is an assessment layer that other systems consume.
- It will not manufacture an edge to fill a quiet session. Most of the time, on most contracts, the answer is no.
- An edge is a statistical statement about many occurrences. It says nothing about whether any individual trade will work.
What this is not
Informational and educational only. Not investment advice, not a recommendation to buy or sell, and not a SEBI-registered Research Analyst or Investment Adviser product. AION is an infrastructure provider: we publish information and leave the decision entirely with you.
We publish what a system does and what it produces. We do not publish how it is built. Research partners and institutional collaborators can request a technical briefing under confidentiality: [email protected]