Changelog
User-visible changes, newest first. Internal refactors, infrastructure changes, and bug fixes that don’t affect what users see are not listed here.
v0.16.6 — 2026-09-17
- Charts no longer fail to load when the market data provider sends an incomplete latest daily candle. The incomplete session is left out instead of breaking the chart, and daily, weekly and monthly views all keep working.
- Manual Investments now has a “Value of tracked investments” chart showing the market value of your recorded purchases next to the amount invested, over the last 12 months or since your first recorded purchase. It is based on your recorded purchases: sales and edits aren’t tracked, so each purchase is assumed held from its recorded purchase date. If some investments can’t be included, for example because they have no purchase date or no price history, the chart says how many are covered and lists each one left out with the reason.
v0.16.5 — 2026-09-16
- Backtest’s allocation donut tooltip is now readable in both light and dark themes, and the composition table’s Sector column is filled in: stocks show their sector, ETFs, gold and debt funds show their instrument type, and a holding whose sector can’t be determined shows ”—”.
- Geopolitical events always get a proper severity (Critical, High, Medium or Low), so globe markers use their severity colour instead of occasionally appearing dark or blank, and the severity filters show the standard labels.
- The Stress Playbook now works when your holdings come from a saved snapshot, for example after a broker session expires, instead of showing an empty playbook. When a snapshot is used, the playbook says so.
- Portfolio Impact and the Exposure Graph now connect geopolitical events to your holdings again, including saved-snapshot holdings, so the Overview shows affected holdings, the share of portfolio value involved and the estimated portfolio impact.
- Event cards, Timeline badges and per-event severity history bars now use the same severity colours as the globe, instead of showing every event as low severity.
- The public Geopolitical Intelligence demo is now complete, with consistent illustrative data on every tab: globe, events, exposure graph, timeline, source operations, monitors, news feed, stress playbook and portfolio impact.
v0.16.4 — 2026-09-15
- Manual Investments now identifies your funds by name rather than the provider’s internal symbol. Allocation and Movers show the fund name, and the Holdings table leads with the name and shows the symbol beneath it.
- Mutual Fund Look-through sector labels are now readable, so a holding’s sector reads “Financial Services” instead of “financial_services”.
- Fixed duplicate dividends in Tax Center. Kite exports dividends in two formats — one that includes an ISIN column and one that does not — and importing the same payout from both created two rows for a single dividend, inflating dividend totals. Imports now recognise a dividend as already present regardless of which export it came from, including against dividends imported before this fix. Duplicate rows created by earlier imports are cleaned up separately.
- Decision Replay’s security picker is now a compact searchable list instead of a large grid of cards, so the price history and sell-decision analysis are reachable without scrolling past the picker.
- Fixed the Market Mood Index headline disagreeing with the Mood Trend chart. On a date where some sector ETFs report data but the NIFTY has no trading session, the headline could adopt that non-trading date and show a score built from a small fraction of the usual signals. The headline now always reflects the most recent real market session, matching the chart.
- Home now shows a compact Market Mood snapshot between Today’s Stocks and Fundamentals, with the current score, mood, signal coverage, and a link to Market Overview. When signal coverage is low it shows the mood and the coverage rather than a precise score.
v0.16.3 — 2026-09-15
- Reordered the Home dashboard so your portfolio value and today’s movement come first, with slower analysis and narrative content lower down.
- Home’s Fundamentals figures (P/E, beta, alpha, estimated return) now appear as soon as they are ready instead of waiting for the AI summary to finish generating.
- Home now loads the Daily Brief, AI summary and holding events only as you scroll to them, so the top of the page is usable sooner.
- Fixed the Holding Events count badge, where the calendar icon sat above the label instead of beside it.
- Added official broker logos across the broker status control and Broker Settings, and corrected outdated broker colour treatments.
- The broker status strip now shows all six supported brokers; Groww was previously missing.
- Improved the Broker Settings card layout on narrower desktop and tablet widths.
- Restored the Mutual Fund Look-through section on the public Manual Investments demo, which was rendering empty.
- Demo fund compositions are now clearly labelled as illustrative rather than live fund holdings.
v0.16.2 — 2026-09-14
- Consolidated Home’s portfolio summary so Current Value, Invested, and P&L now appear once, at the top of the page, instead of being repeated inside Portfolio Allocation.
- Removed the redundant holdings table at the bottom of Home. Use the new View links next to Holdings and Open Positions in the summary card to jump to the dedicated Holdings and Positions pages.
v0.16.1 — 2026-09-14
- Internal: hardened an automated backend test for the ETF tracker against a latent clock dependency that made it fail based on the current calendar date rather than actual behavior, restoring reliable backend CI. No user-facing change.
v0.16.0 — 2026-09-14
- Fixed the Dependency Graph page showing an empty graph when you had no active broker connection but did have recently cached portfolio holdings. It now resolves holdings the same way Portfolio and Home already do, so cached-only holdings populate the graph correctly, and a broker disconnect or reconnect now refreshes the graph instead of leaving it stale.
- Fixed Today’s Stocks occasionally showing a same-session but hours-old Yahoo Finance price as if it were the current move. A Yahoo quote now also has to be recent enough relative to the trading session, not just from the same date, to be shown; a holding that fails this check is listed separately instead of shown with a stale figure. Broker-priced holdings are unaffected.
v0.15.10 — 2026-09-11
- Fixed Today’s Stocks on Home showing a previous session’s move as today’s for some holdings, which made the day’s P&L and percentage disagree with your broker. Day moves for Zerodha holdings now use Kite’s own last price and previous close.
- Holdings priced from market data now count toward today’s figures only when their quote is from the current trading session; any holding that can’t be verified is listed on the card instead of being shown with an old move.
- Fixed the NIFTY 50 comparison on Today’s Stocks, which could measure the index against the wrong previous close.
- Today’s Stocks now shows which trading session its figures describe, not just when the card was last refreshed.
v0.15.9 — 2026-09-11
- Fixed Stock Evaluation failing on every run: the retired NVIDIA model has been replaced with the verified nvidia/nemotron-3-super-120b-a12b, and an outdated model setting is now remapped automatically instead of breaking the service.
- Stock Evaluation now retries brief AI-provider outages and falls back from NVIDIA to Gemma to Gemini Flash, so one provider’s hiccup no longer fails the whole evaluation.
- When an evaluation does fail, the error now shows which AI provider failed and why, without exposing credentials, and saved reports record which model actually produced each section.
v0.15.8 — 2026-09-11
- Fixed NVIDIA stock-evaluation failures with automatic Gemma fallback and credential-safe provider error handling.
v0.15.7 — 2026-09-10
Fixed the legacy /arkfolio/ trailing-slash compatibility redirect discovered during the v0.15.6 production checkpoint.
v0.15.6 — 2026-09-10
Made ArkFolio’s dedicated subdomain the canonical root URL while preserving temporary redirects from legacy BlueArk links.
v0.15.5 — 2026-09-09
- Fixed the Daily Brief showing an empty portfolio — no value, no unrealised P&L, and no movers — even when brokers were connected and holdings were visible on Home and Holdings.
- The Daily Brief now uses your saved holdings snapshot when a broker can’t be reached, and labels it as a saved snapshot rather than presenting it as live data.
- The Daily Brief now tells “holdings unavailable” apart from “no holdings”, so it no longer suggests reconnecting a broker that is already connected.
- Portfolio Impact on the Daily Brief now counts only positions you actually hold; symbols you track only as a thesis no longer appear as portfolio movers.
- Portfolio Impact mover counts and weight percentages now describe your whole portfolio, while the list beneath shows your largest holdings moves.
- Refresh on the Daily Brief now re-fetches your holdings instead of rebuilding the same stale view.
- Connecting a broker now updates the Daily Brief immediately, instead of leaving outdated portfolio data in place for up to ten minutes.
- Action Center alerts derived from your holdings are no longer skipped when the Daily Brief could not read your portfolio.
- Restored the generated-at timestamp on the Daily Brief summary card on Home.
- Fixed the public demo’s Daily Brief, where catalyst timings displayed incorrectly and the market-headlines section was empty.
v0.15.4 — 2026-09-09
- Fixed a Railway infrastructure issue that could silently stop the scheduled beta-cache and ETF NAV refresh jobs from running their intended job, instead of failing visibly.
- Restored live NAV and premium/discount data on the ETF Tracker page.
- Added automated monitoring so a future NAV data refresh outage is detected within hours instead of going unnoticed.
v0.15.3 — 2026-09-09
- Fixed Portfolio Beta and Alpha on the Home page, which had stopped showing values for every holding.
- The “N of M holdings” coverage note under Home’s portfolio metrics no longer counts closed or fully-sold positions, so it now accurately reflects data coverage for your open holdings.
v0.15.2 — 2026-09-09
- Added automatic sign-out after 30 minutes of inactivity, protecting unattended browser sessions.
- Active sessions are now renewed automatically while the user continues using the app.
- Expired or invalid application sign-in now redirects cleanly to the login page, without requiring a manual page refresh.
- Session inactivity and sign-out are now synchronized across every open ArkFolio browser tab.
- Application authentication failures are now correctly distinguished from broker-connection issues, so a broker session problem no longer signs the user out of the app.
v0.15.1 — 2026-09-06
- Fixed navigation in the public demo (bluearklabs.com/arkfolio/demo) — pages now open correctly instead of silently returning to Home.
- Notifications, search, and other in-demo links now consistently stay inside the demo instead of occasionally exiting to the sign-in page.
- Demo search no longer surfaces the internal Job Scheduler tool, matching the rest of the demo’s navigation.
- Added a working Dependency Graph to the demo, showing correlation and sector relationships across a sample portfolio.
- Added a thesis-creation flow to the demo (saving still requires signing up, consistent with other demo actions).
- Blog post authoring is intentionally not available in the public demo.
- Improved the demo’s sample portfolio to include a gold ETF holding, giving portfolio analytics, ETF data-quality indicators, and instrument breakdowns a more realistic mix instead of uniformly perfect figures.
- Fixed the demo’s stock-symbol lookup, which could fail while creating a thesis.
v0.15.0 — 2026-09-06
Decision Replay V2 — final stabilization
- Completes the Decision Replay V2 historical decision-journal experience across security-first grouping, a unified adjusted-price timeline with T1→Tn sell markers, “What happened next?” (1W/1M/3M/since) outcomes, and a searchable cross-security overview.
- Adds a market-identity safety guard to the individual replay view: if the same signed-in user’s own trade history shows more than one ticker recorded under the same security identity, that replay is now marked unavailable instead of risking a mismatched price history — the same protection the unified timeline already had.
- Hardens deterministic ordering, timezone and date handling, and failure-state resilience across the whole feature.
- Adds canonical Decision Replay methodology documentation and brings the feature’s frontend test suite into continuous integration.
v0.14.7 — 2026-09-05
Decision Replay V2D
- Adds a searchable cross-security overview for recent sell decisions, so you can scan and jump between securities without a dropdown.
- Shows a factual security and decision count for the Decision Replay window (last 365 days).
- Consolidates trade navigation into the “What happened next?” table — the standalone Sell Decisions list is gone, and every past decision remains selectable from one place.
- Adds a persistent selected-decision summary showing the trade date, quantity, and recorded execution price, which stays visible even if that decision’s individual price-history lookup is still loading or fails.
- If a search filters your currently-selected security out of the list, the page now says so explicitly instead of leaving it ambiguous — your selection is never changed by searching.
- Improves loading states, error handling, responsive layout, and accessibility across the whole Decision Replay page.
- Preserves all existing Decision Replay price-history methodology exactly as before.
v0.14.6 — 2026-09-05
- Decision Replay now shows a “What happened next?” summary for each historical sell decision (T1..Tn) on a security’s timeline: adjusted market-price movement at 1 week, 1 month, 3 months, and since the sale.
- Horizon dates use calendar-aware arithmetic (a true calendar month/quarter, not 30/90 days) and are measured from the first available market observation on or after each target date.
- Horizons that haven’t happened yet, or have no usable market observation nearby, are shown as unavailable rather than a misleading zero.
- One adjusted-price history is reused per security across all of its sell decisions — no extra data fetches per event.
- The Sell Decisions list and the new outcomes table now present events in the same order, earliest sell first.
v0.14.5 — 2026-09-05
Decision Replay V2B
- Adds a unified adjusted-price timeline for each selected security, showing its recent market-price history in one place.
- Marks each recorded sell decision as T1/T2/T3/… directly on that timeline.
- Selecting a marker on the timeline or an item in the decision list stays in sync — both point at the same selected decision.
- The existing post-sale replay for the selected decision is unchanged.
- Multiple sells made on the same day remain listed and selectable as separate decisions.
- Switching between decisions for the same security no longer re-fetches the timeline, only switching to a different security does.
v0.14.4 — 2026-09-05
- Decision Replay now groups repeated sells of the same stock or ETF together instead of listing every past sell separately — select a security once, then pick which specific sell to replay.
- Each individual past sell is still shown and replayed exactly as before; grouping only changes how they’re organized in the list, never what’s recorded.
- Sells of the same security are labeled in order (earliest first) so it’s clear which past decision you’re looking at.
v0.14.3 — 2026-09-04
- Fixed Decision Replay so one-symbol market-price history loads correctly after the Yahoo Finance client began returning nested price columns.
v0.14.2 — 2026-09-04
- Fixed Decision Replay so price-history dates are handled consistently when the provider returns string-indexed data.
v0.14.1 — 2026-09-04
- Fixed Decision Replay so selecting a past sell reliably loads its replay data when stored trade timestamps include timezone information.
v0.14.0 — 2026-09-04
- Added Decision Replay, a new page where you can select a past sell of a supported stock or ETF and see how the security’s adjusted market price moved afterward, normalized so the first trading day after the sale starts at 100.
- The recorded sale price and date are shown as reference information only — they are not used to calculate the price movement shown, since a recorded fill price and the adjusted historical price series aren’t guaranteed to be on the same basis.
- Added a lightweight Decision Replay entry point on the Homepage that works independently of your current holdings.
🤖 Generated with Claude Code
v0.13.0 — 2026-09-03
- Replaced unsupported ETF scoring and recommendation concepts with factual research, exact-peer comparison, neutral discovery, execution context, and historical ETF support.
- Strengthened stale and missing quote handling and descriptive NAV premium behavior.
- Added canonical instrument classification, including ETF/Gold/Debt identity, aligned Homepage allocation analytics, and equity-only sector and market-cap treatment.
- Deferred official ETF TE/TD metrics (#215) and debt ETF backtest methodology (#228).
v0.12.0 — 2026-09-02
- Corrected the canonical total-return benchmark identities for the approved debt ETF universe, including missing mappings and price-index variant corrections.
- Added debt-specific category and lifecycle handling, including historical treatment for matured target-maturity ETFs.
- Removed invalid equity-style debt comparison, deviation, and trading-signal semantics; benchmark/provider availability is separated from debt market-liquidity and ranking semantics.
- Added descriptive debt ETF surfaces for canonical benchmark, maturity/lifecycle, published NAV premium/discount, quote freshness, spread, and reported volume.
- No custom debt TE/TD, YTM or duration estimation, new market-data provider, or database schema migration.
v0.11.2 — 2026-09-01
- Security: prevent credential-bearing service connection URLs from being emitted to application logs.
v0.11.1 — 2026-08-31
- Fixed NVIDIA HTTP 410 failures caused by unavailable hosted-model configuration. The production NVIDIA catalogue no longer offered the previously configured model IDs.
- The default NVIDIA model is now
nvidia/nemotron-3-nano-30b-a3b, and the model remains configurable. - Known 410-proven model IDs are explicitly rejected before requests are sent.
- The NVIDIA chat-completions endpoint and response contract are unchanged.
- No database migration is required.
v0.11.0 — 2026-08-31
- Corrected five international ETF benchmark mappings to their exact official total-return mandates, and preserved price-only provider series as separate non-comparison identities.
- Added explicit comparison-unavailable containment for international and commodity ETFs when valuation-compatible inputs are not available, while preserving valid published-NAV premium/discount context.
- Added effective-dated domestic gold and silver valuation contracts and deterministic regression coverage; ETF recommendations remain disabled.
v0.10.1 — 2026-08-30
- Four ETFs now show their correct benchmark: two BSE SENSEX Next 30 index funds were being compared to the plain SENSEX index, a Nifty Financial Services Ex-Bank fund was being compared to the full (with-banks) index, a BSE Low Volatility fund was being compared to the Nifty Midcap 100 index, and a BSE MidCap Select fund was being compared to a similarly-named but different NIFTY index.
- 92 ETFs that previously showed no benchmark comparison at all — across smallcap, sector (defence, chemicals, manufacturing, private banks, consumption, and more), and factor/smart-beta (momentum, quality, value, alpha, equal-weight) fund families — now show their correct benchmark identity.
- One fund’s benchmark remains intentionally unresolved pending further review, rather than guessed, after finding two similarly-named indices it could plausibly track.
v0.10.0 — 2026-08-30
- The ETF Performance Tracker’s “Prem/Disc” column now shows a real premium or discount versus each fund’s officially published NAV (sourced from AMFI), instead of always being blank. A ”~” marks values compared against the most recently published NAV rather than the same trading session, since AMFI typically publishes NAV later in the evening; hovering the column (or opening an ETF’s detail panel) explains exactly which comparison applies.
- Several gold, silver, healthcare, and PSU Bank ETFs that previously showed no benchmark data now also show NAV and premium/discount correctly, after a data-mapping issue in their fund registration numbers was traced and fixed.
- Two India-listed ETFs tracking US indices (Nasdaq-100 and S&P 500 Top 50) show a persistently large premium to NAV, independently confirmed on two separate days — consistent with these funds having new-unit creation temporarily halted under regulatory overseas-investment limits. This reflects a real market condition, not a data error.
v0.9.3 — 2026-08-30
- The ETF Performance Tracker now identifies each ETF’s benchmark from its ISIN (fund registration number) rather than the exchange’s raw listing text, which was found to contain data errors. Two ETFs had swapped benchmark identities (a Nifty Bank ETF was compared to the Nifty Next 50 index, and vice versa) — both now show their correct benchmark.
- A healthcare-sector ETF, and eight other “Nifty 500”-family ETFs, were being compared to the broad Nifty 50 index due to a text-matching error. All nine now show their correct, more specific benchmark.
- Fourteen “smart beta” ETFs (value, quality, low-volatility, equal-weight, and momentum strategies) are no longer compared to a broad index they don’t actually track. Where the fund’s real benchmark isn’t yet available for comparison, that is now shown plainly instead of a misleading substitute.
- Gold and silver ETFs are no longer benchmarked against US-dollar-denominated futures contracts, which was flagged as inaccurate in the previous release. A correct domestic comparison will follow in a future release; until then these ETFs show no benchmark comparison rather than a wrong one.
- A daily automated check now monitors whether each benchmark’s underlying price feed is still updating, so a stale or broken data source is caught and shown as unavailable rather than silently continuing to compare against outdated numbers.
v0.9.2 — 2026-08-29
- ETF risk metrics no longer inherit corrupted price history. For a number of Indian ETFs the market-data provider never publishes unit-split factors, so a one-day drop of 90% or more survived into the “adjusted” price series and was read as a real return. Two ETFs tracking the same Nifty Bank index reported market-risk (beta) figures of 1.39 and 1.02; a gold ETF reported 1.16, implying it carries full stock-market risk. Those figures reached the Fundamentals page, Red Flags, the Graph view and the AI assistant’s context.
- Fourteen historical corporate actions are now corrected using the fund house’s own published NAV, confirmed against AMFI’s records. Beta for the affected ETFs now agrees with clean funds tracking the same index, and the gold ETF’s market risk correctly reads as approximately zero.
- Where a suspicious price move cannot be confirmed against an authoritative source, the ETF’s beta is now reported as unavailable rather than being shown as a plausible but fabricated number. Nineteen ETFs (6% of the ETF list) are affected. A split factor is never guessed from the size of a price move.
- Long runs of frozen, untraded prices and stale price histories are also detected. Funds that are genuinely flat but actively traded — liquid and overnight ETFs — are unaffected and keep their figures.
- No change to how beta is calculated, to any quality threshold, or to any non-ETF holding. ETF buy/sell recommendations remain switched off from the previous release.
v0.9.1 — 2026-08-29
- The ETF Performance Tracker no longer shows buy-zone recommendations, suggested limit prices, or a ranked “opportunities” strip. These were found to occasionally fire on bad market data — such as an unadjusted stock split or a stale benchmark price — and could show a confident “buy” signal that didn’t reflect reality. Price, volume, liquidity, and benchmark comparisons where available remain on the page.
- Removed the ETF tracker’s AUM, Expense, and “Discount to iNAV” premium filter, which could never show real data and were always blank.
- The ETF tracker’s “Deviation” column is now labeled “1D deviation,” with a plain-language note on what a negative value means, and the benchmark name now shows its currency and type (for example, “COMEX Gold futures (USD)”) so a currency mismatch isn’t hidden behind a bare ticker.
🤖 Generated with Claude Code
v0.9.0 — 2026-08-29
- A stock’s “Beta” (market sensitivity vs. the NIFTY 50) shown on the Fundamentals page, the stock dependency graph, and Red Flags now uses the same corrected, NIFTY-relative calculation as Home and the DCF valuation report — these could previously disagree, even in sign, for the same stock on the same day.
- The “High Beta” red flag now uses that corrected beta with a re-tuned threshold, instead of misfiring on distorted, unrelated-market data.
- Several “Beta” labels across the app now clarify they’re measured against the NIFTY 50 index.
- The AI stock evaluation and chat assistant now describe a stock’s market sensitivity with its benchmark and confidence, instead of an unlabeled number that could be misread as unrelated market risk.
- Removed an unused “beta” field from stock comparison reports that was never shown or used in comparisons.
v0.8.5 — 2026-08-29
- Fixed two stale entries in the restructuring engine’s stock universe left over from completed NSE corporate actions: a retired ticker (
TATAMOTORS, replaced byTMPVafter its Oct 2025 demerger) and a renamed one (ZOMATO, renamed toETERNAL) could previously surface as a buy/rebalance recommendation pointing at a symbol the market data provider no longer resolves.
v0.8.4 — 2026-08-29
- Hardened how a stock ticker rename or corporate action (like a demerger) is handled in the background stock database: a renamed security is now reconciled in place using its stable identifier, instead of leaving a stale duplicate entry behind. A portfolio DCF report also no longer skips a holding whose broker ticker changed ahead of the daily sync.
v0.8.3 — 2026-08-29
- Fixed a gap where a stock’s ArkFolio-native beta (used by Home’s portfolio metrics and the DCF valuation engine) could silently go missing from the cache with no automatic retry — coverage now self-heals via a scheduled job instead of depending on a manual recompute. Also fixed a data-quality issue where a recompute running mid-week could include that week’s not-yet-finished trading days as if the week were already complete.
🤖 Generated with Claude Code
v0.8.2 — 2026-08-29
- Removed a stale, delisted
TATAMOTORSentry from the stock/screener universe (superseded by the Oct 2025 Tata Motors demerger’sTMPV/TMCV), which was polluting search/screener results and wasting a daily beta-recompute fetch. No currently-held position was affected.
🤖 Generated with Claude Code
v0.8.1 — 2026-08-28
- Fixed an incident where a Yahoo Finance outage could make the whole app unresponsive for minutes at a time, including sign-in and the health check. Portfolio and market metadata now falls back to a recent cached value, or shows as temporarily unavailable, instead of the app hanging.
v0.8.0 — 2026-08-28
- Added ArkFolio-native, NIFTY-relative beta as an opt-in cost-of-equity input for the DCF valuation engine, off by default. Provider beta and the existing
[0.5, 2.0]floor/cap remain in effect until this is explicitly enabled.
🤖 Generated with Claude Code
v0.7.2 — 2026-08-28
- Fixed a resilience gap in the (opt-in, off-by-default until this release) native-beta cache where the entire cache could expire in one synchronized wave if the daily recompute job missed a run, and where a single transient data-provider hiccup could silently erase previously valid beta values instead of leaving them in place.
v0.7.1 — 2026-08-28
- Fixed the native-beta daily recompute workflow’s timeout, which was too short for the real symbol universe and would have prevented the (currently inactive) cache from ever warming.
v0.7.0 — 2026-08-28
- Added ArkFolio-native, NIFTY-50-relative beta as an opt-in, server-side capability (off by default). Portfolio beta and alpha continue to use today’s values until this is explicitly enabled.
- Home’s AI portfolio summary now states which beta methodology (native or provider) produced the displayed figure.
- Relabelled the Home “Alpha” tile to state its measurement window and benchmark (
Alpha (3M vs NIFTY 50)).
🤖 Generated with Claude Code
v0.6.15 — 2026-08-27
- Fixed a release-pipeline gap where a completed release could tag and publish a commit that Railway’s production deployment never actually built, silently leaving
/healthreporting the previous version even though the underlying code fix was already live. Releases are now finalized before merging, so there is no window for the published release and the deployed code to disagree.
v0.6.14 — 2026-08-27
- AI stock evaluations now actually use fundamentals data. The multi-agent stock-evaluation feature (Fundamentals Analyst, Technical, News/Macro, Portfolio Fit, Bull/Bear Debate, Risk Review, Final Verdict) has been silently running without P/E, P/B, ROE, dividend yield, beta, margins, debt/equity, or 5-year financial history since the feature launched — a response-shape mismatch reduced this data to an empty object before it ever reached the AI, with no visible error anywhere in the product. Every evaluation now receives the real fundamentals bundle.
v0.6.13 — 2026-08-27
- Holdings’ Valuation tab and the Watchlist detail drawer now load fundamentals data faster — the response is about 90% smaller per stock, since neither view needs the 5-year financial statements or price-history data the fundamentals endpoint used to send along regardless.
- Fundamentals lookups are more resilient for a symbol the app doesn’t recognize (e.g. after a rename or delisting) — these now fail fast and recover automatically shortly after, instead of the request working harder the more it fails.
v0.6.12 — 2026-08-27
-
Dividend yields were being reported up to 100× too high, and are now correct. A helper treated any yield at or below 1 as a decimal fraction and multiplied it by 100, so Reliance’s real 0.46% showed as 46% and Kotak Bank’s 0.16% as 16%. Anything the rescale pushed past 50% was dropped from the portfolio figure entirely, which silently hid three of ten holdings in an ordinary large-cap portfolio. On a live basket the reported portfolio yield falls from 15.13% to 1.84%, with every holding now counted. The same defect existed in four other places — the stock screener (which multiplied by 100 unconditionally, giving TCS a 283% yield and a top dividend score), the peer-comparison table, the Holdings valuation view and the watchlist drawer — and all five now share one definition.
-
Portfolio beta is no longer invented for holdings the data provider doesn’t rate. When beta was missing, the app substituted
1 + volatility, a formula that approaches 1 as volatility approaches zero. A liquid cash fund was therefore assigned market-level risk and shown as underperforming by exactly the market’s return, while gold and silver ETFs — held precisely to diversify — received the highest betas in the book. Missing beta now stays missing. Portfolio beta is computed over the holdings that genuinely have one and states how much of the portfolio that covers; no equity holding’s beta changes. -
Portfolio P/E now uses the same formula everywhere. Home computed an arithmetic weighted average while the Holdings page computed the correct harmonic one, so the two pages showed different P/Es for the same portfolio — around 29% apart. Home now uses the harmonic mean, and loss-making holdings, whose negative P/E was previously included, are excluded. Expect Home’s Portfolio P/E to drop noticeably.
-
Portfolio alpha follows beta. Alpha’s formula is unchanged, but where a holding has no beta it now has no alpha either, instead of inheriting a manufactured one.
-
Risk metrics now say how much of your portfolio they describe. Where a metric can only be computed for some holdings, Home captions it “across 8 of 10 holdings” rather than presenting a partial figure as a whole-portfolio number. A metric no holding supports shows a dash instead of a misleading zero, and the AI portfolio summary is told the same.
-
Connecting or disconnecting a broker now refreshes your Home metrics immediately. The cache-clearing code still referenced key versions that had been superseded twice, so Home’s figures lingered for up to two minutes after a portfolio change while everything else updated at once.
v0.6.11 — 2026-08-26
- Switching a chart indicator on or off can no longer change the price history underneath it. Chart data was previously cached separately for each combination of indicators, and each of those copies was fetched independently — so two of them could hold slightly different versions of the same price history, and picking a different indicator could quietly redraw the candles. Price history is now cached once per symbol, timeframe and range, and every indicator view is derived from that one copy.
v0.6.10 — 2026-08-26
- Candlestick pattern markers are now decided by the candle values shown on the chart, rather than by invisible extra decimal places carried in the market-data feed. Previously a bar that opened at exactly the previous day’s close could miss its engulfing marker because the two prices differed by roughly a millionth of a rupee — far below the ₹0.05 minimum tick, invisible on screen, and not even consistent from one request to the next. Doji markers sitting exactly on the 10%-of-range boundary were decided the same way. Around 0.4% of candles gain or lose a marker; every marker now agrees with the prices you can actually see.
- Calculating chart indicators and pattern markers in the browser, added in v0.6.9, is switched on with this release. Indicator values and pattern markers are identical either way — verified marker for marker across 21,000 candles of real market data — and server-side calculation remains available as a fallback.
v0.6.9 — 2026-08-26
- Chart technical indicators (SMA, EMA, RSI, MACD, Bollinger Bands) and the candlestick pattern markers can now be calculated in your browser rather than on the server. Indicator values and pattern markers are unchanged — the browser implementation was verified against the server’s, point for point, on real market data across every supported symbol range.
- Toggling an indicator on the Charts page no longer refetches the chart. The price data is fetched once and every indicator is derived from it, so switching studies is instant.
- Chart responses are smaller when indicators are calculated in the browser — around a third less data over the wire for a typical chart, and up to two thirds less with every study enabled.
- This is off by default in this release and will be enabled after verification in production. Server-side indicator calculation is unchanged and remains available.
v0.6.8 — 2026-08-26
- Market data that is identical for every user — live quotes, company information and price history — is now shared through a global cache that survives backend restarts. Previously every backend process kept its own private copy and threw it away on each restart, so the first requests in each uptime window always went back out to the market-data provider and were slow. Measured on production infrastructure, a restart that previously took 1.96 s of upstream fetching for a five-symbol portfolio now takes 0.08 s and makes no upstream calls at all. This is rolling out behind a server-side switch and is off by default in this release.
v0.6.7 — 2026-08-26
- Fixed Home portfolio metrics so risk and valuation figures cover holdings from every connected broker. Previously they were computed from Zerodha Kite holdings only, while the allocation breakdown directly below on the same page already covered all brokers — so anyone with a second broker connected saw P/E, beta, alpha, dividend yield, diversification, sector allocation, top/lagging holdings and portfolio totals describing only part of their portfolio. The AI portfolio summary inherits the correction.
- Restored daily thesis evaluation. Open theses are re-priced each weekday and transition to hit, breached, or expired automatically again; daily thesis snapshots resume.
- Restored the 14-day chat-session retention policy, which had not been running.
- Restored 30-day pruning of status-page history, which had been growing without limit.
- Fixed duplicate status-page history recording so each check interval is now written once instead of twice.
v0.6.6 — 2026-08-26
- Added the ability to manually add any two stocks as a custom relative-value pair on the Arbitrage Spotlight page, with a correlation preview before adding.
- Custom pairs run through the same full analysis (Z-score, cointegration, Pair Health, historical analogues) as the built-in curated pairs, and can appear in the spotlight and summary alongside them.
v0.6.5 — 2026-08-23
- Improved portfolio allocation donuts with distinct stable colors and clearer slice separators across instrument, sector, and stock views.
v0.6.4 — 2026-08-23
- Added a documented Docker Desktop workflow for running ArkFolio locally with safe production-database and broker-credential handling.
- Added local Compose configuration and setup validation for RabbitMQ, Redis, Ollama, the backend, worker, and frontend.
v0.6.3 — 2026-08-18
- Fixed the Geopolitical Intelligence page after the scheduled background-scan refactor.
- Restored persisted source health and strategic signal monitoring.
- Corrected globe asset loading, event severity colors, holdings links, and portfolio impact mapping.
- Added compatibility for legacy geopolitical event casing and 1–10 severity scores.
v0.6.2 — 2026-08-17
- Fixed scheduled geopolitical scans to run from the repository root and request structured JSON from Google LLM providers.
- Added regression coverage for workflow imports and structured LLM responses.
v0.6.1 — 2026-08-17
- Fixed the scheduled geopolitical intelligence scan so its legacy
feedparserdependency installs reliably on Python 3.11. - Added a runtime dependency smoke check and removed the stale checkout gitlink warning from the workflow.
v0.6.0 — 2026-08-17
- Refined the Home portfolio allocation view into a compact, responsive analytics surface with clearer current value, invested cost, and P&L summaries.
- Fixed the Home invested value display so connected portfolios show their invested cost instead of a blank placeholder.
v0.5.0 — 2026-08-17
- Added a consolidated Home portfolio-segmentation view for instrument, sector, stock, and market-cap allocation.
- Added Current/Invested switching with connected-broker snapshot visibility and graceful metadata fallback.
v0.4.3 — 2026-08-11
- Fix Zerodha tax trade deduplication across CSV/XLSX numeric serialization changes.
- Prevent duplicate imports from inflating realized P&L and unmatched-sell warnings.
- Add production repair tooling and a unique source-trade constraint.
v0.4.2 — 2026-08-11
- Fixed Tax Center unmatched-sell warnings so they respect the selected financial year and are shown once.
- Kept FIFO P&L behavior correct when the uploaded tradebook contains matching buy history, while separating incomplete-history diagnostics from harvesting output.
- Hardened mutual-fund heatmap metadata access against yfinance HTTP 401 responses.
v0.4.1 — 2026-08-11
- Fixed Tax Center imports for Zerodha’s updated dividend statement CSVs and equity tradebook XLSX files.
- Added per-sheet workbook header discovery while preserving imported charges, rejection labels, and normalized tax rows.
v0.4.0 — 2026-08-10
- Added twice-daily GitHub Actions geopolitical scans at 9:00 AM and 7:00 PM IST.
- Preserved the full geopolitical intelligence page while loading its data from the latest persisted scan.
- Added per-user geopolitical and portfolio-impact alert generation for scheduled scans, including notifications available when users return online.
- Retained the authenticated manual/debug intelligence endpoint and added worker-safe persistence, cache invalidation, and runtime safeguards.
Closes #65
Follow-up offline-alert delivery improvements remain tracked in #122.
v0.3.0 — 2026-08-09
- Added unified portfolio context for chat, combining manual investments and all connected brokers with source-aware holdings.
- Added NVIDIA NIM as the preferred chat provider when configured, with persisted provider settings and safe unavailable-provider handling.
- Added open-ended chat guardrails, sanitized model errors, 14-day inactive-session cleanup, and Claude Desktop/MCP setup guidance.
- Improved the chat page on desktop and mobile with responsive history, scrolling, accessibility, and composer behavior.
v0.2.10 — 2026-08-05
- Fixed the status page incorrectly showing an AI Features outage due to a misconfigured health check in the scheduled offline status check, which always reported Ollama as down instead of correctly recognizing it’s intentionally disabled in production.
v0.2.9 — 2026-08-05
- Fixed the weekly newsletter silently failing to send since 2026-07-28 — the send job crashed every time it ran in the background worker, with no visible error anywhere in the trigger path, so subscribers stopped receiving it without anyone being notified.
v0.2.8 — 2026-08-05
- Fixed the “Log out” button silently failing in production — clicking it now actually ends the session, instead of leaving the user logged in with no visible error.
v0.2.7 — 2026-08-05
- Fixed the status page’s overall banner and history bars incorrectly showing “Status Unknown” when everything was actually healthy, caused by a disabled service (e.g. Ollama, which is intentionally off in production) being ranked as worse than a real outage. Also fixed the staleness note occasionally showing “backend may be asleep” right after switching back to a browser tab, even when the backend had been reachable the whole time.
v0.2.6 — 2026-08-05
- Fixed the public status page showing “Status Unknown” whenever the backend is asleep (its normal state most of the day) — health checks now also run on a schedule outside the live backend, so the page shows real status with a note when it’s serving the last scheduled check instead of a live one.
v0.2.5 — 2026-08-04
feeds.db, the RSS-scraper’s database, no longer gets committed tomainevery 6 hours. It’s stored in Cloudflare R2 instead, which stops a 40MB file from bloating the repository’s history and removes the last routine source ofmain/devbranch divergence.
v0.2.4 — 2026-08-04
- Fixed the automated
main→devback-merge missing the two cases it most needed to catch. It now also runs on a schedule and is dispatched directly by the release workflow, sodevno longer falls behind after a release or an RSS scrape.
v0.2.3 — 2026-08-04
- Release PRs are now checked for branch divergence. A
dev→mainPR that would ship without commits already sitting onmainis blocked, and the check names exactly which commits are missing and how to back-merge them. - Added an automated back-merge that keeps
devin sync withmainafter every release, hotfix, and 6-hourly RSS scrape, so releases stay forward-only without anyone remembering to do it. - The release PR gate now reports every contract violation in one run, instead of surfacing them one at a time across repeated pushes.
v0.2.2 — 2026-08-04
- Smart-Money Flows charts reworked — the FII/DII hero sparklines and the 30-day trend chart now follow the app’s chart theme, so they’re readable in light mode instead of always rendering a permanently-dark tooltip. The trend chart gains a visible zero baseline, y-axis values labelled in ₹ Cr, and a single legend instead of two overlapping ones. The hero sparklines now take their colour from the sign of the number they sit beneath, rather than a fixed blue and orange that could contradict it.
- Contrast fixes — the Provisional badge and the DII pill were hard to read against their backgrounds in light mode; both now use a text-safe colour token.
v0.2.1 — 2026-08-03
- Fixed a backend deployment crash caused by an unpinned dependency resolving to an incompatible version in a cached Docker build layer.
🤖 Generated with Claude Code
v0.2.0 — 2026-07-22
- Profile pictures — upload, replace, and remove a profile picture, shown in the Topbar and Account page.
- Weekly newsletter redesigned — “Closing Bell” gains three new personalised sections (your broker holdings’ weekly move, your manual investments’ weekly move, and a geopolitical risk watch for your portfolio) alongside a revamped market overview. Previously-broken sections (mid/small-cap breadth, top movers/news) are fixed.
- Events calendar — fixed holdings-linked events sometimes not appearing on a fresh visit to the Events page.
v0.1.1 — 2026-07-21
- Restored the footer — page links and live system status — in the logged-in app. It was previously only visible to anonymous demo visitors.
May 2026
- Documentation site launched. First public version of these docs covering Getting Started, Features, FAQ, Troubleshooting, and Glossary.
April 2026
- Multi-agent stock evaluation added — a structured workflow that walks a single ticker through fundamentals, technicals, news, portfolio fit, bull/bear debate, risk review, and a final rating.
- AI chat got an additional model option in the picker.
Earlier
- Screener with multiple report types (Market screener, GS equity research, MS DCF, Bain analysis) and saved history.
- Restructuring wizard with questionnaire → holdings preview → plan flow.
- Trading bot with strategy setup, backtest, dashboard, and configurable safeguards.
- Geopolitical intelligence with map, timeline, and portfolio-impact view.
- Earnings tracker — upload PDFs, get structured AI analysis, retry on failure.
- Smallcases — discover, build custom baskets, track what you own.
- Manual investments with CSV import and allocation visualisations.
- Brokers — six broker integrations (Zerodha Kite, Upstox, Fyers, Angel One, Dhan, Groww).
- Weekly newsletter (“Closing Bell”) — opt-in, personalised digest delivered Friday evenings.
- Market overview with India / Crypto / Commodities / Regional tabs.
- Fundamentals with charting and time-series metrics.
- Job scheduler for visibility into long-running analyses.
- Public blog with reading and authoring.
Have something we missed? Let us know via the support link in the dashboard footer.