Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

## 2023-10-25 - Financial Metric Tooltips
**Learning:** Users often struggle with raw numerical inputs for statistical or financial parameters (like quantiles or basis points) without concrete examples. Adding native tooltips with explicit conversions clarifies expectations.
**Action:** Always include a `help` tooltip with a concrete example (e.g., "10 bps = 0.10%") for financial/statistical inputs in Streamlit widgets.
46 changes: 40 additions & 6 deletions src/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,29 +168,63 @@ def get_cache_key(*args) -> str:
help="Lookback months for Momentum signal."
)
else:
factor_window = st.slider("Factor Beta Window (days)", 20, 252, 63, 7)
vol_window = st.slider("Regime Vol Window (days)", 10, 60, 21, 5)
adv_pct = st.slider("ADV Participation %", 0.01, 0.30, float(DEFAULT_ADV_PCT), 0.01)
factor_window = st.slider(
"Factor Beta Window (days)",
20,
252,
63,
7,
help="Rolling window for calculating factor exposures (e.g., 63 days = ~3 months).",
)
vol_window = st.slider(
"Regime Vol Window (days)",
10,
60,
21,
5,
help="Rolling window for calculating realized volatility (e.g., 21 days = ~1 month).",
)
adv_pct = st.slider(
"ADV Participation %",
0.01,
0.30,
float(DEFAULT_ADV_PCT),
0.01,
help="Assumed participation rate in Average Daily Volume for liquidity calculations (e.g., 0.10 = 10%).",
)

st.markdown("---")
st.subheader("4. Research Rigor")
use_oos = st.toggle(
"Out-of-Sample Mode",
value=False,
help="Uses expanding-window quantiles for regime classification to avoid look-ahead bias. Enable for rigorous backtesting."
help="Uses expanding-window quantiles for regime classification to avoid look-ahead bias. Enable for rigorous backtesting.",
)
if use_oos:
st.success("βœ“ Look-ahead bias removed")
else:
st.info("Using full-sample quantiles (exploratory mode)")

vol_q_high = st.slider(
"High Volatility Quantile", 0.5, 0.95, DEFAULT_VOL_QUANTILE_HIGH, 0.05
"High Volatility Quantile",
0.5,
0.95,
DEFAULT_VOL_QUANTILE_HIGH,
0.05,
help="Quantile threshold defining the 'High' volatility regime (e.g., 0.75 = top 25% of volatility).",
)

if mode == "Single-Asset":
st.subheader("5. Backtest Settings")
bt_cost = st.number_input("Transaction Cost (bps)", value=DEFAULT_COST_BPS, step=1) / 10000
bt_cost = (
st.number_input(
"Transaction Cost (bps)",
value=DEFAULT_COST_BPS,
step=1,
help="Transaction cost per trade in basis points (e.g., 10 bps = 0.10%).",
)
/ 10000
)
allow_short = st.checkbox("Allow Short Selling?", value=False)
else:
st.subheader("5. Alert Thresholds")
Expand Down
Loading