Make Matrix
systemic:core-mmtrxCorefunction1 crInputs
| Name | Type | Description |
|---|---|---|
| Row | floatmatrix | Wire in **1 to 20 series** — prices, indicator outputs, portfolio candidates, anything you want stacked into a single table. Each wired series becomes one **column** of the output matrix; order is preserved (the first wire is column 0, and so on). |
Outputs
| Name | Type | Description |
|---|---|---|
| Matrix | floatmatrix | A table with **one row per timestamp** and **one column per wired series** — `row[t] = [series_1[t], ..., series_N[t]]`. Rows run oldest to newest; the **last row is always the current (t0) slot**. |
Many models — portfolio weight solvers, feature-importance charts, correlation grids — don't operate on a single series, they operate on a table: many series, read together at each point in time. Make Matrix builds that table from up to 20 series wired into its Row input.
Orientation: Rows Are Timestamps
The output matrix has one row per timestamp and one column per wired series (T rows × N columns). Row t is the vector of all N series' values at that same instant:
row[t] = [series_1[t], series_2[t], ..., series_N[t]]
The rows are chronological, oldest first. The last row is always the newest slot (t0) — the same instant every other Systemic output ends on.
This orientation matters because it is what every chart and downstream module expects: a row is "what happened at this moment," not "the full history of one series."
Missing Data
A missing value in any wired series stays missing at its own cell — never treated as zero, never filled from a neighbor. If series 2 has no value at timestamp t, row[t][1] is null; every other cell in that row is unaffected. A row can legally be entirely null (e.g. every wired series is business-day-only and t falls on a weekend) — that row still exists and is still emitted, it simply carries no information.
Live Execution
In live mode, Make Matrix returns exactly one row — the newest datapoint across all wired series, [[series_1[-1], ..., series_N[-1]]]. A series missing its latest point contributes null at that column; the row itself is still returned.
Chart-Only Output
The Matrix output is for visualization only (e.g. a heatmap, or feeding a matrix-input module such as a portfolio optimizer). It cannot be wired into a plain series input — a downstream module expecting a single number per timestamp cannot accept a row of many.
Requirements
All wired series must be the same length. Systemic aligns series onto a common time grid before they reach this module, so a length mismatch signals a genuine wiring problem rather than an alignment gap.