iGiGrowwUS · NYSE · NASDAQ

iGroww methodology

How we compute analytics, how we backtest strategies, and how published performance is verified. Every screen that shows a computed number links here, and every statement below describes what the code does — not what it is meant to do one day.

Public documentOne deployment · one countryFor information only — not investment advice

Published performance is computed, never asserted

No performance figure published on this platform originates outside the platform's own order, fill and position records. Performance shown for a strategy from the library is computed from those records under a versioned methodology, so a figure carrying version 3 can be explained by the version-3 text for as long as the figure exists. We do not accept, display, or republish self-reported performance from anyone.

Core principles

Four invariants the rest of this document is downstream of. They are enforced structurally — in the schema, the package boundaries and the deployment — not by convention.

I1 · Single-country deployment

This deployment serves exactly one country — its exchanges, its calendar, its regulations, its currency. There is no runtime toggle that changes that, so nothing you read here has been translated from another market's rules.

I2 · No provider-to-customer passthrough

Every market-data response lands in our own database before any page can read it. No route hands you a vendor's answer directly, which is why every figure below is described as computed from our own bars and stamped with our own as-of.

I4 · Provenance on every datum

Every analytic value carries its source, its as-of, its method and its authority class. A concept several sources measure is served as several attributed observations plus their spread — there is no row shape that can hold a blend.

I5 · Published performance is computed

No published performance figure originates outside the platform's own order, fill and position records. Performance shown for a strategy from the library is computed from those records under a versioned methodology, never asserted.

Data provenance

Every analytic value on the platform carries four attributes. A concept several sources measure is served as several attributed observations plus their spread — there is no blended number anywhere, because there is no row shape that could hold one.

  1. Source

    Which ingest adapter or computation produced the value. Every Markets figure on this page has one source: our own daily bar table, written by ingestion before any page could read it.

  2. As-of

    The session the value describes, in exchange time — not the moment you loaded the page. A value that has gone quiet is shown stale with its as-of, never frozen as though it were live.

  3. Method

    How it was calculated, at the level of detail below: the window, the smoothing, the threshold, and what was left out. A board that drops instruments reports how many and why.

  4. Authority class

    What kind of claim it is — recorded by an exchange, computed by us, or derived and flagged as such. A derived value is never presented in the same class as a published one; a predicted index date is a distinct layer, not a date.

How each Markets figure is computed

Every board below is computed from the daily bars this platform stores itself, and nothing on any of them is proxied from a provider. Each entry states the method and, just as importantly, what the board leaves out: a board that silently drops instruments reports the survivors as though they were the universe, which is the quiet way to overstate a result.

Session and breadth

Market status

Open the board →

The primary exchange's session windows and today's holiday row, evaluated in that exchange's own timezone. Pre-open, Open and Closed each carry the reason and the time the state changes.

Excludes · With no session record on file the badge reads Closed with no reason rather than guessing Open.

Index levels

Open the board →

The last 30 daily closes of each instrument classified as an index. The level is the latest close, the change is that close against the one before it, and the sparkline is the raw close series — the drawing happens in your browser, the numbers are ours.

Excludes · An index with fewer than two bars, or a zero prior close, is not carded at all.

Market breadth

Open the board →

Advancers, decliners and unchanged are counts over the scanned cross-section: every instrument that is not an index, has at least two daily bars, and has a non-zero prior close. Unchanged means a close exactly equal to the prior close, not a rounding of it.

Excludes · Counts cover instruments with a daily bar for the session, not the full exchange universe. Circuit and freeze counts come from the daily precompute; when it has not run they read “—”, never 0 — nobody hit a circuit and we cannot tell are different facts.

Advancers / decliners

Open the board →

Reads the precomputed daily cross-section at its latest as-of, not a live scan of the bar table. The ratio is advancers ÷ decliners. Sector rows break ties on sector name, so two identical requests cannot disagree about the order.

Excludes · A session with no decliners returns no ratio rather than infinity. With no precompute run on record the board is empty and says so — it does not quietly recompute itself on the serving path.

Ranking boards

Percent change over the chosen window: the latest close against the close 1, 5, 20, 60 or 252 sessions earlier. The thin underlay beneath each bar is the same instrument's move over the window immediately before it. Most active ranks the latest bar's traded volume.

Excludes · Indices are excluded from every ranking — an index is not a rankable instrument. An instrument with no prior window gets no underlay drawn, rather than one claiming a flat prior window. Every board carries the number of instruments actually scanned, because a scan over twelve names and one over two thousand read identically otherwise.

A sector's change is the mean of its members' percent changes, equally weighted, alongside its advance/decline split and its leading name.

Excludes · Instruments carrying no sector are counted as uncategorised and reported separately, never folded into a sector. No capitalisation weighting is applied — an equally weighted sector mean is a different number from a cap-weighted one and is labelled as what it is.

The 200 highest-volume instruments, sized by traded volume and tinted by percent change, grouped by sector.

Excludes · Tile size is volume, not market capitalisation. A cap-size weighting is not wired to this board, and the board says so rather than implying that size means value.

Monthly movers

Open the board →

The % change over the last 20 sessions that have a bar — four trading weeks, not a calendar month, so a holiday-shortened stretch is measured as it actually traded — drawn beside the two disjoint 4-week blocks before it, all from our own end-of-day closes.

Excludes · An instrument with fewer than two sessions in the window is dropped and the drop is counted with its reason.

Momentum and outliers

Momentum · RSI extremes

Open the board →

Wilder's RSI over 14 sessions, from our own daily closes: 100 − 100 ÷ (1 + average gain ÷ average loss), both averages Wilder-smoothed after the first 14 sessions. The distribution buckets are below 30 oversold, 30–45 weak, 45–55 neutral, 55–70 strong, 70 and above overbought; the extremes board uses 30 and 70, and states them on the page so the reading is auditable.

Excludes · An instrument with fewer than 15 bars is excluded from the score, never assigned a default — a defaulted 50 would sit mid-table among measured names. A window with no losing session has no average loss and reads 100.

Spike movers

Open the board →

The z-score of the latest daily return against the same instrument's own prior trailing returns: (today's return − their mean) ÷ their standard deviation. A reading of ±2 or beyond is flagged as an outlier.

Excludes · Measured against the name's OWN history, never a peer group — which is the point: a small absolute move on a normally quiet name still surfaces. Fewer than six returns, or a standard deviation of zero, is excluded rather than scored.

Momentum ladder

Open the board →

One-week, one-month and three-month returns side by side, read from the precompute at 5, 20 and 60 sessions. “Aligned” means all three horizons are positive and the shorter ones are strong relative to the longer — momentum building rather than fading.

Excludes · A horizon an instrument lacks the history for is blank and is never counted as flat. Alignment is not claimed at all when a horizon is missing: the shape is unknown, and claiming it either way would be an assertion rather than a measurement.

Volume + price

Open the board →

Relative volume is the session's volume over the mean of the prior 20 or 63 sessions — the baseline deliberately excludes the session being judged, because a baseline containing today drags toward the value under test. At or above 1.5× (adjustable) the move is called confirmed; below it the name lands in quiet movers, which is the list the board exists for.

Excludes · An instrument with no traded volume across the look-back has no baseline and is dropped with that reason counted. Unchanged names are dropped — there is nothing for volume to confirm. Only the 20- and 63-session baselines are precomputed; another look-back is refused with the ones that exist, never silently rounded to them.

Mover patterns

Open the board →

Two measurements per session: the gap (open against prior close) and the close position, (close − low) ÷ (high − low). A gap counts from 0.5%; a close in the top or bottom third of the range names the pattern. Every pattern definition is printed on the board itself, so the label is auditable rather than a black-box verdict.

Excludes · A session with no high-low range has no position inside it and is recorded at the midpoint, not at a fabricated extreme.

Range, strength and structure

New highs / lows

Open the board →

The precompute's 252-session extreme flags. An instrument qualifies only once it HAS a full 252-session history, and the board publishes that qualified count beside the scanned one.

Excludes · A recent listing cannot print a new high on partial data. Only the 252-session window is served; a request for a different window is refused with the window that exists rather than answering a question nobody asked.

Two parallel rails fitted through confirmed pivot highs and lows in LOG price, sharing one slope, admitted only if seven gates hold. The fit length is discovered from the data rather than chosen from a menu of windows, so a three-week channel is reported as three weeks long. Confidence is six weighted terms and every one of them is served, so a score can be read rather than trusted; breakout risk is derived on the read from the health grade, the unclamped position and the current pierce depth, never stored as a fourth score.

Excludes · A name with no admitted fit is absent rather than shown with a null channel — failing to fit a channel is not the same finding as fitting one and rejecting it. Fits price has broken and stayed out of are graded invalidated and excluded by default: ranking one beside names sitting on support is how a broken-down stock reads as a buy.

Six detectors over ONE zigzag pivot set per instrument, on 400 sessions of split-adjusted daily bars: double top and bottom, head-and-shoulders and its inverse, island reversals and Darvas boxes. Every threshold is a declared, versioned parameter and the resolved set is fingerprinted into the run row, so an edited gate cannot masquerade as the same algorithm. Each shape stays on the board for a multiple of ITS OWN duration — the same clock its projection is stated on — rather than a fixed number of sessions.

Excludes · Nothing is emitted below a detector's own admission gate: a name with no row is one we failed to find a shape on, not one we found and rejected. A Darvas box carries no confidence and no measured move, and an island no measured move — those columns are declared absent rather than filled with a zero, because neither detector computes them and a number there would be one the writer invented. Targets are regions with a time band, never a single price.

Strength stocks

Open the board →

Excess return: the instrument's return over the window minus a benchmark index's return over exactly the same sessions. Leaders and laggards split on the SIGN of excess, not on position in one ranking — taking the top and bottom slices of a short list would put the same name in both.

Excludes · The benchmark is an index series held in this deployment's own bars. Where there is none, or where it lacks a full window, the board says relative strength cannot be computed and points at absolute return on Movers — it never shows absolute return under a label that promises relative. Names without a full window are excluded, not counted as flat.

Correlations

Open the board →

Pearson correlation of daily RETURNS over 60 sessions. Returns, not prices: two rising price series correlate near 1.0 whatever they do day to day, which is the classic way this screen misleads.

Excludes · The matrix is capped at 20 instruments — it grows with the square of the universe and becomes unreadable long before it becomes slow — and names beyond the cap are counted as excluded so the universe is not mistaken for that small. A series with no variance returns no correlation rather than 0, which would read as independent instead of undefined. Correlation over one window is a description of that window, not a forecast.

Valuation

Shares × our own latest close — computed here, not repeated from a provider, so it moves with the tape we hold and carries our as-of. FULL and FLOAT capitalisation are kept apart: full answers “which is the biggest company”, float is what an index weight is actually built from, and universe weights are computed on float.

Excludes · An instrument with no share count on record, or a recorded count of zero, is excluded AND counted — never defaulted to zero, which would sort it to the bottom of the table as though it were a tiny company. Share counts carry their own reported-on date, which is separate from, and usually older than, the price as-of beside them.

Short float and float (hover cards)

Open the board →

Float is shares outstanding × the free-float factor, the factor derived from the public float the company states in its own annual filing. Short float is the short interest last reported for the name ÷ those float shares. It is a derived reading over two separate observations, and each keeps its own date on the card: the short position's settlement date and the date the float was measured, which can be more than a year older. Where no float was filed the card says the float is assumed (the full share count) rather than passing it as measured. A short position older than its source's declared reporting cadence allows is shown muted and marked delayed. The figure is shown on the Market cap and Monthly movers hover cards. Method short_float/1.

Excludes · A name with no float on record, or no short interest report, shows which is missing rather than 0%. The figure is not capped: a reading above 100% is rare but real, because the two inputs are measured on different dates and shares can be lent more than once.

Time and events

A month's return is its last session's close over the prior month's last session's close — the same ROCP(1) as any chart — on total-return adjusted prices, averaged across the scanned instruments with each instrument weighted by its own year count. The number of observations and the number of calendar years covered are returned beside every average, and the unfinished current year is excluded.

Excludes · A month whose predecessor month is missing — a listing gap, a suspension — is skipped, never bridged. Where only a year or two of history is loaded the board says plainly that each month has a single observation per instrument — a record of what happened, not evidence of a seasonal pattern.

Event and earnings calendars

Open the board →

A forward window over our own event records. A CONFIRMED date is on record as published by the exchange or company; an ESTIMATED date is labelled as such wherever it appears.

Excludes · An estimated date is never presented as a confirmed announcement, and never silently upgraded when it happens to be right.

Earnings pattern match

Open the board →

One fiscal quarter's prints in up to the last five years, each drawn as its close over the close of its reaction session minus one, so every path is 0% on day 0. The reaction session is the first close that reflects the print: the print's own session, or the next one when it was released after the close. The quarter is named one of two ways — by an upcoming earnings date (the quarter that print will report: the one after the quarter the company last reported) or by choosing any quarter of a ticker. The solid line is the events' mean; the dashed line is the newest event. Match % is the Pearson correlation between the newest event and the mean of the OTHER events over the overlapping sessions, mapped to 0–100 as (r + 1) / 2: 100 is the same shape, 50 is unrelated, 0 is the mirror image. The mean absolute gap in percentage points is shown beside it. Beneath the chart, the run-up (day −window to −1), the reaction (day −1 to 0) and the drift (day 0 to +window) are each averaged across the events with the count that rose. Method pattern_match/2; version 1 placed day 0 on the print's dated session regardless of when it was released.

Excludes · Fewer than five overlapping sessions, or a flat path, gives no match figure rather than a misleading one. A leg missing either of its closes is left out of that leg's average, never counted as zero. Where the last reported quarter cannot be counted forward to an upcoming print, its quarter is taken from the nearest same-time-of-year print of an earlier year and marked as estimated.

Earnings consistency

Open the board →

Names printing in the next 30 days, measured on the same fiscal quarter of every earlier year we hold. Sessions count from the REACTION session: an after-close print reacts the next session, anything else the same one (reaction_session/1). Pre-earnings is the close ten sessions before the reaction session over the close the session before it; earnings day is the close before over the close after; post-earnings is the close after over the close ten sessions later. Hit rate is the share of years positive; the median and mean gains are shown beside it. Method earnings_consistency/1.

Excludes · A name with fewer than the minimum years (three by default) is dropped and counted as dropped, not scored on one lucky year. Closes are as recorded, not split-adjusted, so a split inside a window is a known distortion.

Earnings gainers

Open the board →

The same upcoming set, with the most recent completed print and the same-quarter print a year earlier: close before over close after on the reaction-session rule above, the EPS surprise where an estimate exists, the free float as shares outstanding times the free-float factor (or float capitalisation over close where that is what the snapshot holds), and the last close. Method earnings_gainers/1.

Excludes · A print with no close on one side of it shows no gain. An estimated upcoming date is labelled as such; it can move.

Earnings Momentum schedule

Open the board →

Each plan is a stored entry/exit pair around a print. Its action is read against the exchange session, never the wall clock: upcoming, buy today, live, sell today, done. Unrealised is entry close to latest close; realised is entry close to exit close. A plan is low-conviction when fewer than 60% of its held years were positive or fewer than half were at or above the average. The summary tiles judge done plans on realised and the rest on unrealised; payoff is the average win over the average loss. Method plan_action/1.

Excludes · Plans are shown for 30 days after their exit and then leave the schedule; nothing here is a published track record — that is computed from fills, not from plans.

Index rebalance

Confirmed reconstitutions come from our event records. Predicted effective dates are DERIVED from announcement cadence, carry their probability, and are served as a distinct flagged layer drawn hollow.

Excludes · A predicted date is never merged onto a confirmed one and is never a published date. It is a forecast of when a change would take effect, presented as a forecast.

Two 52-week definitions ship at once — how to reconcile them

Two Markets surfaces answer “how many names are at a 52-week high” with different arithmetic, and on the history this deployment currently holds they disagree. Neither is wrong; they answer different questions, and you should know which one you are reading.

Overview breadth and the Movers 52W tabs — the wider number
The latest close at or above the highest close among the most recent 252 bars on record, with no minimum history. An instrument holding 30 bars is measured against those 30, so a recent listing can appear here.
New highs / lows — the qualified number
The daily precompute's 252-session flags, counted only for instruments that have a full 252-session history. The board publishes that qualified count beside the scanned one.

On a deployment holding less than a year of bars, the Overview count is the larger of the two. Reconcile them with the qualified count on New highs / lows: that is how many names had enough history for the strict reading. Consolidating the two onto one definition is a pending change; until it lands, this is the difference.

Backtesting methodology

What the engine does when it replays a strategy. Where the design intends something the engine does not yet do, it is marked as not implemented rather than described in the present tense — a methodology page that oversells the model is worse than no page.

Data quality

  • Bars are back-adjusted for corporate actions before the replay. A split, a bonus issue and a cash dividend each produce a cumulative factor applied to every bar before the action, and volume is divided by that same factor — adjusting price without volume would make every pre-split session look like a liquidity drought.
  • The adjustment is point-in-time. An action the market had not been told about by the end of the tested window is not applied inside it; including one would be replaying the past with tomorrow's news.
  • A dividend with no prior close to measure against is left unadjusted rather than adjusted by a made-up denominator.
  • Not implemented: survivorship-bias correction. A run replays the instrument the strategy names; a historical index membership is not reconstructed, so a universe-level delisting effect is not modelled and must not be read into a result.
  • Not implemented: a minimum-history requirement. A short window runs and reports what it had — the bar count is on the run, and a metric over a handful of sessions should be read as arithmetic, not as evidence.

Adjustment factors are stored per action and applied per bar, so a replay costs one lookup rather than a walk of the action history.

Execution model

  • An order formed on a bar fills at the NEXT bar's open. An order formed on a bar's close cannot fill inside that bar — the single most common look-ahead bug — and here that clamp is structural, not a setting anyone can relax.
  • Slippage is one tick, applied against the trader: a buy pays a tick above the open, a sell receives a tick below. It is a fixed tick, not a percentage of price, and there is no per-instrument liquidity tier.
  • Fees are computed by the platform's fee engine against the pack-seeded schedule — the full statutory and exchange component stack, not a flat rate — and they are carried SEPARATELY from the fill price all the way to the blotter, never netted into it.
  • Money is integer minor units end to end through the accounting path. No floating-point value ever touches a cash row; the derived statistics below are the only place floats appear.
  • Not modelled: position sizing. Each signal sends one unit — there is no risk-per-trade sizing, no capital-fraction sizing, no pyramiding and no partial fills.
  • Backtest and paper trading instantiate the SAME simulated venue, so the fill model above is the model paper trades against too. Only the clock and the data feed differ, and a nightly parity gate fails the build on any divergence between the two blotters.

Fills are next-bar-open with one-tick slippage and pack-computed fees, in integer minor units — the same venue paper trading uses.

Risk metrics

Total returntotal_return
final equity ÷ initial equity − 1.
CAGRcagr
(final ÷ initial) ^ (365 ÷ calendar days in the run) − 1 — calendar days, not sessions.
Sharpesharpe
mean daily return ÷ standard deviation of daily returns × √252. The risk-free rate is ZERO: this is not an excess-return Sharpe, and it is not computed from CAGR. Compare it against another run of this engine, not against a published figure.
Max drawdownmax_drawdown
the largest peak-to-trough decline of the equity curve, as a negative fraction.
Win ratewin_rate
winning closed trades ÷ all closed trades.
Profit factorprofit_factor
profit on winning trades ÷ loss on losing trades, both taken NET of fees — not the gross-of-cost ratio the term usually names. With no losing trade it reports 0 rather than infinity.
Total tradestotal_trades
closed round-trips in the run.

Metric keys are named here exactly as the engine writes them, so a figure on a run page resolves to a definition on this page.

Performance verification

How a published performance figure is allowed to exist at all.

Computed from our own records

A performance figure published for a strategy from the library is computed from that strategy's own order, fill and position records held by this platform, under a methodology carrying a version number. Nobody can submit a performance figure; there is no field to submit it into. The platform never originates an order in another user's account, so there is no second party's realised return to compare against — every figure describes the records it was computed from and nothing else.

Simulated against live execution

A simulated result and a live one differ for three reasons — the delay between signal and fill, the difference between the theoretical and the achieved price, and transaction costs. The engine models the first two as a next-bar-open fill with a one-tick adverse move, and charges the third from the pack schedule.

NOT AVAILABLEMeasured simulated-vs-live gap

No board compares a strategy's simulated blotter against its live one yet, so the size of that gap is not computed and no figure for it is published. Live order routing is itself gated off by default.

Backtest and paper share one venue; the live venue is a separate implementation behind the live-trading gate.

Methodology versions

The intent is that every published figure carries a methodology version, that each version is immutable once published, and that old versions stay served forever so an old figure remains explainable.

NOT AVAILABLEVersioned methodology entries

The version store and its public per-version document are not built yet, so there is no version list to pick from and no figure yet carries a version number. Until they ship, the text on this page is the methodology in force.

Risk disclaimer

Past performance is not indicative of future results. Every backtest, analytic and performance figure on this platform is historical and guarantees nothing about the future. Trading carries a substantial risk of loss and is not suitable for every investor. The methodologies described above are how we compute and verify data — they are not a claim that trading on that data will succeed. Do your own research and weigh your own risk tolerance before acting on anything here.