Loading…

Appearance

Customise the colour scheme and accent colour of the SOS interface.

Pattern Lock

Protect access to SOS with an Android-style pattern. The pattern hash is stored locally — no passwords leave this machine.

Database Backup

Download a snapshot of your database, or restore from a previously downloaded file. Restoring always saves a safety copy of the current database first, in case something goes wrong.

yfinance usage monitor

Live count of real HTTP requests hitting Yahoo's servers. A single options fetch can be several requests. Watch req/min to gauge how close you are to rate limits.

Req / min
Last 10s
Last hour
Total (session)
429 rate-limit hits
Other errors
Last 429

Auto-cache schedule

When the app is running, the cache automatically refreshes:

  • Every hour during US market hours (10:00, 11:00, 12:00, 13:00, 14:00, 15:00 ET)
  • Skips weekends entirely
Loading status…

Cache options data

Refresh the options chain cache for every ticker in your stocks table. Useful after adding many tickers, or to pre-warm before market close. Runs at ~4 tickers in parallel with a small delay between batches to avoid yfinance rate limits.

Starting… 0 / 0 (0%)
Show errors

    Data source diagnostics

    Compare quote and options chain data from yfinance and Tiger Brokers side-by-side. Useful for diagnosing yfinance issues (stale prices, missing strikes, empty chains). Results are display-only — nothing is saved.

    Quote

    SourcePricePrev closeChangeStatus
    yfinance
    Tiger
    IBKR

    Options chain (4 expirations)

    No chain data yet — click Compare to load.

    Tiger market-data permissions

    Permissions will appear after comparing.

    IBKR Client Portal Gateway

    Unknown

    Probes the local IBKR Client Portal Gateway. Requires the gateway process to be running and an authenticated session. Log in once via browser at the gateway's root URL after starting the gateway.

    Quote probe (raw bar)

    Performs the two-step lookup: secdef/search to resolve the conid, then marketdata/history for the latest daily bar. The "Compare" button above also populates this.

    Run Compare above to populate.

    Anthropic Claude API

    Unknown

    Key is read from claude_api.properties at the project root. That file is in .gitignore so it shouldn't be committed. Edit it on disk, then click Reload key to pick up the change.

    Key status
    Diagnostic result. This shows the raw Anthropic API response — useful for confirming web search is actually being invoked. Look for any server_tool_use blocks (= the model called web search) and web_search_tool_result blocks (= it got results back).
    
            

    Usage tracked from this app

    Each API call this app makes logs its input/output tokens and an estimated USD cost (based on per-model pricing). Anthropic doesn't expose a real-time balance, so this is local accounting only — your true monthly invoice lives in your Anthropic console.

    Today
    $0.00
    0 tokens · 0 call(s)
    This month (UTC)
    $0.00
    0 tokens · 0 call(s)
    All time
    $0.00
    0 tokens · 0 call(s)
    Recent calls
    When Model Input Output Cost Context
    No calls logged yet.

    Debug logging

    Enable verbose terminal logging for troubleshooting. These write to the Flask console (stdout) and persist across restarts.

    SOS — Stock Options Screener © 2025 v1.7.5