Appearance
How to Tune FIN
FIN is designed to work with default configuration, but every stock is different. This page walks you through the settings you can adjust from the dashboard to get the best results for your specific situation.
Quick Overview — The 6 Tuning Areas
Understanding the Flow
Before diving into settings, here's how FIN's pipeline works and which tuning areas affect each stage:
| Stage | What Happens | Tuning Areas That Affect It |
|---|---|---|
| Collect | RSS feeds are checked, stock prices fetched, calendar events gathered | Feed frequency, cache settings, competitors |
| Analyze | News is scored for sentiment, surprises, and psychology | Surprise thresholds, decay rates |
| Predict | AI combines all signals into a thesis and price prediction | Prompt content, temperature, gating, ML tier |
| Validate | After market close, predictions are compared to actual results | MAPE thresholds, accuracy decay |
| Learn | Resolved snapshots train new GBM models | Training thresholds, drift detection |
1. RSS Feed Frequency
RSS feeds if one of the channels that FIN uses to stays informed about your stock. More frequent checking means FIN reacts to news sooner, which leads to more accurate predictions.
How to Adjust
Go to Scheduler → Feed Schedules in the dashboard. Each feed has its own schedule and settings.
Recommended Patterns
| Feed Type | Recommended Frequency | Why |
|---|---|---|
| Ticker-specific news (Google News, Yahoo Finance, etc) | Every 1–2 hours | Your stock's direct news matters most |
| Central bank / policy feeds (ECB, Fed) | Every 6 hours | These publish infrequently — checking more often wastes resources |
| Macro / market-wide news | Every 6 hours | Broad economic context, not time-critical |
| Reddit discussions (with buzz) | Every 6 hours | Social sentiment changes slowly; buzz scraping is heavier |
Feed Settings
| Setting | What It Does | Recommendation |
|---|---|---|
| Schedule | Cron expression for how often to check | Every 2–3h for ticker feeds, 6h for macro |
| Buzz | Also collect comments and engagement data | Enable for Reddit-style feeds |
| Buzz Comments | Number of top comments to scrape per post | 3 is a good default |
| Max Days | Ignore articles older than this (in days) | Default 3 — lower for faster processing |
| Extract Text | Full article text extraction | Enable if you want deeper analysis |
| Active | Toggle feed on/off | Disable feeds that consistently error |
💡
Tip: The biggest accuracy gains come from checking your ticker-specific feeds more often. If you only change one thing, increase the frequency of those feeds.
What to Tune Based on Your Stock
| Stock Type | Strategy |
|---|---|
| Active stock with lots of news | Check ticker feeds every 1–2 hours |
| Quiet stock with infrequent news | Every 4–6 hours is fine |
| Want faster processing | Lower Max Days (e.g., 2 instead of 3) |
| Want more context | Add more feeds, increase Buzz Comments |
| Resource-constrained | Reduce parallelism, increase cache TTLs |
2. Prediction Gating
When FIN's predictions have been consistently off, the system automatically skips predictions until accuracy improves. This protects you from bad forecasts.
How It Works
- FIN tracks prediction accuracy using MAPE (Mean Absolute Percentage Error)
- When MAPE exceeds your threshold, predictions are "gated" (skipped)
- After a cooldown period, FIN forces a real prediction to check if accuracy has recovered
- If still inaccurate, gating continues
Settings (Config → Prediction Config)
| Setting | Default | What It Does |
|---|---|---|
| Prediction Gating Enabled | On | Master switch — turn off to bypass all MAPE gating |
| MAPE Threshold (per horizon) | 8.0% | Predictions are skipped when error exceeds this |
| Skip Cooldown (per horizon) | 5 days | After gating, force a real prediction after this many skips |
| Accuracy Decay Days | 60 days | How far back to look when calculating MAPE |
How to Tune
MAPE Threshold controls how strict gating is:
| Setting | Label | When to Use |
|---|---|---|
| ≤ 5% | Strict | Conservative — skip early, only show high-confidence predictions |
| ≤ 10% | Moderate | Default — good balance for most stocks |
| ≤ 15% | Relaxed | Tolerate more error — useful for volatile stocks |
| > 15% | Lenient | Rarely gate — useful during earnings season |
Skip Cooldown controls how quickly FIN tries again after gating:
- Lower (1–3): Resume predictions sooner — good if you want to see updates even with lower accuracy
- Higher (7–14): Stay in safety mode longer — good if you only want high-confidence predictions
Accuracy Decay Days controls how fast old errors age out:
- Lower (30 days): Recover from bad spells quicker — old high-error predictions stop affecting gating sooner
- Higher (120+ days): Keep a longer memory — more stable but slower to recover from a bad period
💡
Tip: Start with defaults (8% / 5 / 60). If predictions seem too conservative, raise the MAPE threshold. If the system stays in gating too long, lower the accuracy decay days.
3. Signal Decay — Sentiment & Psychology
News and psychology signals lose relevance over time. Decay rates control how fast older signals lose their influence on predictions.
Why It Matters
A news article from yesterday is more relevant than one from two weeks ago. But for long-term predictions (60+ days out), even older articles carry some useful information. Decay rates let you control this balance.
Settings (Config → Decay Config)
Each horizon has two independent decay sliders:
| Setting | Short (1–10 day) | Medium (100 day) | Long (300–600 day) |
|---|---|---|---|
| Sentiment Decay | 0.3 | 0.1 | 0.05 |
| Psychology Decay | 0.15 | 0.08 | 0.04 |
What the Numbers Mean
Sentiment Decay controls how fast news articles lose weight:
- Higher (0.3–0.5): Older news fades fast — recent headlines dominate
- Lower (0.01–0.1): News retains influence longer — more memory of past events
Psychology Decay controls how fast bias scores age:
- Higher (0.15–0.3): Recent bias readings dominate (FOMO, anchoring, herding)
- Lower (0.01–0.08): Historical bias patterns stay relevant longer
When to Adjust
| Situation | Adjustment |
|---|---|
| Predictions overreact to old news | Increase sentiment decay |
| Predictions miss recent shifts | Decrease sentiment decay |
| Volatile, fast-moving market | Higher decay (focus on fresh signals) |
| Stable, trending market | Lower decay (longer memory helps) |
| Short-term predictions too noisy | Increase psychology decay for short horizon |
| Long-term predictions missing bias patterns | Decrease psychology decay for long horizon |
4. ML Training — Snapshots & Tiers
This is the heart of how FIN learns. Every prediction creates a feature snapshot — a complete record of everything that went into it. When the target date passes, the snapshot is resolved with the actual outcome, turning it into a training example.
What Are Feature Snapshots?
Each snapshot captures 86+ features:
| Category | Examples |
|---|---|
| Technical | RSI, ATR, trend direction, volatility, SMA crossover |
| Sentiment | Ticker sentiment, economy sentiment, momentum, buzz |
| Surprise | Count, magnitude, direction of recent surprises |
| Psychology | 12 cognitive bias scores (FOMO, anchoring, herding, etc.) |
| Fundamentals | P/E ratio, revenue growth, EPS growth, debt/equity |
| Calendar | Days to next earnings, days to next dividend |
| Market Context | Beta, correlation with SPY, relative strength |
| Options | Put/call ratio, implied volatility |
| Rates & FX | USD/EUR sovereign yields (2Y/5Y/10Y), EUR/USD exchange rate |
| Thesis | 18 features: conviction, regime, bull/bear probabilities, etc. |
After the target date, the snapshot is resolved with the actual return — the real percentage move from prediction date to target date. This becomes the training label.
Training Thresholds (Config → ML Training Config)
| Setting | Default | What It Does |
|---|---|---|
| Min Training Samples | 100 | Minimum resolved snapshots before any model trains |
| Min New Samples for Retrain | 20 | New snapshots needed to trigger automatic retraining |
| Horizon Min Samples — Short | 50 | Minimum for short-horizon Tier 1 activation |
| Horizon Min Samples — Medium | 40 | Minimum for medium-horizon Tier 1 activation |
| Horizon Min Samples — Long | 30 | Minimum for long-horizon Tier 1 activation |
| Drift MAE Threshold | 30% | MAE degradation that triggers a drift alert |
| Deactivate Underperform Days | 30 days | How long a bad model survives before auto-deactivation |
How Many Snapshots for Tier 1?
The system needs enough resolved snapshots to train a reliable model. Here's what to expect:
| Horizon | Snapshots per Day | Days to 50 Snapshots | With Backfill |
|---|---|---|---|
| Short (1, 2, 10 day) | 3 | ~17 days | Same day |
| Medium (100 day) | 1 | ~50 days | Same day |
| Long (300, 600 day) | 2 | ~25 days | Same day |
💡
Tip: With backfill (which runs automatically on first retrain), the system typically generates hundreds of resolved snapshots from your existing stock price history. This means Tier 1 training usually succeeds on the very first retrain — no waiting weeks for data.
Cold Start — What Happens with a New Ticker
When you add a new ticker, here's the journey:
Day 0: Tier 4
→
First Retrain: Backfill
→
Same Day: Tier 1
Day 0 — Tier 4 (Thesis Heuristic): No training data yet, so FIN uses the AI's qualitative thesis to make rough predictions. These are directionally useful but lack the precision of trained models.
First Retrain — Backfill: The system automatically reconstructs historical feature snapshots from your existing stock price data:
- Technical features — reconstructed from stored OHLCV price history using rolling calculations
- Fundamental features — computed on-the-fly from financial statements (P/E, revenue growth, etc.)
- Calendar features — derived from stored earnings and dividend dates
- Sentiment, psychology, surprise, thesis, options — left blank for these reconstructed records (the learning model handles missing information gracefully)
- Outcomes resolved immediately — the close price at each target date is looked up from stored data, so every backfilled snapshot becomes a resolved training example
Result: Typically hundreds of resolved snapshots in one run, enabling Tier 1 training immediately.
Drift Detection
Over time, market conditions change and old models may become stale. FIN monitors this automatically:
- Drift MAE Threshold (30%): When recent prediction error exceeds this percentage above the baseline, a drift alert fires
- Deactivate Underperform Days (30): A model that consistently underperforms for this many days is automatically deactivated
- Set to 0 to disable auto-deactivation
5. Surprise Detection
FIN scans articles for unexpected events — earnings beats/misses, economic surprises, guidance changes, and more. You can control how sensitive this detection is.
Settings (Config → Surprise Signals)
| Setting | Default | Range | What It Does |
|---|---|---|---|
| Min Ticker Relevance | 15 | 0–100 | Articles below this relevance score are skipped |
| Min Magnitude Threshold | 20 | 0–100 | Surprises below this magnitude are not stored |
How to Tune
| Setting | Lower (Permissive) | Higher (Strict) |
|---|---|---|
| Min Ticker Relevance | More articles analyzed — catches borderline cases | Only highly relevant articles — less noise |
| Min Magnitude Threshold | Minor deviations captured — more data points | Only big surprises — cleaner signal |
💡
Tip: For most stocks, the defaults (15 relevance, 20 magnitude) work well. Lower the thresholds if you want more data points for ML training. Raise them if you're seeing too many false positives.
6. Prompt Content — What the AI Sees
You can toggle on/off every data section in the AI's briefing. All on = most informed prediction. Turn off sections to experiment with how different data affects the forecast.
Prediction Prompt (Config → Prediction Prompt)
These control what data the AI sees when making its initial prediction:
| Category | Sections | What They Provide |
|---|---|---|
| Sentiment | Ticker Sentiment, Economy Sentiment, Country Economy Sentiment | Positive/negative feeling from news |
| Reliability | Ticker Uncertainty, Economy Uncertainty, Country Uncertainty | How trustworthy each sentiment signal is |
| Momentum | Avg Buzz Score, Re-acceleration, Momentum Score, User Interest | How much attention and momentum the stock has |
| Fundamentals | Estimates Context, Financials Context | Analyst forecasts, revenue, margins, balance sheet |
| Events | Surprise Context, Surprise Outcomes Context | Recent unexpected events and past reactions |
| Psychology | Bias Context | 12 cognitive bias scores weighted by horizon |
| Calendar | Calendar Context | Upcoming earnings, dividends, events |
| Market | Market Context, Competitor Context | Benchmark comparison, peer performance |
| Technical | OHLCV Context | Price action, RSI, ATR, trend, volume |
| Options | Options Context | Put/call ratios, implied volatility |
| Self-awareness | Accuracy Context, ML Knowledgebase | Past prediction accuracy, model data |
Self-Critique Prompt (Config → Self-Critique Prompt)
After making its initial prediction, the AI reviews its own work. These control what it sees during that review:
| Section | Purpose |
|---|---|
| Ticker Sentiment | Check if prediction aligns with stock-specific news |
| Economy Sentiment | Check if prediction aligns with economic conditions |
| Momentum Score | Check if prediction aligns with recent trends |
| Re-acceleration | Check if prediction accounts for accelerating/decelerating signals |
| Surprise Summary | Check if prediction accounts for recent surprises |
LLM Temperature (Config → LLM Temperature)
Controls how deterministic the AI's outputs are:
| Range | Label | Effect |
|---|---|---|
| 0.0–0.2 | Deterministic | Consistent, repeatable outputs — best for predictions |
| 0.2–0.4 | Precise | Slight variation — default (0.2) sits here |
| 0.4–0.7 | Balanced | More varied — useful for thesis generation |
| 0.7–1.0 | Creative | High variation — rarely needed |
| 1.0–2.0 | Experimental | Very random — not recommended for predictions |
💡
Tip: Keep temperature at 0.2 for predictions. Only increase it if you want more diverse thesis reasoning. Lower it to 0.0 for maximum consistency.
How to Experiment
- Start with everything on — the most informed predictions
- If predictions seem erratic, try disabling the uncertainty sections
- If you want to test a theory, compare accuracy with and without a specific section
- Changes take effect on the next prediction run — no restart needed
- Disabling sections reduces token usage if you're monitoring costs
The Tiered Model Architecture
FIN uses a tiered system to produce the best predictions available. Each tier is a different method, and the system automatically picks the best one.
TIER 1Your Personal Model
5 quantile GBM models (q10/q25/q50/q75/q90) trained specifically on your ticker. Full prediction distribution with confidence bands. Best accuracy.
TIER 2Pooled Model
Trained across all users on the same instance. Produces median (q50) predictions only. Activates when your personal data is too sparse.
TIER 3Sector Transfer
Uses a model trained on a similar company in the same sector. q50 only, with 30% confidence penalty. Fallback when no same-ticker model exists.
TIER 4Thesis Heuristic
Always available — no training needed. Uses the AI's qualitative thesis (direction + conviction) to produce rough price estimates.
How Tiers Are Promoted
After each retrain, the system evaluates which tiers are available:
- Tier 1: Your personal GBM models are trained for the horizon — activates when enough resolved snapshots exist
- Tier 2: A pooled model exists — activates when user-specific training produces fewer than 3 models
- Tier 3: A same-sector model exists — activates automatically if another stock in your sector has a trained model
- Tier 4: Always available — the fallback when no trained model exists
Performance Gating
Even when a tier is trained, it must prove it's still accurate. The system checks the last 20 validation results:
| Condition | Action |
|---|---|
| Coverage < 40% (actual price falls outside bands too often) | Tier downgraded one level |
| Interval score > 1.5× the stock's own baseline — ranges too wide or too inaccurate vs that instrument's norm | Tier downgraded one level |
For example, if your Tier 1 model's coverage drops below 40%, the system automatically falls back to Tier 2. This prevents stale or inaccurate models from producing bad predictions. The model's weight in the blend also scales with its win rate — a badly-losing model is near-excluded rather than dominating.
These four thresholds — the coverage threshold, the interval-score degradation factor, the interval-score default threshold, and the floor — are per-ticker and adjustable from the dashboard under Config → ML Accuracy Gate. If you leave them unset, the system defaults (coverage 0.40, degradation 1.5×, default 50%, floor 20%) apply.
What This Means for You
- You don't need to manage tiers — the system handles promotion and demotion automatically
- Tier 1 is the goal — it gives the best predictions with full confidence bands
- Backfill accelerates Tier 1 — typically activates on the first retrain, not weeks later
- Performance gating protects you — bad models are automatically demoted
Other Settings Worth Knowing
Market Context (Config → Prediction Prompt)
When enabled, FIN compares your stock to market benchmarks (SPY, QQQ) and your sector ETF. It computes:
- Beta — how much your stock moves relative to the market
- Correlation — how closely your stock tracks the market
- Relative Strength — whether your stock is outperforming or underperforming
Toggle off via Config → Prediction Prompt → Market Context if you want faster processing for niche stocks that don't correlate with benchmarks.
Competitors (Competitors Page)
Add peer tickers (e.g., ORCL for SAP) for relative performance analysis:
- System auto-generates RSS feeds for competitors
- Competitor news goes through the same sentiment/surprise pipeline
- Enables the AI to distinguish sector-wide moves from company-specific signals
- Adds competitor-aware ML features (cross-impact, relative strength)
Tips for Getting Started
🚀
Start with defaults. They work well for most stocks. The system is designed to learn and improve on its own.
📊
Check the Jobs page to monitor what stage the pipeline is in. You can see feeds being processed, predictions running, and models training.
📈
Watch accuracy improve over time on the Predictions page. The system needs 1–2 weeks to build enough data for Tier 1 models.
📡
Tune RSS frequency based on your stock's news volume. Active stocks benefit from every 1–2 hour checks. Quiet stocks are fine at 4–6 hours.
🔬
Use Config → Prediction Prompt to experiment. Toggle sections on/off and compare accuracy over the next few days to see what data helps most for your stock.
⏱️
After 1–2 weeks, the system should have enough data for Tier 1 training. Check the Accuracy tab on the Predictions page to see how it's progressing.
How It Works Under the Hood
Click to expand — a plain-language look at the engine
From Prediction to Training Data
Snapshot: Every prediction stores a complete record of everything that went into it — the stock's technical indicators, financial fundamentals, psychology scores, calendar events, market context, and options data.
Resolution: After the target date passes, the accuracy tracker checks the prediction against what actually happened and calculates how far off the forecast was, as a percentage.
Training: Once enough resolved records accumulate, the system uses them to train fresh models. The more real outcomes a model has learned from, the more it is trusted.
Backfill: Training From Day One
A new stock doesn't have to wait weeks to build up a track record. When the system first retrains, it rebuilds the historical records from the stock's existing price history:
- Technical data (RSI, volatility, trend indicators) — recalculated from stored prices, no re-fetching needed
- Fundamentals (P/E, debt levels, revenue growth) — recomputed on the fly from the financial statements
- Calendar data (days to earnings, days to dividend) — derived from stored upcoming events
- Historical outcomes — for each past trading day, the system looks up what the price did afterwards, so every rebuilt record immediately becomes a fully resolved training example
Signals that can't be reconstructed from history alone (news sentiment, psychology, surprises, options) are simply left blank for those historical records. The learning model is designed to handle missing information gracefully, so the gap doesn't hurt quality.
Backfill kicks in automatically whenever the number of real training records for a horizon falls below half of the minimum needed — so short, medium, and long horizons each top up independently.
Keeping Bad Models Out
Every trained model is re-evaluated against its recent performance. If the actual price lands outside the predicted range too often, or the range quality degrades well beyond that stock's own normal, the model is downgraded one level (Tier 1 → 2 → 3 → 4). A poor model's output is never shown to you.
How the Confidence Range Is Calibrated
The system goes out of its way to make the confidence range honest. On past data it adjusts the range so the actual price lands inside it about 80% of the time. If recent results show the range was already accurate enough, no adjustment is applied. This is why an "80% band" is reliable, no matter how confident the model feels.
How Old News Loses Influence
News and psychology signals fade over time. The system applies a "decay rate" so older articles carry progressively less weight:
- Short-horizon predictions — decay is fastest (news from yesterday matters, news from last week fades quickly)
- Medium and long horizons — decay is slower, because even older signals can be relevant further out
The actual decay rates you can tune are described in the Signal Decay section above.
How Surprises Are Detected
Surprise detection works in two stages:
- First pass: Articles are screened for language that typically announces an unexpected event — earnings beats or misses, economic surprises, guidance changes.
- Second pass: The AI reads the shortlisted articles and scores each one for how genuine the surprise is, its magnitude (0–100), its direction (good or bad), how relevant it is to the tracked stock and to the broader market, and how confident the AI is in its assessment.
Only surprises that clear your minimum relevance and magnitude settings (the Surprise Detection settings above) are kept.
How Psychology Weighting Works
Each of the 12 biases matters more or less depending on how far out the prediction looks. For example:
- FOMO and herding weigh most on short-term forecasts — they're near-term noise
- Confirmation and overconfidence peak at the medium horizon — that's where they form
- Anchoring and narrative matter most for long-term forecasts — reference prices and stories compound over time
So the same news can move a 1-day prediction differently than a 30-day one.
When Confidence Is Automatically Lowered
The confidence score is also an honesty check on the data feeding the model. FIN trims confidence when:
- The price data is stale
- There are no upcoming calendar events
- There's no engagement or news data about the stock
- Recent predictions have been notably off, or the range has missed too often
It gets a small boost when the AI and the model agree, and is reduced whenever the forecast implies a very large move or when the two methods point in opposite directions. In other words, the confidence number reflects both how sure the model is and how trustworthy its inputs were.

