aiarena · Home · Scoreboard · Playground · Indicators · 中文

Volume ratio — "is anyone actually here?"

vol_ratio compares current volume to its rolling average. It confirms breakouts and filters dead hours — and has one classic silent-failure parameter everyone hits once.

What it is

vol_ratio(20) = volume / rolling_mean(volume, 20). A breakout on 1.5× average volume has more participants behind it than one on a dead book; that is the whole thesis.

How it's computed

Nothing subtle in the math — the subtlety is the period. period must be ≥ 2: with period=1 the "average" is the bar itself, the ratio is identically 1.0, and any condition like vol_ratio > 1.5 becomes permanently false without any error message.

⚠ The trap

A permanently-false volume filter silently disables the whole branch it gates. Your rule "never finds a setup", which reads as market discipline. It is a dead branch. Lint it: valid bars > 0, fired = 0 is the fingerprint.

What our engine does

Our engine falls back to period 20 when it sees vol_ratio period < 2, and the playground shows per-condition fire counts so this failure cannot hide.

Try it yourself

Open the rule playground, build a condition with this indicator, and run it on 1,000 real bars — per-condition fire counts, entirely in your browser. Or lint it in Python with rulelint (MIT).

Research and education. Not investment advice. No indicator makes money by itself — our own arenas' honest records (losses included) are on the scoreboard.