Spaces:
Running
Running
Commit History
-
Search by company name; show price; keep icons on their ligature font
Verified signatureA visitor who knows "Nvidia" but not "NVDA" could not use this. 285 symbols with company names are BUNDLED and searched locally -- no network, no key, no entitlement, because the app has enough vendor-dependent failure modes already. Free-text entry is enabled by probing selectbox's signature, with a second input as the fallback on builds that lack it. Added price / day change / day range: a signal with no price is ungrounded -- the reader cannot tell whether "bearish" means down 0.2% or down 6%. Company name now shown beside the ticker, so a mistyped symbol is obvious.551aca9 -
Say which session the bars are from; timeframes 15m/1h/4h/1d
Verified signatureReported at 22:22 ET on 2026-09-07 as stale results. It was Labor Day -- a full closure -- so the newest bar was Fridays, and nothing said so. Note 2026-09-07 is a MONDAY: a weekday check calls it a session, so the exchange calendar is the only thing that knows better. trading_days.py is copied in and held against drift. market_status() gives state / reason / reference session, rendered as a banner before any request so it survives a dead backend. Early closes handled; missing tzdata degrades to unknown rather than closed. The calendars claim is cross-checked against the newest bar actually fetched, and a mismatch surfaces as a warning. Timeframes are now 15m/1h/4h/1d. 1m and 5m removed: yfinance caps 1m at 7 days, too few bars to warm up a 20-period indicator. 4h is folded from hourly one session at a time -- resample(4h) would splice the overnight gap into an intraday range. min_confidence re-measured for the new set: 36/36/37/38, fires 8.8%. Confidence is strategy-invariant by de…113b714 -
Make the signal reachable, directional, and timeframe-aware
Verified signatureThe app could only ever answer HOLD. Four defects, each sufficient alone: 1. min_confidence was 70/65/60/55 against a quantity whose measured max was 47 -- it fired on 0 of 80 observations. Recalibrated to 40/38/36/34, percentiles of the real distribution; fires ~9%, so HOLD stays the common answer. 2. A component with no reading was scored as 0 confidence instead of abstaining, spending 30% of the budget on a constant zero and pinning output near 25. 3. momentum_score is a magnitude and _convert_signal_format hardcoded CALLS, so PUTS was unreachable for any input and a selloff read as a bullish setup. Direction recovered from directional_bias, which was computed then discarded. 4. The selected timeframe never reached the momentum engine, which hardcoded its weights -- every timeframe analysed identical data. 5m bars added so the fast settings have real data to weight. Gap mode was gated on the TFT gap_probability (~67.1 for every symbol, never cleared its own >7…3ebcf0e