DEV Community

Arnold Holm
Arnold Holm

Posted on

Why can your $100,000 challenge dashboard turn green with no data?

Your $100,000 example account can show unknown against a $2,000 daily loss limit: 7 invented checks kept missing data separate from a clean recorded path.

Seven invented checks: gaps stay unknown and recorded crossings stay visible.

Two recorded equity values can sit above a challenge loss floor while the recording between them is missing. A green badge is too strong a conclusion. In these checks, an empty recording and a NaN both returned unknown, while a recorded crossing stayed a crossing even when another value was missing.

This is a small Python check for a dashboard or exported journal. It does not determine whether a real account passed a firm's rules.

The problem is the label

Suppose the fixed floor is 98,000. The first and last recorded values are both 100,000. If the middle value is absent, the data does not tell us whether the path crossed the floor.

A developer might already handle that gap but still miss two other cases. An empty list can pass an all(...) check. A NaN can make a numeric comparison false without raising an exception. Both can quietly end up with a reassuring label.

There is also a precedence question. A recording of 100000 -> 97000 -> missing contains both a crossing and a gap. Returning only unknown throws away the crossing we actually observed.

I keep a recorded crossing visible even when the recording also has gaps.

Three states, with crossing checked first

The accepted data is deliberately small: a list of numbers or None, a fixed finite floor, and an inclusive boundary. A value equal to the floor counts as a crossing in this example. The function does not accept arbitrary strings or read an account. NaN means that a stored entry is not a valid number.

from math import isfinite

def status(values, floor=98_000):
    if any(v is not None and isfinite(v) and v <= floor for v in values):
        return "crossing recorded"
    if not values or any(v is None or not isfinite(v) for v in values):
        return "unknown"
    return "no crossing in recorded values"

cases = [
    ([100_000, 99_000, 100_000], "no crossing in recorded values"),
    ([100_000, 97_000, 100_000], "crossing recorded"),
    ([100_000, 98_000, 100_000], "crossing recorded"),
    ([100_000, None, 100_000], "unknown"),
    ([], "unknown"),
    ([100_000, float("nan"), 100_000], "unknown"),
    ([100_000, 97_000, None], "crossing recorded"),
]
for values, expected in cases:
    assert status(values) == expected, (values, expected)
print("7 synthetic checks passed")
Enter fullscreen mode Exit fullscreen mode

The final label is intentionally narrow: no crossing in recorded values. It does not say that nothing happened between samples. Adding more samples does not by itself prove continuous coverage either.

What I would show beside the badge

A trader needs to know what the software saw. Beside the status, show the last recorded time, which recording period is covered, and whether there are known gaps. Keep the fixed-floor assumption visible. If a crossing exists, retain its recorded time and value even if collection later fails.

The $2,000 loss limit in this invented example is measured from a starting value of $100,000. That produces the fixed $98,000 floor. A reading of $97,000 is $1,000 below that floor. This is a deliberately chosen test case, with a made-up rule, rather than a result from a trading account.

For a real challenge, first map the firm's actual rule. Does it use balance or equity? Is the floor fixed or trailing? What happens at the daily reset, and which timezone defines it? Fees, open positions and the firm's own measurement feed can change the calculation. None of those rules is tested by this short program.

Try this before trusting the colour

Delete every value from a test export. Then replace one middle value with NaN. Finally put a known below-floor value before a missing value. Does the dashboard distinguish those three cases, or does it turn one of them green?

This is one small check for the broader question of challenge readiness. Seven invented cases test these labels and their precedence. They do not establish a profitable strategy, complete account history or a pass verdict.

For a starting point on the account rules themselves, use the free Challenge Pre-Check.

Top comments (0)