Skip to content

fawp_index.watchlist โ€” Multi-asset Watchlist Scanner

Scan a whole watchlist across multiple timeframes and rank results by any FAWP signal metric.

Quick start

from fawp_index.watchlist import scan_watchlist

# With your own DataFrames:
dfs = {"SPY": spy_df, "QQQ": qqq_df, "GLD": gld_df, "BTC": btc_df}
result = scan_watchlist(dfs)

# With yfinance auto-fetch:
result = scan_watchlist(
    ["SPY", "QQQ", "GLD", "BTC-USD", "ETH-USD"],
    period="2y",
)

# Multi-timeframe:
result = scan_watchlist(dfs, timeframes=["1d", "1wk"])

print(result.summary())
result.to_html("watchlist.html")

CLI

fawp-index watchlist spy.csv qqq.csv gld.csv --labels SPY QQQ GLD --out watchlist.html
fawp-index watchlist *.csv --rank-by gap --top 5

Ranking metrics

result.rank_by("score")        # strongest current regime score
result.rank_by("gap")          # widest peak leverage gap (bits)
result.rank_by("persistence")  # longest days in active regime
result.rank_by("freshness")    # most recent new FAWP signal
result.rank_by("entry")        # earliest regime start

result.top_n(5, "score")       # top 5 by score
result.active_regimes()        # only currently flagged assets

WatchlistResult properties

Property Description
.assets List of AssetResult
.n_assets Total assets scanned
.n_flagged Currently active FAWP regimes
.scanned_at Scan timestamp

AssetResult fields

Field Description
ticker Asset label
timeframe e.g. "1d", "1wk"
latest_score Current regime score (0โ€“1)
peak_gap_bits Peak leverage gap in bits
regime_active Currently in FAWP?
regime_start Start date of current regime
days_in_regime Calendar days in current regime
signal_age_days Days since last FAWP signal
scan Full MarketScanSeries for this asset

Exports

result.to_html("watchlist.html")   # HTML table with score bars
result.to_csv("watchlist.csv")     # Tidy DataFrame
result.to_json("watchlist.json")   # Full JSON with metadata
result.to_dataframe()              # pandas DataFrame