Factors without black boxes
Okay, picture a wall of little coloured squares. Assets running down the side, days running across the top, and each square glowing somewhere between deep red and bright green depending on how strong the signal is that day. This is a relative-strength heat-map, and it is genuinely one of the best ways ever invented to look at a whole universe and feel like you understand it. Your eye finds the green band before your brain has finished its coffee.
There is just one tiny problem, which is that the number inside each square is, in most tools, a sealed box you are not allowed to open.
What is actually in that composite? Who picked the weights, and did they pick them on purpose or did the weights just sort of accumulate like junk in a drawer? Why did the thing roll over on a Tuesday? The heat-map gives you a confident colour and then folds its arms and refuses to explain itself. (We have all nodded along at a red square we did not understand. It is fine. It is just not a great way to run money.)
Three honest objects
The fix is not a fancier colour gradient. It is taking the box apart so there is nothing left to hide inside. Strata builds the factors area from three first-class objects, and that is the whole trick.
A factor is one signal turned into a normalised, comparable score. A one-month return z-scored over ninety days. A boolean for whether price sits above its 200-day EMA. A volatility rank where lower is the good direction. One idea, made into a number you can stand next to other numbers.
A model is a weighted battery of factors with an aggregation rule and, if you want them, gates. The kind of gate that says “only bother scoring the uptrends.” A model is the recipe.
A grid is a universe times a model times your view settings. The grid is the thing that actually renders into that wall of squares.
We ship a trend and momentum battery, and you might assume it is The Official Answer handed down from a mountain. It is not. It is a seed. Clone it, reweight it, bolt on a sentiment factor, save the result as yours. Nothing in the engine is special-cased, because the day you special-case the house model is the day you have quietly built a black box again.
Why normalisation is the whole ballgame
Here is the bit people skip, and it is the load-bearing wall. Raw values never get compared directly. Ever.
A funding rate, a payout ratio and a moving-average cross are measured in wildly different units that have no business sharing a sum. It is like averaging your height, your age and your phone number and announcing the result means something. So every factor has to declare how it becomes unit-free first: a z-score with a clamp, a percentile rank, min-max, threshold buckets, or plain boolean. Once everything speaks the same dimensionless language, adding them up in one composite is finally an honest move rather than a category error.
Click the square
And then the part that makes the whole thing trustworthy instead of merely pretty. Hover any cell in a grid and it opens up: each factor’s raw value, its normalised score, its weight, and exactly how much it contributed to that day’s composite.
So when a number surprises you, and at some point one will, you do not have to take the colour on faith and quietly hope. The explanation is one click down, which is roughly the standard your own money deserves.
That same instinct runs through the rest of Strata. It is why we are manual by design, and it is the same loop of writing down your reasoning and then checking it against what happened. A square you can open is a square you can actually believe.