diff --git a/.Jules/palette.md b/.Jules/palette.md new file mode 100644 index 0000000..8383507 --- /dev/null +++ b/.Jules/palette.md @@ -0,0 +1,3 @@ +## 2024-05-24 - Clarifying Abstract Financial Inputs +**Learning:** Inputs requiring niche domain knowledge (like basis points or ADV metrics) often confuse general users without concrete examples. Using `help=` with explicit mathematical conversions ("10 bps = 0.10%") significantly improves input comprehension. +**Action:** Always include concrete numeric examples in tooltips when an input deals with domain-specific statistical or financial parameters. diff --git a/src/dashboard.py b/src/dashboard.py index 4156c1d..53e2d7b 100644 --- a/src/dashboard.py +++ b/src/dashboard.py @@ -160,37 +160,58 @@ def get_cache_key(*args) -> str: st.subheader("3. Signal Parameters") if mode == "Single-Asset": sma_window = st.slider( - "Trend SMA Window", 10, 200, DEFAULT_SMA_WINDOW, 10, - help="Lookback days for Simple Moving Average trend signal." + "Trend SMA Window", + 10, + 200, + DEFAULT_SMA_WINDOW, + 10, + help="Lookback days for Simple Moving Average trend signal.", ) mom_window = st.slider( - "Momentum Lookback (Months)", 1, 24, DEFAULT_MOMENTUM_WINDOW, 1, - help="Lookback months for Momentum signal." + "Momentum Lookback (Months)", + 1, + 24, + DEFAULT_MOMENTUM_WINDOW, + 1, + 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) + adv_pct = st.slider( + "ADV Participation %", + 0.01, + 0.30, + float(DEFAULT_ADV_PCT), + 0.01, + help="Max percentage of Average Daily Volume to trade. e.g., 0.05 = 5% of daily volume.", + ) 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 - ) + vol_q_high = st.slider("High Volatility Quantile", 0.5, 0.95, DEFAULT_VOL_QUANTILE_HIGH, 0.05) 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="10 bps = 0.10%. Represents slippage and execution costs per trade.", + ) + / 10000 + ) allow_short = st.checkbox("Allow Short Selling?", value=False) else: st.subheader("5. Alert Thresholds")