plaintape

Service Status

Operational health of the live pysystemtrade pipeline. Service-level indicators are recomputed daily — process freshness, price & FX coverage, stale orders, strategy order generation, portfolio risk versus target, and execution-quality indicators marked "informational" while their thresholds are being calibrated.

Overall: PASS

Snapshot generated at 2026-10-03T06:00:04. Trading day: No (weekend). Indicators flagged "trading-day only" are not counted toward the overall status on weekends or holidays.

Most recent operator note (dated 2026-09-26, written by the operator, not generated):

This note is written by the operator and dated above. The snapshot it sits under carries its own date; the two can differ, because a fresh snapshot is produced every morning but the page is published only after the operator approves the build by hand. A stale snapshot date means publication is behind, not that the pipeline stopped. Next scheduled review of this note: 2026-10-02.

This page reports the pipeline behind the operator's own account. The overall status has passed on 8 of the last 30 recorded days. Two indicators are red.

Process freshness. The nightly reporting job, which produces the operator's end-of-day reports, has been stopped by its own time budget before finishing every night since 7 September. What was checked: every scheduled trading process on this page (capital update, position targets, order generation, roll status) completed inside its window on every day in the strip. The reports are read by the operator; no order, position or price is derived from them. A change to the budget, sized from the measured run time, has been reviewed and is waiting to be deployed. Until it is, the operator's own end-of-day reports are incomplete; that is a reporting failure, not a trading one, and it is stated here as such.

Price update coverage. 20 of 257 sampled markets have had no price update in the last 26 hours. What was checked on 26 September: 19 of the 20 are excluded from the strategy's trading universe by configuration (quarantined for data reasons before this incident), so their stale prices are not an input to any position; 18 of those sit on a contract that expired between 28 August and 18 September without the data feed being moved to the next contract. The twentieth is inside the trading universe: it holds no position, is in a state that forbids opening one, and its last price is three days old. None of the 20 holds a position on the operator's account. Moving the expired feeds forward is an operator action and is scheduled.

What this page does not cover: the reconciliation of broker positions against the system's own record runs separately, during trading hours, and is not one of the indicators here. Absence of a holding in a market is stated as exactly that, not as absence of any effect on the book.

This note will be updated as the facts change, and on the review date above at the latest. When the indicators return to green the dated notes stay published; a green result does not erase the record of the red one.

Process freshness

FAIL

Every run_* process is live or completed in its expected sub-daily or business-day window.

In plain English: Like checking every machine on the assembly line ran on time today. If a scheduled job didn't finish when it should have, something is stuck and needs a look.

Target: 100%  ·  Actual: 10/11 (90.9%)

Price update coverage

FAIL

Fraction of sampled instruments with a price update in the last 26 hours, excluding instruments with no up-to-date data (retired/stale, or feeds confirmed dead at source).

In plain English: Are we getting fresh prices for the things we trade? This is the share of markets whose prices we refreshed recently — trading on stale prices is like driving with a fogged-up windscreen.

Target: 99%  ·  Actual: 252/255 (98.8%)

FX update coverage

PASS

Fraction of FX codes with an update in the last 26 hours.

In plain English: The same freshness check, but for currency exchange rates. We need up-to-date rates to correctly value positions we hold in foreign currencies.

Target: 99%  ·  Actual: 12/12 (100.0%)

Stale orders

PASS

Contract orders unfilled, older than 2.0h, while their market is open.

In plain English: Orders we sent to the broker that are still sitting unfilled while the market is open — like a letter we mailed that never got delivered. This should be zero.

Target: 0  ·  Actual: 0

Strategy orders today

PASS

Every active strategy has an optimal-position update since the start of the previous business day (evening producers, morning snapshot).

In plain English: Did every strategy do its homework and recalculate what it wants to hold? If one didn't, it's running on yesterday's (or older) plan instead of today's.

Target: 100%  ·  Actual: 1/1 (100.0%)

Portfolio risk vs. target

PASS

Each active strategy's trailing realised annualised vol (63 business days) is within [0.6x, 1.5x] of its percentage_vol_target, and its ex-ante expected risk stays below 1.5x target (overshoot guard).

In plain English: Are we taking about the amount of risk we aimed for — not too sleepy, not too wild? This checks our actual ups-and-downs stay close to target, and that we're not set up to take far more risk than intended.

Target: 100%  ·  Actual: 1/1 (100.0%)

Optimal target freshness

INFO

Instruments feeding the optimiser a non-zero position target whose value is more than 5 days old. Keyed on the age of the value, not the age of the last write.

In plain English: Every night we work out how much of each market we ought to own. This checks that those numbers are actually being recalculated, rather than an old one being copied forward and traded on. A number can be rewritten every day and still be months out of date.

Target: 0  ·  Actual: 0/174 (0.0%)

Bid/ask cost: realized vs configured (30d)

INFO

Mean ratio of realised bid/ask half-spread to currently configured spread across instruments traded in the last 30 days. 1.0 = on budget; >1.0 = paying more than expected. Informational while threshold is calibrated.

In plain English: Every time we buy or sell we pay a small 'toll' — the gap between the buy and sell price. This compares the toll we actually paid recently to what we budgeted: 1.0 means on budget, above 1.0 means we're paying more than expected.

Target: informational (calibrating)  ·  Actual: 44/587 (127.3%)

Bid/ask cost: realized vs configured (90d)

INFO

Mean ratio of realised bid/ask half-spread to currently configured spread across instruments traded in the last 90 days. 1.0 = on budget; >1.0 = paying more than expected. Informational while threshold is calibrated.

In plain English: Same trading-toll check as the 30-day version, but over a longer three-month window so a few unusual days don't dominate. 1.0 means on budget, above 1.0 means we're paying more than expected.

Target: informational (calibrating)  ·  Actual: 82/587 (436.3%)

Cost outlier instruments (30d)

INFO

Count of instruments whose realised bid/ask half-spread is more than 2.0x the currently configured spread over the last 30 days. Informational while threshold is calibrated.

In plain English: How many markets charged us a much bigger trading toll than we'd budgeted for. A high count means our cost assumptions are off for several instruments and need refreshing.

Target: informational (calibrating)  ·  Actual: 8/44 (800.0%)

Backtest vs live PnL drift (30d, execution)

INFO

Cumulative (realised − theoretical) PnL over the last 30 days, divided by absolute cumulative theoretical PnL. Theoretical PnL is computed from the most recently recorded optimised position per (strategy, instrument) carried through subsequent business days, multiplied by back-adjusted price changes and base-currency point size. Realised PnL is the daily change in accumulated capital. Captures execution drift (slippage, integer rounding, fill timing). Informational while threshold is calibrated.

In plain English: We have a 'perfect world' simulation of what our trades should have earned, and what they actually earned in real life. This measures the gap — caused by things like slippage and rounding. A small gap means real trading is tracking the plan.

Target: informational (calibrating)  ·  Actual: 538.71/14023.65 (3.8%)

Realised drawdown vs expected (1mo / 3mo / 1yr)

INFO

Realised max drawdown depth at each of 1-month, 3-month, and 1-year trailing windows, expressed as a ratio to a reference depth. Value is the worst (most adverse) ratio across horizons. <1.0 = inside expectations; >1.0 = at least one horizon is deeper than reference. Reference depth at each horizon is the 95-th percentile of historical max-drawdown-in-window values computed from the system's own pnl history; horizons with fewer than 20 sample windows fall back to conservative hardcoded depths so the SLI never goes blank. Informational while threshold is calibrated.

In plain English: A 'drawdown' is how far we've fallen from a recent high — the size of a losing streak. This checks whether our worst recent losing streaks are normal for a system like ours, or unusually deep. Below 1.0 means within expectations.

Target: informational (calibrating)  ·  Actual: 0.0623/0.0847 (73.5%)

Capacity utilisation (30d, worst instrument)

INFO

For each instrument: sum of |fill quantity| across all strategies in the last 30 days, divided by recent average daily volume of the currently-priced contract times 30. Reports the maximum across instruments as a raw fraction (0.005 = 0.5% of ADV at the worst instrument). value_numerator counts instruments above the 1% capacity ceiling; value_denominator is the count of instruments measured. Informational while threshold is calibrated.

In plain English: How big are our trades compared to how much that market trades each day? Small means we're a tiny customer who can get in and out easily; big means we're such a large share of the market that trading is slow and expensive. Lower is safer.

Target: informational (calibrating)  ·  Actual: 1/46 (2.0%)

Forecast scaling drift (per rule × instrument)

INFO

For each (strategy, trading rule, instrument), the mean of |capped forecast| over the trailing 250 business days, compared to the configured average_absolute_forecast scalar (default 10.0). value reports the worst deviation fraction across all pairs; value_numerator counts pairs outside the ±25% band. Carver-framework scalars target 10; sustained drift outside the band means positions are systematically over- or under-sized vs design. Informational while threshold is calibrated.

In plain English: Each strategy turns its market views into a 'conviction score' that should average around 10. This checks the scores are sized right — if they drift too high or low, our positions end up systematically too big or too small versus the design.

Target: informational (calibrating)  ·  Actual: 3198/5831 (100.0%)

Rule Sharpe vs backtest (per rule × instrument)

INFO

For each (strategy, trading rule, instrument), the annualised Sharpe of the rule's standalone PnL contribution over the trailing 250 business days. A pair is deviated when trailing Sharpe falls below the 5th-percentile of the rule's historical 250-BD rolling Sharpe distribution; pairs with too little history (< 50 distinct sample windows) fall back to a fixed-threshold delta of 0.50 Sharpe units below the full-period mean. value reports the most adverse delta (most negative trailing − full); value_numerator counts deviated pairs. Informational while threshold is calibrated.

In plain English: Each trading idea ('rule') is graded on its recent risk-adjusted profit. This flags any rule performing much worse lately than it normally does — an early warning that a strategy may be breaking down.

Target: informational (calibrating)  ·  Actual: 363/5831 (-2563.4%)

Client schedule drift

PASS

The scheduled jobs installed on the production host, and each armed account's process windows, compared against the schedule generated from the client registry. 1 means they disagree: a task that never runs, or a window shut against its own cron time, stops an account trading without crashing. A commented-out approved line counts as drift like any other missing one; there is no disableable task carve-out.

In plain English: Every account has its own scheduled daily jobs. This checks that the schedule actually installed on the machine still matches the one the system says it should be running. If they disagree, an account can quietly stop trading with nothing crashing to say so.

Target: 0  ·  Actual: 0

Process freshness — per-process

ProcessLimitPass
run_capital_updateby 04:45PASS
run_systemsby 04:45PASS
run_strategy_order_generatorby 04:45PASS
run_backupsby 23:50PASS
run_daily_fx_and_contract_updatesby 23:50PASS
run_reportsby 23:50FAIL
run_daily_prices_updatesby 23:50PASS
run_cleanersby 23:50PASS
run_stack_handler0.5hPASS
run_auto_roll_statusby 04:45PASS
run_daily_update_multiple_adjusted_pricesby 23:50PASS

Rolling compliance — last 30 recorded days (2026-09-04 → 2026-10-03)

Each row shows the fraction of recorded days the SLI passed. The strip is one cell per day, oldest on the left.

Overall: 30.0% (9/30 days)

IndicatorComplianceDays passedHistory
Process freshness0.0%0/30
Price update coverage0.0%0/30
FX update coverage36.7%11/30
Stale orders100.0%30/30
Strategy orders today100.0%30/30
Portfolio risk vs. target90.0%27/30
Client schedule drift100.0%30/30

The producer runs at 06:00 UTC; the public site rebuilds nightly at 21:45 UTC. Lag between a fresh snapshot and this page is up to ~16h — acceptable for a daily-cadence service-status surface.