Changelog
What shipped on BestFolio, day by day. Hand-written after each meaningful production deploy. No marketing fluff and no auto-generated commit dumps; only the changes a Pro or free user might actually notice.
Follow new entries in any feed reader: RSS feed
October 2026
- Feature
Portfolio and blend statistics show skewness, excess kurtosis and CVaR
- The statistics table of each portfolio now lists the skewness, the excess kurtosis and the CVaR at 95% of its monthly returns, next to the same figures for the benchmark you compare it with. The Smart Blend results table shows them for each weighting method.
- All three use the same month-end returns as the Sharpe ratio. Kurtosis is shown as excess kurtosis (raw kurtosis minus 3, so a normal distribution scores 0), and CVaR 95% is the average return of the worst 5% of months.
- Each needs at least 12 months of history. Thanks to the member who asked for them.
- Fix
Monthly scoreboard tables scroll sideways on a phone
- The tables in the monthly TAA scoreboard post now scroll sideways inside their own box on a narrow screen, instead of making the whole page wider than the phone.
- This starts with the October scoreboard; earlier posts stay as published.
- The share buttons under every blog post now wrap to a second line on a narrow phone instead of running off the screen.
- Fix
The monthly scoreboard's year-to-date leaders show each strategy's best variant this year
- The year-to-date leaders table in the monthly TAA scoreboard now lists each strategy with its best variant this year. It used to take the variant with the best month, so a strategy whose strongest variant had a weak month showed a weaker sibling or dropped off the table.
- The count of strategies ahead of the US market year to date uses the same variants. This starts with the October scoreboard; the September post stays as published.
- Fix
The monthly signal email watches the variant a followed strategy shows by default
- For a strategy you follow as a whole, the "Strategies you follow" part of the monthly signal email now reports a change in the variant its strategy page shows by default. It used to watch the strategy's oldest variant, even a retired one, so followers of RPEA never got its line.
- This starts after the 30 September and 1 October emails, together with the switch to the variants you starred.
- Improvement
The monthly signal email follows the variants you starred
- Favorites are per variant, and the "Strategies you follow" part of the monthly signal email now uses them: it lists each variant you starred whose model changed, by the variant's own name, with a link to that variant. It used to list whole strategies.
- If your stars were carried over from an earlier strategy star, so every variant of it is starred, that email stays as it was, one line per strategy. Unstar the variants you do not follow and it lists only the ones you keep.
- This starts after the 30 September and 1 October emails, which still list whole strategies.
- Improvement
Walk-forward portfolios show next month's weights early, marked provisional
- Near the end of each month, your walk-forward portfolio page now shows next month's weights, marked provisional, and your dashboard shows the same note with a link to them. They are computed a few hours before the month-end close.
- The final weights are published on the first trading day, around 11:00 UTC, and can still differ. They replace the provisional ones and come with the rebalance email, as before. Your current weights do not change until then.
- Portfolios that rebalance every two or three months say so in a month without a rebalance, and name the month-end of the next one.
- Fix
Walk-forward portfolios now rebalance to newly optimised weights each month
- At each monthly rebalance a walk-forward portfolio now moves to weights optimised on data up to the month-end close. Until now the rebalance applied weights optimised a month earlier, and at the September rebalance some portfolios kept their previous month's weights.
- Your first rebalance after this fix can therefore move more than a usual month. Weights already published for past months are not changed.
- Fix
Blog posts show their title once
- A post whose text carried its own title showed that title twice at the top of the page. The page now shows it once, and any other top-level heading inside an article reads as a section heading.
- Improvement
Blog posts now show their corrections
- When we correct a published post, the page now says so. A Corrections list at the end of the article gives the date of each correction and what changed, newest first.
- The date line under the title adds when the post was last corrected, and the correction reaches the page right away instead of up to an hour later.
- Posts that were never corrected look the same as before.
Open /blog/minimum-portfolio-size-tactical-allocation#corrections →
- Improvement
Strategies: the free strategies are easier to find
- The Strategies page now says, right under its title, how many strategies are free to use without a card, with a link to the plans. Members with Pro or lifetime access do not see it.
- The Guide and the email sign-up box now give the right number of free strategies; they had said four and three.
- Improvement
Sidebar: the Portfolio Library sits under Portfolios, and every free tool is one click away
- The Portfolio Library moved out of the Tools group to sit right under Portfolios.
- The Tools group is open by default and now lists Portfolio Overlap and a link to all free tools. If you collapse it, it stays collapsed.
- Improvement
Signed in, the footer no longer repeats the sidebar
- When you are signed in, the footer drops its row of links to Strategies, Leaderboard, Library, Blog, Guide, Free Tools and Pricing, since the sidebar already has them.
- The disclaimer and the About, Methodology, Changelog, Status, Terms, Privacy, cookie and contact links stay on every page.
- Fix
A tab left open during an update reloads itself instead of showing an error
- If you kept BestFolio open while we released an update, the next page you opened in that tab could show "This page could not load". The page now reloads itself once to pick up the new version.
- If it still fails after that reload, you see the usual error page with Try again, Reload page and Go home.
- Improvement
Leaderboard and Favorites: the grey line under a variant name is labelled
- When a variant has a name of its own, the smaller grey line under it names the strategy it belongs to. It now reads "Family:" before that name, with a tooltip, on the Leaderboard and on your Favorites page.
- Improvement
Leaderboard: a shorter filter bar, with Category as a drop-down
- The Category filter was a row of about 40 buttons that pushed the table down. It is now a single drop-down, with the same categories in the same order, and your saved view keeps its choice.
- The short guide under the page title is one sentence, with the same links to Strategies, Performance and Annual returns.
- Fix
Leaderboard: the count above the table says how many rows are on screen
- The table shows the first 100 rows until you choose Show all. The line above it now says so, for example "Showing 100 of 199 rows (187 strategies + 12 model portfolios)", instead of reporting the total as if every row were on screen.
- Model portfolios are no longer counted as strategies, and with the library switch on, the note beside it says how many of them made the first 100 rows.
- Data
Price data is credited to Tiingo, and every benchmark series follows the 1987 start outside the signed-in site
- The site footer, Methodology and the API docs now credit Tiingo for US stock, ETF and mutual fund prices, and Methodology credits Moody's, via FRED, for the Baa corporate bond yield.
- The signal export and the price ledger carry that credit and the third-party data terms with the data: as a first line starting with # in CSV, and under data_notice in JSON. The annual returns and stress window downloads open with the same line. If a script reads these CSV files, have it skip lines that start with #.
- Signed out, and through an API key or the MCP server, every benchmark series now starts on 6 January 1987 (the Golden Butterfly on 26 February 1993), as the S&P 500 and 60/40 already did; with a key this includes the benchmark lines of a portfolio backtest. Signed in on the site, charts keep the full history, and no statistic changes.
September 2026
- Fix
A price feed that stops can no longer freeze a fund in a published backtest
- If a fund a strategy holds has no price on a day it is held, or its prices stop while it is still held, that backtest is no longer published with the fund frozen at its last price. The run is refused and the last good one stays live.
- The nightly update does the same: it waits for a fresh price instead of adding days on which a held fund did not move. A normal delay of a few trading days is still accepted.
- No published result changes: none of today's backtests has such a gap.
- Fix
Walk-forward: the strategy list is in true alphabetical order
- The strategy universe on the Walk-Forward page sorted on each variant's short name while showing the strategy name in front of it, so some rows sat far from where you would look. Century Momentum Standard, for example, was listed under S.
- The list now sorts on the name it shows, and the results name each strategy the same way.
- Improvement
Strategy cards and the strategy pages' own data now name the backtest run behind their figures
- Hover the figures on a card in the strategy catalog, or the backtest line of a free strategy card on the home page, to see the run they come from: its engine version, the version of the price data and the date it was published.
- The API adds the full record as published_result to a strategy's backtest and its NAV, trade-cadence, rebalance-month and stress-window views, to the Curated Collection and free strategy cards, and to the public SEO and share feeds. The strategy summary can return a short form with published_result=slim. Every field it already returned is unchanged.
- No figure changes.
- Fix
Walk-forward portfolios: the correlation card and the TBSZ analysis follow the walk-forward history
- For a walk-forward portfolio, the correlation card's Portfolio line now uses the portfolio's walk-forward history, the curve its page shows. It used to blend the portfolio's strategies at their saved weights, a portfolio you never held.
- The card now covers the months of that walk-forward history, so the months before the walk-forward track starts no longer appear, and the correlations between your strategies can shift slightly. The growth rate behind the TBSZ tax analysis in the API follows the same history.
- Fixed-weight portfolios are unchanged, and portfolios with leverage already worked this way.
- Fix
Portfolios load in your currency from the first request
- When you open your portfolios in a new browser session, the page now waits for your saved display currency before it loads the backtest. It used to ask for the backtest in dollars first and then again in euros.
- If you display euros, the dollar result could replace your euro view, so the next time you opened the page it had to be recomputed.
- Nothing changes if you display dollars.
- Fix
Your main portfolio is ready in euros each morning
- If you display euros, the nightly refresh now prepares your main portfolio in euros. It used to prepare it in dollars only, which replaced your euro view, so your first open of the day recomputed it.
- Saving a portfolio now prepares it in the currency you display as well.
- Nothing changes if you display dollars.
- Fix
The portfolio builder suggests the European listing for WSML and WEBB
- Typing WSML or WEBB without an exchange suffix used to be accepted, and the backtest then ran on the prices of an unrelated US over-the-counter security that jump 20 times or more in a day. The builder and the save now suggest the European listing instead: WSML.L and WEBB.DE.
- The same applies to any ticker whose stored prices jump 20 times or more in a day while we hold its exchange-suffixed listing. No saved portfolio holds one today.
- Fix
Peak exposure shows correctly on strategy pages in EU mode
- With EU mode on, every strategy page showed 0.00x for Max Total Exposure and Max Equity Exposure. It now shows the same figures as the dollar view, such as 1.00x for GEM, because exchange rates do not change how much of a portfolio is invested.
- A strategy whose stored results predate these two figures shows N/A in euros, as it does in dollars, instead of 0.00x.
- Fix
The trade list on your main portfolio loads again
- On many portfolios, including the Starter Portfolio every new account begins with, the trade list showed an error saying the sleeves added up to 100.02%. Nothing was wrong with your portfolio: our rounding of the blended weights added the extra 0.02%.
- The trade list now loads for these portfolios. Each line still rounds to two decimals, and the lines add up to exactly 100%.
- Fix
The leaderboard's Stability column now covers each strategy's whole history
- On the Full History view, the Stability column scored strategies that start before 1970 on their months since 1970 only, while every other figure on the row, and the strategy page, used the whole record. Eleven strategies were affected, most of all the century-long ones: Century Momentum showed 0.65 where its whole record scores 0.41.
- The column now uses the whole record, so it matches each strategy page. Other periods and EUR mode are unchanged.
- Fix
Banners and the footer no longer move the page while it loads
- The "Spread the word" banner now appears together with a page's content, or when you open another page, never above something you are already reading.
- In the app, the footer no longer shows under a page that is still loading and then jumps away when the page fills in.
- A disclaimer you dismissed in the last 7 days no longer appears for a moment when a page loads.
- Fix
The Full dashboard's optional question no longer pushes the page down
- If you have not answered or dismissed the one-question card yet, it now appears together with the rest of the Full dashboard instead of a moment later, so the rows below it stay put.
- Everyone else sees no card and no empty space.
- If you allow analytics, our page-speed measurements now also note which page was open when part of it moved: a page name and a kind of element, never text, links or account data.
- Fix
The leaderboard's UCITS filter now needs the same leverage
- The UCITS Replicable filter on the leaderboard now uses the same rule as the UCITS badge in the Curated Collection: a strategy or model portfolio counts only if every fund it can hold has a named UCITS fund at the same leverage. Approximate matches at the same leverage still count.
- A fund whose European replacement changes the leverage no longer counts, such as TMF (3x Treasuries, replaced by an unleveraged fund) or the 2x return-stacked RSST. Return Stacked Quartet, TQQQ Trend and RPEA leave the filter, with the leveraged, return-stacked, SmartStack and SmartLeverage versions of HAA, VAA, DAA, KDA, ADM and other tactical strategies, and the Return Stacked All Weather and Aggressive Walk-Forward Growth model portfolios.
- The UCITS Coverage column of the CSV export counts the same way.
- Improvement
Coming Soon now lists only strategies scheduled for release
- The Coming Soon list on the strategies page used to show, with blurred names, every strategy we were still testing, although some of them will never pass review. It now names only the strategies that passed review and are approved or scheduled for release.
- Today that is two strategies planned for the end of October: Verdad Countercyclical and Holy Grail Dual Momentum. Candidates still in testing are no longer listed, and a candidate that fails goes to the rejection log.
- Pro members get each new strategy the day it launches.
- Improvement
We promise new research every month, not a number of strategies
- The site used to say we add 5 new strategies every month. It now says what we commit to: new research every month, with new strategies and variants published once they pass review.
- A candidate that fails review goes to the rejection log instead of the catalog, so some months bring fewer new strategies and more tests of the ones already here.
- Your access to the full library and to every future addition is unchanged.
- Feature
The strategies page now opens on a Curated Collection
- The strategies page starts with 15 strategies, one variant each, grouped as Foundations and low attention, Defensive and diversified tactical, and Aggressive and advanced. It is a place to start that covers different needs, not a recommendation or a ranking, and it is never sorted by return.
- Each card opens its exact variant and shows its trade-off, its worst fall with the date, daily-attention and leverage warnings where they apply, and a UCITS badge only when every holding has a named UCITS fund at the same leverage, saying how many are only approximate matches. New Research lists the strategies and variants we published in the last 90 days.
- Nothing was removed: Explore all opens the Full Library of every strategy, and search, favorites and filters always cover all of it. Links, portfolios and alerts work as before.
- Improvement
Strategy pages say which parts of a backtest are simulated
- Each strategy page now lists the funds its backtest stands in for before they existed, for example a simulated 3x Nasdaq fund before TQQQ launched in 2010, with the date each real fund takes over.
- When a strategy held a leveraged fund before that fund existed, the page shows its results since the fund launched next to the full history. TQQQ Trend's figures since 2010 are still partly simulated in its defensive sleeve, and the page says until when.
- The Backtest tab shows the same for every variant, and the extreme-risk warning now says when its worst fall came in simulated history.
- Fix
UCITS mode no longer swaps a fund it does not recognise for an S&P 500 fund
- When you view a portfolio in UCITS mode, a holding BestFolio does not recognise now keeps its own ticker and is marked "no UCITS equivalent". Before, it was quietly replaced by CSPX, an S&P 500 fund, and the results still looked normal.
- US portfolios viewed in UCITS mode will therefore show that gap instead of CSPX. The rebalance list follows the same rule and names those holdings, so you can check them with your broker.
- Funds with a known European equivalent, and funds that are already European, are handled as before.
- Data
Strategies now carry the date BestFolio published them
- The strategies API returns a published_at date for each strategy, and for any variant added after its strategy, taken from our release records.
- It is the day the strategy went live on BestFolio, not the date of its original research, which stays in launch_date.
- Strategies that were already public before our release records begin on 16 May 2026 show no date rather than a guessed one.
- Improvement
Every leaderboard row and CSV now names the backtest run behind its figures
- Show all columns on the leaderboard adds a Backtest run column: the engine version, the version of the price data and the date the run behind each row was published, as the strategy pages already show.
- CSV downloads from the leaderboard, the annual returns and stress tables and the risk and return chart end each row with the full record of that run: parameters, observation period, cost and execution assumptions, proxy coverage and publication time. The columns before it are unchanged.
- The API returns the same record as published_result on the leaderboard, the annual returns and stress tables, backtest windows and comparison series, and on the strategy summary when you ask for it with include_published_result=true. The MCP server passes it on. No figure changes.
- Fix
With leverage on, the health score, Monte Carlo, correlations and TBSZ estimate count it
- If a portfolio has leverage turned on, its health score, its Monte Carlo projection, the Portfolio line on its correlation card and the growth figure of its TBSZ tax estimate now use the levered results the portfolio page shows. They used the portfolio without leverage, so they understated both its gains and its drawdowns.
- Portfolios without leverage show exactly the same figures as before. The US tax estimate, which works from each strategy's turnover, is unchanged.
- Fix
Portfolio leverage now covers the years before a fund existed
- Leverage on a portfolio followed each fund's own traded prices, so before a fund existed (SPY before 1993, QQQ before 1999, IWM before 2000, EFA before 2001, EEM before 2003, USMV before 2011) the levered results were the same as the unlevered ones. Those years now run on the same stand-in price history the backtests use, so a long levered history includes the effect of leverage in its early market falls.
- From each fund's first trading day nothing changes. Portfolios whose history starts before those dates can show a higher growth rate and a deeper worst drawdown.
- Fix
The month-end hold email is sent again when the first copy did not arrive
- Members whose allocation holds get one 'no changes this month' email per cycle: the final run skips it for anyone who already got it from the confirmed run on the last trading day. It now checks that our email provider reported that first copy delivered, not only that it accepted it, so a copy that bounced or failed gets a second attempt the next morning.
- If you marked the first copy as spam, you no longer get a second one.
- Fix
European alternatives use the new Morningstar names of Vanguard's US index funds
- On 29 July 2026 Vanguard's US stock index funds and their benchmarks took the Morningstar name: the CRSP US Total Market Index behind VTI is now the Morningstar US Total Market Index, and the large-cap growth, small-cap and small-cap value indexes changed the same way. The notes for VTI, VUG, VB and VBR and the VTI evidence card now use the new names.
- Only the names changed: the funds hold the same stocks with the same objectives, so every European alternative stays as it was.
- Fix
Switching a portfolio back to its full history no longer recomputes it
- Picking a period on a portfolio page (1Y, 5Y, 10Y or your own dates) replaced the saved full-history result, so going back to Full ran the whole backtest again, a wait of several seconds on a large blend.
- The full-history result now stays saved while you look at a period, and switching back loads it at once.
- Improvement
Portfolio leverage now says where it starts
- The Leverage impact card and the methodology page now say how leverage works before a fund existed (SPY before 1993, QQQ before 1999, IWM before 2000, EFA before 2001, EEM before 2003, USMV before 2011): those years run on the same stand-in price history the backtests use.
- Fix
The allocation report shows the leverage table for fixed-weight portfolios too
- With leverage turned on, the PDF allocation report you download from the dashboard compares your main portfolio without and with leverage: CAGR, Sharpe, Sortino, maximum drawdown and Calmar.
- Fixed-weight portfolios had no such table. They now get it, with the same figures as the Leverage impact card on the portfolio page.
- Improvement
Data sources and their credits on Methodology, and third-party data in the Terms
- Methodology now lists, under Data Sources, the economic and factor data we use with the credit each provider asks for, including the notice FRED requires, and the API docs carry the same list. The site footer adds the FRED notice and an index trademark notice.
- Section 3.5 of the Terms now says third-party data is for your own use within BestFolio and may not be redistributed, and that using BestFolio means accepting the FRED API Terms of Use. The Terms are dated October 2026.
- S&P 500 and 60/40 benchmark series fetched without signing in, or with an API key, now start in January 1987. Charts for signed-in members and every published statistic are unchanged.
- Security
The IBKR holdings comparison is no longer saved in your browser
- With Interactive Brokers connected, Settings used to save each Holdings vs target comparison, with your net asset value and every weight, in your browser's storage. It stayed there after you disconnected, signed out or deleted your account.
- The comparison is now fetched each time you open the IBKR tab and kept only while the page is open. Copies saved by earlier versions are deleted the next time you open any BestFolio page in that browser.
- Section 3.3.1 of the privacy policy describes how the connection handles your data now.
- Improvement
Alerts and the trade list now describe model changes, not trades to make
- Telegram signal alerts no longer say "Execute your trades" or "Act before market open". Each line reads as a target change, such as "SPY: 100% to 0% target, about $50,000 of your saved portfolio", and the dollar figures are unchanged.
- The trade list and its copy label each row Increase, Decrease or Unchanged instead of BUY, SELL or HOLD, and holdings you type on the Live page read above target, below target or on target. Wherever BestFolio sizes figures to what you entered, including the route guide, a note says those figures are arithmetic on a model allocation, not a personal recommendation.
- Nothing breaks for integrations: the API, the AI connector and signal webhooks keep the action field exactly as it was and add a change field with the neutral value, and CSV exports keep every column and add Model Change at the end. The action field stays for now and will be deprecated with advance notice.
- Feature
You can withdraw from a Pro plan online during its 14-day withdrawal period
- For 14 days after you buy a Pro plan, the Subscription section of Settings and the account menu show a "Withdraw from contract here" button. It opens a short statement with your name, the plan and the email for our reply, filled in from your account and yours to change, which you send with "Confirm withdrawal".
- We email you an acknowledgement with your statement and the date and time we received it, and refund what you paid in full within 14 days. Withdrawing by email still works, and the Terms and the refund policy now describe both.
- Feature
Mutual-fund alternatives for 401(k) and 403(b) plans
- Many 401(k) and 403(b) plans, and some brokerage windows, offer mutual funds but no ETFs. In US mode, a strategy's Signals tab now lists the US mutual funds that can stand in for each fund the strategy can hold, best first, from Vanguard, Fidelity, Schwab, iShares, Nuveen and specialist families.
- Funds on the same index come first, then funds with the same exposure, then partial matches such as a 2x fund for a 3x ETF. Within each group they rank by how closely their monthly returns followed the ETF over the last ten years, then by expense ratio and tracking difference, and each fund says why it is where it is.
- 83 of the 127 funds in the released strategies have a close match, enough to run 111 of the 187 variants with mutual funds alone; 3x funds, managed futures and return-stacked funds do not, and the panel says so. Mutual funds trade once a day at the close and many plans limit frequent trading, which the panel states next to the list. Two public CSV downloads carry every ranking and every variant's asset universe with its mutual-fund coverage.
- Improvement
Factor Lens: create a free account and come back to the tool
- The button under a Factor Lens analysis used to open the pricing page. It now opens the free sign-up, and when your account is ready you land back on Factor Lens.
- Factor Lens still works without an account. Your holdings are not carried through the sign-up, so you enter them again when you come back. If you are already signed in, the button still leads to pricing.
- Improvement
The info cards on a strategy's Overview tab now fold
- Strategy Info, Investment Universe and the tax estimate cards on a strategy's Overview tab now fold to their title. Strategy Info starts open and the others start folded, which makes that column much shorter.
- Click a card's title, or press Enter or Space on it, to open or fold it. A folded card keeps anything you typed in it, such as your own tax rates, and the Italian or German estimate stays open or folded when you switch country.
- The page does not remember which cards you opened: every visit starts with only Strategy Info open, so the cards never jump open or shut while the page loads.
- Fix
The Rolling 12-Month Correlation chart now measures 12 months, not 21 years
- On the portfolio page, the Correlation Analysis card's rolling chart measured each point over the previous 252 months, about 21 years, so it began 21 years into a portfolio's history and hardly moved. On one five-strategy portfolio it drew 20 points, all since February 2025. Each point now covers the 12 months up to its date, and the same chart runs from February 2005.
- Portfolios whose sleeves share less than 21 years of history lost the whole card, correlation matrix included, and were asked to add an ETF instead: 54 of the 1,097 portfolios with two or more sleeves on 27 September 2026. They now keep the matrix and the new sleeve averages, and 52 of them get the rolling chart. When the series share fewer than 12 months, for example after adding a recently launched ETF, the card says so under the chart title.
- A 12-month stretch in which a series did not move at all has no correlation. The chart now shows it as a break in that line, on its own dates, instead of dropping those months.
- Feature
The Correlation Analysis card now shows each sleeve's average correlation with the others
- Next to the correlation matrix on the portfolio page, each sleeve now gets one number: its average correlation with every other sleeve. The portfolio's average over all pairs sits below it, and the sleeve with the highest average is marked most redundant.
- A second column gives the same averages over only the months in which the S&P 500 fell, when diversification matters most. On one five-strategy portfolio measured on 27 September 2026, the average was 0.39 over all months and 0.22 in the months the S&P 500 fell.
- The card now loads your sleeves' correlations as soon as you open it, without adding an ETF first. Adding ETFs still compares your sleeves with other assets.
- Fix
Corrected European alternatives for GSG, VTIP, TNA, UTSL and TIP
- GSG's European alternative page gave the ticker of one iShares commodity fund, EXXY (domiciled in Germany), with the ISIN of another. It now names ICOM, the Irish iShares Diversified Commodity Swap UCITS ETF (ISIN IE00BDFL4P12) that we already list for DBC. EXXY tracks the same Bloomberg Commodity index at a higher fee, 0.46% a year against 0.19%.
- VTIP holds US inflation-protected Treasury bonds (TIPS) that mature within five years. It now maps to TIP5, the iShares $ TIPS 0-5 UCITS ETF (ISIN IE00BDQYWQ65), instead of ITPS, which holds TIPS of all maturities. TNA (3x Russell 2000) and UTSL (3x US utilities) now map to ZPRR and SXLU, the unleveraged funds we list for IWM and XLU, instead of world small cap and world utilities funds.
- TIP's match with ITPS is now rated close rather than exact, because the two funds follow TIPS indexes from different providers. The notes for EDV, PDBC and CTA now name the right index or manager. The old page addresses forward to the new ones, and backtests, signals and published results do not change.
- Fix
The European alternative for PRTNX is now a TIPS fund, not an S&P 500 ETF
- PRTNX is the PIMCO Real Return Fund, an actively managed fund of US inflation-protected Treasury bonds (TIPS). Our UCITS table described it as a different fund and pointed European investors to CSPX, an S&P 500 ETF, on its European alternative page, in the UCITS ETF Finder and in EU mode.
- It now points to ITPS, the iShares $ TIPS UCITS ETF (ISIN IE00B1FZSC47) that we already list for TIP, rated a close match rather than an exact one because PIMCO manages its fund actively. The old page address forwards to the new one, and backtests, signals and published results do not change.
- Improvement
EU mode marks the European funds that are not an exact match for the US fund
- With EU mode on, allocation views show a European fund in place of each US fund. When that fund tracks another index or has another leverage, its ticker now carries a small mark: ≈ for an approximate match, such as SWDA (MSCI World) shown for EFA (MSCI EAFE), and ≠ for another leverage, such as DTLA (1x) shown for TMF (3x).
- Hover over, tap or tab to a mark to read what differs. For a fund with another leverage, the weight shown is still the US fund's; the UCITS alternatives panel on a strategy's Signals tab shows the adjusted weights. IJPA, shown for VPL, is marked * as one of the two European funds that rebuild VPL.
- The marks appear in allocation bars, in the average allocation chart and on the Signals and Allocations pages. Funds whose European fund tracks the same or a very similar index at the same leverage stay unmarked, and Live Tracking, backtests and signals do not change.
- Fix
ChatGPT can connect to BestFolio again
- Adding BestFolio as a ChatGPT connector failed at the sign-in step with a "Redirect URI does not match allowed patterns" error. ChatGPT changed the address it returns to after sign-in, and our server did not accept the new one. It does now, and nothing changes on your side: add https://bestfolio.app/mcp and sign in.
- The API docs now give step-by-step setup for ChatGPT and for Codex, next to the Claude Code instructions.
- Feature
Tactical asset allocation services, compared on one page
- A new page compares Allocate Smartly, BestFolio, Logical Invest, PortfolioWiser, Portfolio Visualizer and testfol.io on price, strategy library, backtest history and European (UCITS) support, with who each one suits.
- Every fact about another service links to its source and shows the date we last checked it. BestFolio's own strategy counts and backtest depth are read live from the catalog.
- Improvement
Leaderboard: search by name, and the Strategy sort follows the name you see
- A new search box finds any strategy or variant by name and works together with the other filters. Case, accents and hyphens do not matter, so "momentum correlation" finds Momentum-Correlation Triplet.
- Sorting by Strategy now uses the bold name on each row. It used the strategy family underneath, so a row such as Triplet Standard sat under M, far from where you would look for it.
- Share a filtered view with a link such as /leaderboard?q=triplet.
- Fix
Strategy pages no longer contradict themselves
- Pro strategy pages no longer say the latest signal date or the next review is "not currently published" right under the Current allocation card that shows them.
- Strategies designed by BestFolio Research no longer carry a note saying we are not affiliated with the original author, and the results FAQ now points to the Signals tab instead of a Signal History card that does not exist.
- Clearer labels: "Rebalance frequency" instead of "Cadence", and a shorter original publication line that still says the results are backtest simulations.
- Improvement
A shorter, tidier strategy page
- The star next to the badges is now the one way to add a strategy to your favorites; signed-out visitors go to sign-up and come back. Author, source, publication year and tags sit on one line, and the strategy summary is no longer repeated under the allocation card.
- Compare variants now sits in the Backtest tab, next to the charts it changes.
- One "Strategy & methodology" section holds the rule, the key facts and, folded away until you open them, the research data and disclosures. The common questions under the recent-results table are folded the same way.
- Improvement
Strategy pages in plainer English
- Buy the Dip, the Momentum-Correlation Triplet and a few other strategies now explain their rules without academic jargon. A technical term appears once, in brackets, where it helps you look it up.
- The note under the Default badge now says plainly that the default is the strategy's original published rules, not its best performer.
- The Robustness badge shows two decimals instead of four, and the Factor Exposure card links a plain-language explainer.
- Improvement
Monte Carlo explains itself and marks your starting point
- The Monte Carlo intro now names the block length you picked (3, 6, 12 or 24 months) instead of always saying 12, and explains the method in plain words.
- The fan chart shows a dashed line at the $10,000 starting value, so you can see which outcomes end below what you put in.
- Fix
Monte Carlo, correlations and alerts count a strategy held twice at both weights
- When a portfolio held the same strategy in two sleeves, the Monte Carlo and Correlation Analysis cards on the portfolio page, the dollar amounts in Telegram signal alerts and signal webhooks, and the return behind the TBSZ tax estimate counted that strategy at the weight of one sleeve only. Tranche alerts, which spread a rebalance over several days, counted it at twice the weight of its last sleeve, which was wrong when the two sleeves had different weights.
- All of them now use the combined weight of both sleeves, as the portfolio backtest, the dashboard and the Portfolio Health card already do. Portfolios that hold each strategy once are unchanged.
- Fix
EU mode now names the European fund for MSCI World, MSCI ACWI, clean energy and 27 more US funds
- With EU mode on, allocation views show the European fund to buy in place of each US fund. That swap only knew the funds with a European alternative page on the site, so URTH, ACWI, ICLN, VT, nine of the S&P 500 sector funds and 17 others kept their US ticker. They now show SWDA, SSAC, INRG, VWCE, SXLK and so on.
- The funds added are those whose European fund tracks the same or a very similar index at the same leverage, the rule the portfolio builder uses when it suggests a US twin. Every fund that EU mode already relabelled keeps its label.
- A few funds whose European alternative is only approximate and has no page on the site, such as BOND or XLRE, still show their US ticker; the UCITS ETF Finder lists their alternatives with what each one leaves out. Backtests, signals and published results do not change.
- Fix
Bonds to cash now covers the dates you pick on a strategy's Backtest tab
- With a date range set on a strategy's Backtest tab, the Bonds to cash card compared the strategy's figures for those dates with a what-if measured over the whole history. With 2020 to 2022 selected, GEM's own column read a CAGR of 2.1% while the what-if column kept its figures since 1986, so the difference column mostly measured the change of period.
- The what-if is now measured over the same dates, the same way, in dollars or in euros, and the card says which dates both columns cover. Without a date range, both columns still cover the whole history.
- Fix
Library model portfolios now show their withdrawal rates and follow EU mode
- Each model portfolio's card and page in the library now show its safe and perpetual withdrawal rates (SWR and PWR), worked out as on its leaderboard row, from the portfolio's own history. Measured on 27 September 2026, SWR ranges from 5.55% (Simple Defensive Core) to 15.91% (BestFolio House Momentum).
- With EU mode on, the library now shows every figure in euros, each day converted at that day's EUR/USD rate, and withdrawals rise with euro-area inflation. Simple Defensive Core's SWR is 5.19% in euros.
- If the euro figures cannot be loaded, the library keeps the dollar figures and says so.
- Data
Price histories of 66 European listings no longer jump on days they did not trade
- On days a thinly traded European ETF listing did not trade, our price source often recorded the fund's value in another currency instead, such as its US dollar value on a euro listing. The history then showed a jump of 8% to 50%, the exchange rate, that reversed as soon as the listing traded again. Sometimes it lasted for months: iShares Edge MSCI EM Value Factor in Frankfurt (5MVL) until 2021, Invesco MSCI Emerging Markets in London (MXFP) until 2015.
- Those prices are now converted into the listing's own currency at that day's exchange rate, in the stored history of 66 listings and in every price we store from now on, so a refetch can no longer bring them back. Two London listings that recorded another exchange's trades in euros (IBTS and IJPA) are corrected the same way.
- No published strategy or portfolio holds these listings, so strategy results do not change. Anyone who looks one of them up sees the corrected history.
- Fix
The annual returns matrix and its stress windows table now follow EU mode
- With EU mode on, the annual returns page still showed every calendar year and every stress window in dollars. Both tables now convert each day at that day's EUR/USD rate before measuring, like the strategy pages. GEM gained 12.8% in dollars in 2025 but lost 0.5% in euros, because the dollar fell against the euro that year.
- Both CSV downloads say which currency they are in, in the file name and on every row. Years before the first EUR/USD rate on record show the dollar return: the table marks them with a dagger, and the CSV says so in their column headers.
- Switching EU mode on or off updates both tables at once.
- Fix
The US trading calendar now matches NYSE's, Juneteenth included
- Our US market calendar missed Juneteenth, a stock market holiday since 2022, so daily strategies, trading alerts and trading-day counts treated it as a trading day. The calendar now holds exactly the holidays NYSE publishes: the market is closed on 19 June 2026, 18 June 2027 and 19 June 2028.
- When Juneteenth falls on a Friday, in 2026 and 2027, weekly strategies review on the Thursday before. No month starts or ends on these days, so monthly, quarterly and annual signals keep their dates.
- Two early closes that NYSE does not publish, 2 July 2027 and 22 December 2028, are gone: those days now show the normal 4 PM close.
- Fix
The best UCITS strategies page now lists every fund's European match
- The page of the best UCITS-compatible TAA strategies described each strategy's European funds in hand-written notes, and some had gone out of date. It called IWDA a developed ex-US fund, when it tracks MSCI World with US stocks included, and said every VAA fund had an exact or close match, although EFA's alternative, SWDA, has been labelled approximate since 26 September.
- Each strategy now lists every fund it can hold with its European alternative and whether the match is exact, close or approximate, taken from the same table as the UCITS Finder. GEM and PAA have an exact or close match for every fund; each of the other eight holds one or two approximate ones, such as EFA to SWDA or VWO to EIMI.
- The FAQ now names the US funds with no European equivalent (BTAL, EUO and FPX) instead of two mutual funds, DFSVX and RYMFX, that do have a close one.
- Fix
Bonds to cash and Stress windows now follow EU mode
- With EU mode on, the Bonds to cash card on a strategy's Backtest tab compared the strategy's euro figures with a what-if run in dollars, so its difference column mixed the exchange rate into the effect of moving bonds to cash. The what-if now runs in euros too.
- Stress windows now measure each window in euros in EU mode, and the card says so. Through the 2022 window, GEM lost 7.7% in euros against 19.4% in dollars, because the dollar rose against the euro over those months.
- Switching EU mode on or off updates both cards with the rest of the page.
- Improvement
In EU mode, the portfolio builder suggests a US twin with a longer price history
- When you add a European-listed ETF to a portfolio in EU mode and we have less than 10 years of its prices, the portfolio builder now names its US twin if that fund's prices go back at least 3 years further, for example VT for VWCE.DE. A portfolio can only be backtested over the years in which all of its holdings have prices, so modelling on the twin gives you a longer backtest.
- Use the twin in one click or dismiss the note; it never stops you from saving. EU mode still shows your results in euros and the UCITS fund to buy. Twins come only from our existing UCITS matches rated exact or close, so a listing without such a match gets no suggestion.
- Fix
Model portfolios now pass the UCITS filter and show their withdrawal rates
- On the leaderboard, the UCITS Replicable filter hid every model portfolio. It now keeps a model portfolio when every fund its strategies and fixed holdings can hold has a UCITS equivalent, the rule it already applied to strategies, and those rows carry the UCITS badge.
- Model portfolio rows now show their safe and perpetual withdrawal rates (SWR and PWR), worked out the way a strategy's are, on the portfolio's own blended history. In EU mode they use its euro history and euro-area inflation.
- Feature
Favorites follow EU mode, and the leaderboard can show only your favorites
- With EU mode on, the Favorites page now shows returns, drawdowns and ratios in euros, the same figures the leaderboard shows for those variants. It used to show them in US dollars.
- Signed in, you can switch on Only my favorites on the leaderboard. It keeps just the variants you starred, with every column, sort and filter, so the leaderboard doubles as a side-by-side comparison of your favorites. The choice is saved with your leaderboard view.
- Improvement
European alternatives: exact US twins for MSCI World, MSCI ACWI and clean energy funds
- The UCITS table now maps URTH to SWDA (iShares Core MSCI World), ACWI to SSAC (iShares MSCI ACWI) and ICLN to INRG (iShares Global Clean Energy Transition). Each pair tracks the same index, so if you hold one of these European funds you can model it with its US twin and the longer price history that comes with it.
- Searching the UCITS Finder for a European ticker now lists the closest US match first. A search for SWDA used to show only EFA and IEFA, which hold no US stocks while US stocks are about 69% of SWDA; URTH now leads the list.
- In EU mode, a portfolio holding URTH, ACWI or ICLN now shows these European funds in its UCITS view instead of a generic S&P 500 fund.
- Fix
GEM and six other dual momentum strategies now appear under Dual Momentum
- The Dual Momentum category on the strategies page and the leaderboard listed only two strategies. It now also lists GEM, ADM, CDM, Diversified Dual Momentum, Global Navigator+, The Russell and Alpha-One Momentum. Each picks the strongest of its assets and holds it only while returns beat cash or stay positive, moving to bonds or cash otherwise.
- Alpha-One Momentum, which had no category at all, also joins Momentum. Strategy pages now show a Dual Momentum badge on these strategies, and the Risk Parity and Return Stacked badges, which a tag spelling mismatch had kept from ever showing, now appear on the strategies that carry them.
- Only the labels change: no signal, holding or backtest moves.
- Fix
Strategy page benchmarks now follow EU mode
- With EU mode on, a strategy's Summary Statistics showed the strategy in euros but kept the benchmark column (60/40, S&P 500 or VWIAX) in dollars, so the two columns compared different currencies. Reported by a reader. The benchmark column is now in euros too, and switching EU mode on or off updates it with the rest of the page.
- The S&P 500 and 60/40 lines on the Drawdown chart, and the lines of variants added with Compare variants, follow EU mode the same way.
- Measured on 26 September 2026 over GEM's backtest (1986 to 2026), the euro view puts the 60/40 benchmark's annual return about half a point lower and its worst drawdown about 7 points deeper than the dollar figures the column showed.
- Fix
Withdrawal rates say Unavailable instead of showing a false 0%
- When a safe or perpetual withdrawal rate could not be calculated, or the history was too short to test one, BestFolio showed 0%. It now says Unavailable or Insufficient history, and a real 0% rate stays visible.
- The leaderboard sorts missing rates last and leaves them blank in the CSV export.
- Data
Price histories of 13 European listings and one US fund are corrected
- Our price source recorded some European listings in the fund's own currency for part of their history: the first two weeks of Xtrackers S&P 500 Defensive Shareholder Yield in Frankfurt (XUDY) in dollars, and all of 2008 for iShares $ Treasury Bond 1-3yr (IBTS) and iShares $ TIPS (ITPS) in London, like the first weeks of SPDR MSCI ACWI (ACWI), in US cents. Their history showed a one-day fall of 13% to 99% that never happened. Those prices are now converted at that day's exchange rate, and a few other stray prices on SGLP, DBMG, FREM, 3USL, IB01 and LQQ now show the fund's real move.
- Share splits our source did not adjust are taken out of the history before them, so these listings no longer fall 96% or more on the day of the split: WisdomTree EURO STOXX 50 3x Daily Leveraged (3EUL, 25 for 1 on 11 May 2026), Amundi Nasdaq-100 Daily (2x) Leveraged in Milan (LQQ, 200 for 1 on 9 July 2026) and SPDR MSCI ACWI IMI (IMID and SPYI, 25 for 1 on 2 January 2015). The Victory Pioneer CAT Bond fund (CBYYX) no longer shows a 0.75% loss on 8 December 2023, a day its value did not change.
- No published strategy or portfolio holds these listings, so strategy results do not change, and the liquidity shown for UCITS equivalents is the same. Anyone who looks one of them up sees the corrected history.
- Data
S&P 500 history before 1987 now includes dividends and capital gains
- Before 1993, backtests extend US stocks (SPY and the funds built on it) and the S&P 500 benchmark with the Vanguard 500 Index Fund. As our price providers serve it, that fund has no distributions before 1980 and none of its capital-gains payouts from 1979 to 1986, so those years trailed the index by 2 to 9 points: 1985 showed +22.7% where the S&P 500 returned +31.7%. For 1976 to 1986 backtests now use the S&P 500's own daily total return.
- Before October 1985, Nasdaq 100 history (QQQ) now comes from a large-growth stock index instead of a Vanguard growth fund whose history there is monthly prices without dividends, with one-day drops of 7% to 14% each September.
- Data
Bond and real estate fund history before 1990 now includes its income
- Our price provider has no record of the interest and dividends several older funds paid before 1989 or 1990, so their early history showed the price alone. That left out 8 to 15 points a year of income from the funds behind high-yield, corporate, long Treasury and aggregate bonds (HYG, LQD, TLT, AGG, BND) and about 6 points a year from the real estate fund behind VNQ. The missing payments now come from a second provider's record, and the corrected years match the funds' own annual reports to within about half a point.
- With the S&P 500 correction above, 141 of the 187 published strategies show a different headline figure once each backtest is re-run, most by less than half a point of annual return, and changes after 1990 stay under half a point. The largest are on strategies that held US stocks, bonds or REITs in 1985 to 1989: HAA-Simple Leveraged 3x's annual return rises from 22.0% to 25.5%, and RPEA Adaptive Defense's worst drawdown improves from -65.0% to -57.7%.
- Fix
Leverage now shows in the results of fixed-weight portfolios
- If you turned on equity leverage for a fixed-weight portfolio, its holdings already listed the 2x or 3x funds to buy, but its backtest chart, its metrics and its dashboard card still showed the portfolio without leverage, and nothing said so. They now include the leverage, as they already did for walk-forward portfolios, so the curve of these portfolios changes: returns rise and drawdowns can deepen. The Leverage impact card, which showed dashes and an error for these portfolios, now compares them with and without leverage.
- Leverage is modelled the way walk-forward portfolios model it: at each month end, the leveraged share of each broad stock fund that has a 2x or 3x version, such as SPY, QQQ, IWM, EFA or EEM, moves into that version and is held through the month. Bonds, gold, cash, sector funds and funds that are already leveraged are left as they are, and before a fund's own price history begins (SPY's starts in 1993), that part of the backtest stays unleveraged.
- On the portfolios this concerns, CAGR rises by 0.2 to 1.8 points a year and the worst drawdown deepens by up to 5.2 points.
- Feature
Annual returns for every variant, a stress windows table, and CSV downloads
- The annual returns matrix now covers every variant, not only each strategy's primary one: switch to Every variant, or open one strategy's other variants from its row.
- A new Stress windows table lines up every strategy's return and worst drawdown through the dot-com bust, the 2007-2009 financial crisis, Q4 2018, the COVID crash and 2022. Both tables download as CSV.
- The page is now linked from the leaderboard, the Research menu and the stress windows card on each strategy page. A strategy whose history starts on December 31 no longer shows a 0.0% return for that year.
- Fix
The Ulcer Index reads as a percentage everywhere
- The leaderboard showed the Ulcer Index as a fraction, 0.07, while backtest and library pages showed the same kind of figure as 6.79. Every page and the leaderboard's CSV download now show it as a percentage, for example 6.79%, so one strategy reads the same way wherever you look.
- Only the display changed: the underlying values and every ranking are the same.
- Fix
Your ETFs view appears only when a saved ETF choice applies
- The portfolio page offered a Your ETFs view whenever you had saved ETF preferences, even when none of them applied, such as a fund the September 24 split moved into a group of its own. That view then showed the same tickers as the default one. It now appears only when at least one of your saved choices applies.
- Improvement
Leaderboard: sort by MAR, plus the Keller ratio and 10-year returns
- The Calmar column now sorts like the others. On Full History it is labelled MAR, the name for CAGR divided by max drawdown over a strategy's whole record; the trailing and custom periods keep the name Calmar.
- Show all columns adds a Keller ratio column next to it: the CAGR scaled down by the gain needed to climb back from the worst drawdown. It reads like a return (10% CAGR with a 20% drawdown gives 7.5%) and is 0 once the drawdown reaches 50% or when CAGR is negative. The methodology page gives the exact formula.
- Show all columns also adds the annualised 10-year return. The key-metrics view that phones open on is unchanged: choose 10Y in the period selector to rank every column over the last ten years. The new columns sort and are in the CSV download.
- Data
London prices that switched between pence and pounds are kept in one unit
- Our price source sometimes records a London-listed fund in pounds instead of pence, for a day or for months, and then switches back. Invesco Physical Gold (SGLP) showed a 99% fall on 27 January 2026 and a jump of almost 10,000% in July, while its price hardly moved.
- Prices are now checked when they arrive and kept in the unit the listing trades in. The stored history of the three London listings where it happened, SGLP, IQMX and DBMG, is corrected.
- No published strategy or portfolio holds these listings, so strategy results do not change.
- Improvement
Star the variants you follow, not whole strategies
- Each variant now has its own star on the leaderboard and on its strategy page. Your Favorites page and the Favorites only filter on Signals show just the variants you starred, so starring one HAA variant no longer brings in all 18.
- The star on a catalog card adds that strategy's default variant; click it again to remove every variant of that strategy you had starred.
- Nothing you saved before disappears: each strategy you had starred now shows all of its variants starred, so you can remove the ones you do not follow.
- Fix
Leveraged fund labels match the issuers
- Strategy pages labelled EURL, Direxion's FTSE Europe fund, as 2x. It is 3x, and the label now says so. ERX, Direxion's energy fund in Chimeric, is now labelled Energy 2x instead of showing only its ticker.
- Backtests and signals are unchanged: the calculations already used each fund's actual leverage, only the labels were wrong.
- Improvement
MCP: every strategy's asset universe in one call
- The list_strategies tool in the BestFolio MCP server takes a new include_universe option. With it, each variant comes back with the tickers it can hold, so one call covers the whole catalog instead of one call per strategy.
- Without the option the answer is exactly as before, so everyday calls stay small.
- Feature
RSS feeds for the blog and the changelog
- Feed readers now find the blog's RSS feed when you give them bestfolio.app or the blog's address, and the blog page links to it.
- The changelog has its own feed at bestfolio.app/changelog/feed.xml with the latest 50 entries, linked from the changelog page.
- The Portfolio Library item in the blog feed keeps its original date, so it no longer shows up as new.
- Improvement
A subscriber's words on the Where should your money go? guide
- The guide now shows a quote from a US founder subscriber right under the systematic, rules-based route, on why a rules-based approach suits someone who has never had the stomach for large drawdowns. It is published with permission.
- Its last sentence, on the rigor and transparency of the framework, also appears on the research page under Our Approach.
- Improvement
The Allocation Timeline keeps a strategy's constant holdings at the base
- When a strategy holds part of its allocation at a constant weight, such as the 60% in SPY that Adaptive 60/40 keeps every month or the stacked core of Buy the Dip, that part now stays at the bottom of the Allocation Timeline instead of moving up and down the stack, so the part that rotates reads cleanly on top.
- Fix
Filtering the Signals page by Risk-On or Risk-Off shows every matching strategy
- Strategies use different words for the same state, and the regime filter offered one button per word, so Risk on or Risk off showed a single row while many more carried that badge. It now offers Risk-On, Mixed and Risk-Off, labelled like the badges, and each shows every strategy in that state.
- The regime count on the dashboard now counts those strategies too.
- Fix
A portfolio backtest that cannot run now names the ticker without prices
- When a portfolio held a ticker we have no price history for, its backtest said only "Backtest failed". It now names the ticker and, when a listing we hold prices for is one typing slip away, suggests it, for example "No price history found for VWEC.DE. Did you mean VWCE.DE?"
- The portfolio editor now checks each fixed ticker as you enter it, and the tickers already in a portfolio when you open it. A likely typo is flagged on its row with a one-click fix and has to be fixed before saving. A ticker we cannot find any prices for is flagged too, but can still be saved.
- Fix
Strategy pages and your dashboard stay put while they load
- On a strategy page, the research and FAQ sections no longer show up under the title and then get pushed off the screen, and the Current allocation card keeps its size while its data loads.
- Your dashboard's cards and the Full dashboard's Current Holding row now load in place, and the Resume your review link is there from the start instead of pushing the page down, including when you come back to the tab.
- On Portfolios, the monthly review checklist opens at its full size.
- Data
Backtests now hold their positions between signals
- Between two signals, our backtests used to put every holding back to its target weight at each day's close. That is a daily rebalance no one following the signals makes, and it cost nothing in the model. A follower buys the target and holds it, so the weights drift with prices until the next signal. Backtests now do the same: they buy at each signal and hold, a monthly signal trades the drifted positions back to its target, and the cost of each trade is measured from those drifted positions. Portfolios now hold their strategies the same way between rebalances.
- Strategies that hold one fund at a time do not change, GEM for example, and 134 of the 187 released strategy variants move by less than 0.1 points of CAGR a year. The largest changes are in strategies that hold leveraged funds next to other funds, and they go both ways. Buy the Dip Standard rises from 22.5% to 24.5% a year: the daily reset kept trimming its winning TQQQ position back to target. White Knuckle falls from 14.9% to 12.3%: resetting its 3x stock and 3x bond funds to target every day, for free, had added a gain that a follower who rebalances monthly does not get. The TQQQ/TLT Dual-Gate falls from 19.1% to 17.7% and its worst drawdown deepens from -62.5% to -72.9% in 2000: between signals its 3x Nasdaq position grows well past its 60% target, so a crash hits a bigger position. Drawdowns move the other way too: AWEA's worst drawdown improves from -58.8% to -48.6%. Portfolios move with the strategies they hold: most fixed-weight portfolios by less than 0.25 points of CAGR a year and every library model portfolio by less than 0.2, while walk-forward portfolios move between -0.5 and +1.5 points. Blends of very volatile funds can move more, because re-weighting them to target every day had added a gain that a holder who rebalances monthly does not get. These figures measure the holding change alone, on the price data before the same day's correction of pre-1990 fund histories (see the two entries above on pre-1990 fund histories); with both applied, Buy the Dip Standard shows 24.7%, the TQQQ/TLT Dual-Gate 18.8% and AWEA's worst drawdown -47.7%.
- The methodology version on the status page and in the API changes from daily-reset-v1 to drift-until-flip-v1. If your automation pins that value, as our API docs suggest, it stops acting until you review this change and update the pinned value.
- Fix
A bad price print can no longer produce a published backtest
- A zero or infinite price on a fund a strategy holds now stops that backtest from being published, and the last good one stays live, instead of turning into a result like -100%.
- The nightly update leaves a strategy's figures unchanged when a held fund prints an unusable price, and one failing strategy no longer holds up the others.
- Gaps in a held fund's price history are listed in the backtest's data notes.
- Improvement
Strategy counts are exact and split tactical from fixed
- The home page now gives the exact number of published strategies and splits it into tactical strategies and fixed allocations, instead of calling them all tactical.
- Strategy counts now update within five minutes of a release.
- Fix
Strategy pages date the original research, not live signals
- The history line on strategy pages said live signals had been published since the year the strategy's research first appeared. It now gives that year as the original publication date and says every result shown is a BestFolio backtest simulation.
- The performance table now states the fill convention: every rebalance fills at the signal-day close, net of modeled transaction costs.
- Fix
The dashboard shows the allocation of the portfolio you selected
- After you switched portfolios, the dashboard could show the previous portfolio's holdings under the new portfolio's name while the new one loaded, and keep them if the earlier request answered late.
- It now shows only the allocation of the portfolio on screen, and says Loading your allocation until it arrives.
- Fix
Portfolios that hold a strategy twice show their figures again
- When a portfolio held the same strategy in two sleeves, the dashboard showed no backtest figures for it and the Portfolio Health card did not appear on the portfolio page.
- Both now count that strategy at the combined weight of its sleeves, as the portfolio backtest already did.
- Improvement
The About page says who is behind BestFolio
- BestFolio is an independent, founder-run project, and the About page now says so plainly instead of describing a team.
- Improvement
BestFolio now says how it uses AI tools
- We use AI tools to help with research, software development and writing, and a person reviews everything before it is published. A short section on the About page, How BestFolio is made, says so, and the methodology page and every blog post link to it.
- Fix
ETF Prefs lists only the asset classes you can choose in
- Settings > ETF Prefs no longer lists asset classes that offer a single fund, since there is nothing to choose there.
- A fund saved before the September 24 split into one-exposure groups, such as VGIT saved for the 7-10 year Treasury group, was already being ignored, yet the list still showed it as your choice with a blank expense ratio. It now shows the fund your trades use, marks the old choice as not applied, and one click clears it.
- The expense ratio column showed each fund's ratio multiplied by 100, 9.00 for SPY's 0.09%. It now shows the percentage.
- Fix
Shared portfolio links show figures in the currency you use
- A portfolio link you share now shows its backtest and metrics in your display currency. With EU mode on that means euros: until now a shared link always showed dollar figures, with no label, even while you were looking at euro figures yourself.
- The shared page says which currency its figures are in. Links shared before this change keep their dollar figures and are labelled USD; share the portfolio again for a link in euros.
- Improvement
Metric explanations link to how each metric is computed
- The explanation that opens next to a metric such as Sharpe, SWR, max drawdown or volatility now ends with a "How it's computed" link to that metric's entry on the methodology page. You will find it on the leaderboard, on strategy and portfolio pages and in the comparison tables.
- The methodology page's metrics table gains entries for volatility, the Ulcer Index and recovery time, and its max drawdown entry now says which views measure it on daily prices and which on month-end prices.
- Fix
Library cards show the same figures as their detail pages
- The CAGR, Sharpe and max drawdown on each Portfolio Library card were saved on 16 July and never refreshed, while the chart on the same card and the template's own page moved with every data update. A card could quote figures its own page no longer showed.
- Cards now take those figures from the same backtest as the chart and the detail page, so the two always match. Max drawdown moves most on the five walk-forward templates: their old cards carried the deeper day-by-day figure, while the library measures drawdown on month-end values, as the detail pages always have.
- The templates did not get safer: the card now shows the month-end figure, the same measure as the template's detail page, and labels it "Max DD (month-end)".
- Fix
The published strategy total no longer counts a withdrawn strategy
- One strategy was withdrawn in April at its author's request and has had no page since, but the published total still counted it. The total is now 98 published strategies: 77 tactical and 21 fixed.
- The European ETF alternative pages for BIL and GLDM no longer list it among the strategies that use them. No strategy page, backtest or leaderboard row changes.
- Fix
European alternatives: a larger Russell 2000 fund and US-only property for US real estate
- US small caps (IWM, VB and UWM) now point to the SPDR Russell 2000 UCITS ETF, ticker ZPRR on Xetra and R2US in London, Paris and Milan (ISIN IE00BJ38QD84). It tracks the same index as the fund we named before, holds the shares directly, has about EUR 4.4 billion in assets and has traded since 2014. The previous fund, iShares RU2K, is swap-based, launched in October 2024 and holds about USD 62 million in the share class we named; it still tracks the Russell 2000.
- US real estate (VNQ, IYR, XLRE, URE and REM) now points to the iShares US Property Yield UCITS ETF, IUSP (ISIN IE00B1FZSF77), instead of IWDP, a global property fund that is about two thirds US. It is labelled a close match, not an exact one, because its index keeps only property stocks with a forecast dividend yield of 2% or more.
- International real estate (RWX, VNQI), international small caps (SCZ) and international developed stocks (EFA, IEFA) are now labelled approximate instead of close: their European alternatives, IWDP, IUSN and SWDA, are mostly US stocks, which those US funds do not hold. Backtests, signals and published figures do not change, because they are computed on the US funds.
- Data
Prices from 24 October 2025 on 50 European ETF listings are corrected
- On 24 October 2025 our price source recorded 50 European ETF listings at the fund's value in another currency, for that day only. The London listing of iShares Core MSCI World (SWDA) showed a 34% jump that reversed the next trading day, and listings in Frankfurt and Milan showed jumps of about 16%.
- That day now carries the real move, worked out with the exchange rate of the day and checked against the market: SWDA shows +0.7% instead of +34%. One listing that has not traded since 2024 keeps its previous price for that day.
- No published strategy holds these listings, so strategy results do not change. A portfolio that holds one of them shows the corrected day from its next update.
- Fix
Behaviour Check: the right reason when a strategy cannot be scored
- When a strategy could not be scored, the watchlist said it did not rebalance often enough, and the strategy page said there was not enough live history. Often neither was true. In our 2012 to 2026 test of monthly strategies, almost every month that could not be scored was down to the market, not to how often the strategy trades: most of 2020, 2022 and 2023 fell into that gap.
- Both places now give the real reason. Either the strategy has too few rebalances in its history (yearly strategies, strategies that trade only occasionally, or a short history), or markets right now look unlike most of its history, in which case the check resumes once there are enough comparable stretches to judge against.
- Fix
Behaviour Check: corrected test figures on the methodology page
- Our 2012 to 2026 test of the Behaviour Check counted months it could not score as "in line". About one strategy-month in five could not be scored, because the market was in a state the strategy's own history had rarely seen, and most of 2020, 2022 and 2023 fell into that gap. The methodology page now reports those months separately and no longer calls 2020 the quietest year or 2022 the busiest.
- Of the months that could be scored, 95% read in line, and a typical month flags about 3.5% of the strategies it can score (we had said about 4%).
- When the market state was evenly split across a strategy's last six rebalances, the check could file it under either state depending on which of our server processes built it. Ties now go to the most recent month's state, so every build gives the same verdict.
- Feature
Ask a question or push back under any blog post
- Signed-in readers, free or paid, can now comment under a blog post and reply to a comment. Comments appear straight away, and anyone can read them.
- Comments show your first name and last initial, never your email address. You can delete your own comments at any time, and an author reply carries an Author badge and reaches you by email.
- Comments are plain text, up to 3,000 characters and 2 links, with a limit of 5 a day per account to keep each discussion readable.
- Improvement
The blog is one click away when you are signed in
- Blog now has its own link near the top of the sidebar, instead of sitting inside the collapsed Learn menu. A dot next to it means a post from the last 7 days that you have not opened yet. It clears once you open the blog.
- Your dashboard ends with a Latest research card that lists the three newest posts, with a link to all of them.
- The home page shows the same three latest posts to visitors who are not signed in.
- Feature
Flexible Asset Allocation joins the October strategies
- Flexible Asset Allocation (FAA), the 2012 model by Wouter Keller and Hugo van Putten, is now in the catalog as the fifth October strategy. Each month it ranks 7 asset-class ETFs on their 4-month return, volatility and average correlation with the others, holds the top 3 at a third each, and moves any pick with a negative 4-month return into short-term Treasuries.
- Its ranking weighs each asset's correlation with the others alongside its momentum, the same idea Chimeric Asset Allocation applies to its leveraged book. Rebuilt on the paper's own 7 mutual funds, the published rules came within half a point of the 14.2% a year the paper reports for 1998 to 2012.
- Most of its record predates the paper: from January 2013 its backtest returns 4.6% a year, against 12.6% before. It ships with full backtests and live signals for Pro subscribers, taking the catalog to 99 strategies.
- Fix
Subscribers can no longer start a second subscription by mistake
- The pricing page could show the Subscribe button to someone already on a paid plan, and checkout would then open a second subscription next to the first, with both billing.
- Checkout now refuses a second subscription and takes you to Settings instead. From there a founder on the monthly rate can switch to the founder annual rate, with the unused part of the current month credited.
- The pricing page and the founder pricing banner now read your own subscription status, so subscribers see Current Plan rather than a Subscribe button.
- Fix
Leaderboard drawdown columns now use true month-end values
- On the 10, 20 and 30-year views, on custom start years 10 or more years back and on Full History in euros, the Max DD, Ulcer Index, UPI, Calmar and Recovery columns were measured on the last Monday of each month instead of its last trading day, although the table footnote calls Max DD a month-end figure. On Full History in dollars it applied to Ulcer Index and UPI, and on model portfolio rows also to Max DD, Calmar and volatility. GEM Standard's 10-year max drawdown, for example, read -20.7% where its month-end values give -19.8%.
- These columns now use the same month-end values as the Sharpe, Sortino and best and worst month columns, in dollars and in euros, and the Strategy Comparison period selector shows the same figures. On Full History in dollars, Max DD, Calmar and Recovery keep the strategy page's daily figures and do not change. The 5-year view already worked this way and is unchanged.
- Nearly every row on these views changes in at least one of these columns. Max DD typically moves by under 1 percentage point and by up to 10.5: VNQ 200-Day Trend's 20 and 30-year max drawdown goes from -56.7% to -46.2%. On Full History in dollars, model portfolio rows now show the same Max DD as their library pages. All other columns are unchanged, and the CSV download carries the corrected values.
- Fix
Buy the Dip credits the Reddit community it came from
- Buy the Dip is not a BestFolio original. It is a Reddit community take on an older RSI dip-buying rule on the Nasdaq-100 whose original author we could not trace. Our 2024 version only reworked the aggressive and defensive holdings to add some return stacking. The strategy page, its author line and the research sources list now say so instead of presenting it as a BestFolio strategy.
- The rules, backtests and signals do not change. Buy the Dip no longer shows under the BestFolio filter on the strategies page.
- Fix
EU mode withdrawal rates now use euro-area inflation back to 1955
- In EU mode, the safe and perpetual withdrawal rates (SWR and PWR) now rise with euro-area inflation: the euro-area HICP from December 1996, and before that a fixed-weight average of German, French, Italian and Spanish consumer prices back to 1955. Withdrawal windows that start before 1955 still assume 3% a year, and the tooltips and the methodology page now say so.
- Before, the HICP series we used started in December 1996 and covers no full 30-year window, so on strategy pages and portfolios every EU-mode rate measured over 30-year windows rested on a flat 3% assumption, and the comparison table used US inflation. The EU-mode leaderboard showed the US-dollar figures under a euro label.
- Measured on 24 September 2026: HAA Standard's EUR SWR is 9.31% (the EU-mode leaderboard showed 10.43%, the dollar figure), Classic 60/40 is 2.70% and Inflation Compass Standard 2.89%. Bogleheads Three-Fund (40/20/40) rises from 5.64% to 6.31%, because euro inflation since 1988 ran below 3% a year.
- Fix
Pro members and API keys always get the full strategy detail
- For a few minutes after an anonymous visit, a request for a strategy's detail on /api/strategies/slug/{slug} made with your sign-in or an API key could receive a saved public copy: no current signal, and user_has_access set to false. Those requests now always reach our servers and get your own answer.
- An invalid X-API-Key on that endpoint now always returns 401, as the API docs say, instead of sometimes returning the public copy.
- Fix
7 more holdings now name the fund the backtest holds
- Some strategies showed a look-alike fund in their allocation, signal and buy instruction while the backtest held the fund the author chose: IEF (7-10 year Treasuries) for VGIT (3-10 year), TLT (20+ year) for VGLT (10+ year), ZROZ for EDV (a shorter zero-coupon Treasury fund), the unhedged BWX for Vanguard's currency-hedged BNDX, DFA's mutual fund DFSVX for AVUV, VNQI for RWX and UUP for USDU.
- 21 released strategy variants now show the fund they hold, among them Desert Portfolio, Golden Ratio, the 4-3-2-1 Dragon, Papa Bear, Mama Bear, the DMS Triad and GPMv, Chimeric, AWEA, Adaptive Asset Allocation and White Knuckle. Today's buy instruction changes for 5 of them: Desert holds VGIT (shown as IEF before), Golden Ratio holds AVUV and VGLT (DFSVX and TLT) and the 3 Dragon variants hold AVUV (DFSVX). Returns and drawdowns do not move: the backtests always held these funds. EU readers are now sent to a hedged global bond fund (VAGF) for BNDX, not an unhedged one (IGLA).
- A preferred fund saved in Settings now only replaces holdings of the same kind. Auto-Optimize had saved VGIT, VGLT, EDV, BNDX and USDU as cheaper versions of IEF, TLT, ZROZ, BWX and UUP, so strategies like HAA, KDA and Defense First showed a different bond or dollar fund than the one they hold, and a saved VTIP (0-5 year TIPS) replaced TIP. Those holdings now show the fund the strategy names; saving your preferences again clears the old choices.
- Fix
Buy the Dip page shows the RSI thresholds the strategy actually uses
- The Buy the Dip rules said the oversold state starts when RSI falls below 29 and ends above 31, and the overheated state starts above 81 and ends below 79. The strategy runs 29.7 and 30.3, and 80.8 and 79.2: thresholds of 30 and 80 with a 1% buffer on each side. The rules, the parameters table and the rules summary now show those numbers. Backtests and signals already used them and do not change.
- Methodology section 9 no longer says the walk-forward pages show how robust a strategy's lookbacks and thresholds are. Walk-forward re-estimates sleeve weights only, never a strategy's own parameters.
- Data
Flash-crash prices from 6 May 2010 and 61 other one-day errors are corrected
- Our price history kept prices from the 6 May 2010 flash crash as if they were closing prices. The Russell 1000 Value fund (IWS) showed -36% that day and +47.5% the next, when its real close was down 3.4%. 19 other tickers had the same kind of error that day, and it turned up 61 more times in 52 tickers, among them EFA on 5 February 2002 and DBC on 31 October 2008.
- Backtests now use the real close for each of those days. The worst drawdown of The Russell (DMS) was that single day: it moves from -39.3% to -33.1%, now set in October 1987. KDA Top 6 and KDA SmartStack drawdowns deepen by under a point, because the wrong DBC price had changed their November 2008 holdings. Annual returns move by about 0.1 points at most.
- Every price we store is now checked for this pattern. A known error is corrected when it arrives, and a new one-day move that reverses the next day is checked against a second price provider before it is kept.
- Fix
Short-term Treasury and GSCI holdings now name the fund the backtest holds
- Strategies that hold 1-3 year Treasuries showed IEI, a 3-7 year Treasury fund with more than twice the rate risk, in their allocation, signal and buy instruction, while the backtest itself held SHY (VGSH in the DMS strategies). GSG, the S&P GSCI commodity fund, showed as PDBC, which follows a different commodity index.
- 21 released strategy variants now show the fund they hold: SHY for 1-3 year Treasuries and GSG for the GSCI, among them VAA, DAA, LAA, KDA, Golden Butterfly and the Permanent Portfolio. The DMS strategies that hold VGSH show SHY, the same 1-3 year exposure. EU readers now get the 1-3 year UCITS fund (IBTS) instead of the 3-7 year one (CBU7).
- A preferred short-term Treasury fund saved in Settings now only replaces 1-3 year holdings. Before, a 1-3 year choice such as VGSH also replaced the 3-7 year IEI in strategies like Buy the Dip and All Weather.
- Data
Stacked-fund stand-ins now pay for their extra exposure
- Before funds like RSST, NTSX, GDE, MATE and CTAP launched, our backtests stand in for them with their parts at full weight: for RSST, the S&P 500 plus managed futures. That is 2 dollars of exposure per dollar invested, and the second dollar was free. Both parts already earn the cash rate on their collateral, so the stand-ins earned it twice.
- They now pay Fed funds plus 0.5% on the exposure beyond 100%, the same rule our synthetic 2x and 3x funds have always used. Only the years before each fund's launch change.
- Released strategies that hold one, annual return before and after this release: HAA Simple RSST 18.9% to 15.2%, HAA Quartet 15.5% to 12.6%, Return Stacked Quartet 13.6% to 11.5%, Dragon 4321 capital-efficient 11.5% to 10.1%, TQQQ/UPRO Trend SMA 14.5% to 13.9%, TQQQ Quadrant Stack 19.9% to 19.3% (Buffered 19.8% to 19.2%), DAA-G12 SmartStack 13.4% to 12.7% and KDA SmartStack 7.9% to 7.4%. The last 2 also include this release's other data corrections. Worst drawdowns move by less than 3 points.
- Data
Two bond-fund price errors from 1990 and 2000 are corrected
- Our price provider's history for two older bond funds had one impossible day each: T. Rowe Price International Bond gained 58% on 2 January 1990, and PIMCO Investment Grade Credit Bond doubled on 31 October 2000. Backtests use these funds for international bonds (BWX, BNDX) before 2007 and for corporate bonds (LQD, VCLT) before 2002.
- Backtests now give both days their true return. The largest effect is on strategies that held corporate bonds in October 2000: CDM's return for 2000 drops from 32% to 5%, and KDA Top 4's from 26% to about zero.
- Fix
Chimeric and AWEA pages now quote the same numbers as their cards
- The descriptions on both strategy pages still quoted our release studies: Chimeric at 29.8% a year with a -36.8% worst drawdown, and AWEA's worst fall at -56.6%, recovered by November 1991. The cards beside them showed the numbers the site computes.
- Both texts now quote their cards. Chimeric returns 30.4% a year with a -49.5% worst drawdown in the 2000-2002 bear market. AWEA's worst fall is -58.8%: about half of it in the three weeks of Black Monday, bottoming in August 1990, with the old high regained in January 1993. The comparisons in both texts were rerun on the same data.
- Also corrected: AWEA with Europe holds a 3x Europe fund, not a 2x one, and the energy fund in Chimeric (ERX) has been 2x since 2020.
- Data
International stock history for 1989 to 1996 now uses the right fund
- From September 1989 to April 1996, backtests filled developed-market international stocks (EFA, VEA, VEU, VGK, IEFA, SCZ, VXUS and the funds built on them) with the wrong T. Rowe Price fund: PRTIX, a US Treasury bond index fund, instead of PRITX, its international stock fund. In 1990 those holdings showed a 32% gain in a year when international stocks lost 23%.
- They now use T. Rowe Price International Stock for those years. Strategies that held international stocks then show different year-by-year returns for 1989 to 1996, and their full-history annual return moves by up to about one percentage point in either direction as each backtest is re-run.
- Data
Holdings you add now backtest over their full price history
- The first time a ticker was priced, only the window that first lookup asked for was kept: 45 days when you saved it as a fixed holding, 5 years through some tools. Every later backtest stopped at that date, so a fund with prices back to 2008 could show only its last 6 weeks.
- A ticker's first lookup now keeps its whole price history. Holdings you add from today, such as the emerging-market bond fund EMB or the clean energy fund ICLN, backtest from their launch.
- Improvement
Charts describe their data to screen readers
- 17 charts were announced by a screen reader as an image with no name, so their numbers existed only as shapes on the screen. Among them: the portfolio growth and correlation charts, the Monte Carlo histograms, the allocation timeline and pie on strategy pages, the rebalance and leverage charts, the Factor Lens charts and both scatter plots.
- Each now carries a text description. Bar and pie charts list every value, line charts give the period, the first and last values and the low and high with their dates, and scatter plots give the range of both axes and the points they highlight.
- The annual returns charts now read out every year instead of only the first, last, lowest and highest, and every line chart's description says when its low and high happened, so a drawdown chart names the date of its worst drawdown.
- Fix
Leaderboard best and worst month now measure calendar months
- On Full History, the 10, 20 and 30-year views and custom start years 10 or more years back, the Best Month and Worst Month columns measured from one month's last Monday to the next month's last Monday, not from month end to month end. A big move in the last days of a month landed in the wrong month, so these columns could disagree sharply with the strategy page: Chimeric Asset Allocation showed a worst month of -39.7%, while its worst calendar month, April 2000, lost 20.0%.
- Both columns now use calendar-month returns from month-end values, the definition the strategy page, the backtest and the Sharpe and Sortino columns already use. On Full History in US dollars they now match the strategy page exactly. The 5-year view already worked this way and is unchanged.
- Almost every row on the affected views moves, typically by about 2 percentage points, and nearly 9 in 10 worst months become less severe. Rankings and all other columns are unchanged, and the CSV download carries the corrected values.
- Data
CTAP is now described and modelled as the fund it is
- CTAP was listed as a Return Stacked fund launched in 2024. It is Simplify's US Equity PLUS Managed Futures Strategy ETF, launched in December 2025, which holds 100% US stocks plus 100% of Simplify's managed futures strategy (CTA). Its name is corrected everywhere it appears.
- Backtests stand in for CTAP before its launch with the S&P 500 plus managed futures. That stand-in carried only half the managed futures the fund holds. It now carries the full amount, using CTA itself from CTA's 2022 launch. TQQQ/UPRO Trend SMA, which holds CTAP when US large caps lead, is the one released strategy affected; its new figures, which also include the financing change, are in the entry above.
- The TQQQ/UPRO Trend SMA page listed DBMF, GLD and DFSVX among its holdings. The strategy holds CTA, UGL and USMV in those slots, and the page now shows the rules the backtest runs.
- The European alternative for CTAP now rebuilds both halves, the S&P 500 plus managed futures, instead of the S&P 500 alone.
- Fix
Fixed-ticker sleeves keep their full name
- Typing a ticker into a fixed sleeve saved only its first letter as the sleeve's name, so RSST appeared as R on your portfolio pages. Changing the ticker afterwards kept the old letter.
- The editor now names a fixed sleeve after its ticker as you type, and sleeves saved with a single letter have their full ticker back.
- The line under a portfolio's chart that says which holding limits the backtest window now names that holding's ticker, so it matches the price history it is talking about.
- Feature
Compare strategies over rolling windows up to 30 years, with a summary table
- The Rolling CAGR chart on Performance now offers 15, 20 and 30-year windows next to 1, 3, 5 and 10. A window is offered only when at least one selected strategy has enough history for it.
- A table under the chart summarizes every window of the chosen length for each strategy: worst, median and best annualized return, the month the worst and best windows ended, the share of windows that finished positive and, with two or more strategies, the share of shared windows each one led.
- The Head-to-Head by Era grid gains the same 15, 20 and 30-year horizons, so two strategies with deep histories can be compared from any start year across a full generation.
- Fix
Tooltips and the factor chart work without a mouse
- The two question-mark icons in the portfolio editor's table header explained what a sleeve is and what the holdings column does, but only while the mouse hovered them. There was no way to reach either one from the keyboard, and a screen reader was never told they existed.
- Both now behave like the tooltips elsewhere in the app: reachable with Tab, opened with Enter or Space, closed with Escape, and read out properly.
- The factor exposure chart had the same shape of problem: it listed only the statistically significant factors in words, so the other loadings were readable as bar length and nothing else. A screen reader now gets all six.
- Fix
The builder now says which holding limits a portfolio's date range
- A blend can only be tested over the period where every holding has data, and the one with the shortest history sets the start. The builder already explained this when the holdings were strategies, but said nothing at all when they were ETFs, so a portfolio of recently listed European funds showed a short range and dashes for every metric with no reason given.
- The hint now covers ETF holdings as well, naming the fund and the date its price history starts, so you can drop it or accept the shorter window knowingly.
- Cash never limits a range and is ignored. Single-holding portfolios show no hint, as before.
- Fix
UCITS substitution no longer replaces European holdings
- A portfolio built in EU mode from European funds could be offered a UCITS substitution that replaced every holding with CSPX. One reader held MSCI World, global clean energy, emerging markets and a treasury fund, and all four would have become a single S&P 500 tracker.
- The substitution table is keyed by US tickers, so a fund that was already European was never found in it and fell through to a best-effort proxy. That proxy is CSPX for anything it reads as a stock fund.
- Holdings that are already UCITS are now recognised and left alone, and the result says so instead of showing an empty substitution list. US holdings are substituted exactly as before.
- Fix
AWEA now appears on the leaderboard
- AWEA was released on 21 September with full backtests, but the leaderboard kept listing 184 rows instead of 186 and left both of its variants out. Its own strategy page, metrics and signals were correct the whole time.
- The leaderboard is served from a prebuilt ranking that was only refreshed when more recent market data arrived. A strategy added with a complete history ending on the same day as every other strategy did not look like newer data, so the ranking was never rebuilt.
- The ranking now also tracks which strategies it covers, so a newly released strategy shows up as soon as its backtests are stored.
- Improvement
The AllocateSmartly comparison and review are now two distinct pages
- Our long-form AllocateSmartly write-up is now titled as what it is, a review, and the shorter product comparison is titled as an alternative. They previously carried near-identical titles and competed for the same search result.
- The product comparison now links to the full review, so you can get from the summary to the methodology and the numbers in one click.
- Fix
Portfolios that were stuck on an old date now update again
- Portfolios using the bond-to-cash option had been showing results that stopped on 10 September. Their daily update is running again and the charts now reach the latest close.
- A few portfolios whose saved weights added up to slightly more than 100% could not be backtested at all. Their weights are rescaled to exactly 100%, keeping the same proportions between strategies, so they open normally again.
- Walk-forward portfolios no longer round their weights in a way that can push the total past 100%.
- Fix
Watchlist and Risk vs Return load again for Pro subscribers
- Fixed an error that prevented Pro subscribers from opening Watchlist and Risk vs Return when loading the full strategy catalog.
- Both pages now load catalog summaries separately from selected-strategy comparisons. Risk vs Return keeps its shared 30-year window.
- Feature
Four new strategies for October
- Chimeric Asset Allocation, a community strategy by u/Separate-Ad-9633 from r/LETFs, leads the batch: ten leveraged assets scored on nine momentum signals each, every score adjusted for how correlated that asset already is to the rest of the book, with the top four held at a quarter each. A negative TIPS signal retreats part of the way to Treasuries rather than all of it. The author checked our rebuild against his own and the two agree on the holdings in 93% of months.
- AWEA, from the same author, joins as the second community pick: a leveraged all-weather book where each of six sleeves is trend-gated on its own signal, and a sleeve that switches off sends its weight down a ladder of long Treasuries, gold, intermediate Treasuries and cash rather than into one fixed defensive asset. Its card starts in 1972 rather than 1994 so that Black Monday, its worst drawdown at -59%, is inside the window you see and not behind it.
- Also new: Five-Asset Momentum Rotation and VIX Adaptive Momentum. All four ship with full backtests and live signals for Pro subscribers, taking the catalog to 98 strategies.
- Data
Methodology page now describes the mid-cap data chain accurately
- The page said mid-cap history reached a 1981 index. That last step never had a data source, so in practice mid-cap backtests stopped in 1998.
- It now names the Fama-French series that actually carries the history back to 1926, and lists mid caps among the deep tiers that are reconstructions rather than traded prices.
- Improvement
Strategy cards now say how long a strategy stayed down, not just how far
- Maximum drawdown tells you how deep the worst fall was. It never tells you how long you would have waited to get back, which can be years.
- Each card now states how far it is below its previous high, when that high was set, and the longest stretch it has ever spent below one.
- A strong recent return does not mean a past high has been regained, so the two numbers now sit side by side.
- Data
Mid-cap strategies now backtest decades further back
- Strategies holding mid-caps stopped in 1998 because mid-cap price history had no deeper source, while small-cap and large-cap history already reached the 1950s.
- Mid-cap history now extends back to 1926 using a published academic size-decile series, so these backtests include 1987 and the crashes before it.
- Reported drawdowns on the affected strategies get deeper as a result, because harder years are now inside the sample.
- Fix
Strategy pages quote a variant you can actually select
- Some strategy pages showed the return and drawdown of a variant we had withdrawn, so the headline numbers described something you could not choose.
- The headline now always comes from the default variant on offer.
- Fix
Catalog filters stay on screen on a phone
- On a narrow screen the Sort and metrics menu opened past the left edge, so about half of its options were cut off.
- The filter rows could not wrap, which pushed the last rebalance option out of view and made the catalog scroll sideways.
- Both are fixed, and the rebalance pills are now announced as a group by screen readers.
- Improvement
Clearer complaints route, and your terms by email
- The Terms now say how to complain, that we answer in writing within 30 days, and which conciliation board can help if our answer does not settle it.
- As a consumer you can go to the courts where you live. The old link to the EU dispute platform is gone because that platform closed in 2025.
- Your subscription receipt now contains the withdrawal terms and the withdrawal form in the email itself, so you have your own copy.
- Fix
Payments are recorded correctly when Stripe events arrive out of order
- A payment confirmation that reached us before the subscription record could fail to match the account, so the payment was only recorded on a later retry.
- Access was never affected, but anything that follows the payment, such as a referral credit, could be applied a few minutes late.
- The payment is now matched to the account on the first attempt.
- Improvement
How to use your 14-day withdrawal right
- The refund policy now says when the 14 days start, how to tell us you are withdrawing, and by when you are reimbursed. A statutory withdrawal does not need our approval.
- There is a standard withdrawal form on the page. You can use it, but any clear message works just as well.
- Withdrawing is not the same as cancelling renewal, and the page now says which is which.
- Improvement
Refund terms are one click away everywhere
- Every place we mention refunds now links straight to the full terms, including the landing page, sign-up, the upgrade prompts and the strategy tabs.
- Those surfaces now state your statutory 14-day withdrawal right in one line, with the complete policy under Refund terms and statutory rights.
- On the landing page the refund wording sits on its own line, separate from Cancel anytime, because cancelling a renewal and the statutory withdrawal right are different rights.
- The refund policy itself has not changed.
- Improvement
Clearer refund wording at checkout
- The disclosure under the Pro checkout button now states your statutory 14-day withdrawal right in one line.
- The refund policy itself is unchanged. The full terms stay one click away, under Refund terms and statutory rights.
- Improvement
Compare strategies back to 1920 on the leaderboard
- The leaderboard's custom start year used to stop 30 years back. It now reaches 1920, so the deep-history strategies can be ranked on one shared window.
- That covers the Great Depression for Paired Switching and UIS (1920), Classic 60/40 (1922) and Century Momentum (1928), plus stagflation starts like HAA (1974) and VAA (1978).
- The picker stays short: every year back to 1985, then only the years a strategy's history actually begins.
- Strategies that start after the year you pick still appear with their own shorter record, and the Years column shows the coverage actually used.
- Improvement
Founder pricing is easier to see
- The pricing page highlights the founder rate and shows the countdown to 6 October 2026, 11:59pm Pacific.
- Annual billing now offers the founder rate until that deadline. You keep your founder rate for as long as you stay continuously subscribed.
- Active founders on monthly billing can review and switch to annual from Settings at any time.
- Fix
Scroll portfolio tables with the keyboard
- Model rebalance, sleeve breakdown and monthly return tables can receive keyboard focus and scroll with arrow keys.
- A visible focus outline shows which table you are reading, including with enlarged text.
- Fix
Keep your place after a checkout error
- Subscribe waits for sign-in readiness, then stays keyboard-focusable while checkout is loading.
- Repeated activation is blocked while checkout is loading, and errors are announced to assistive technology.
- Security
Less unnecessary software in the web server
- Build and test tools are kept out of the software that serves the web app.
- Release checks verify that the streamlined server starts and serves its built files.
- Improvement
Recover more easily when a page fails
- If a page fails to load, you can retry, reload or return home.
- Crash reporting requires analytics consent and stops when you withdraw it. Limited diagnostics exclude portfolio details and raw error messages.
- Fix
Form controls respond before charts update
- Strategy and portfolio controls now show your selection before charts and comparison statistics refresh.
- The dashboard's leveraged-strategy filter updates without rebuilding the rest of the page.
- Fix
Easier access after subscribing
- The API reference lists its endpoints again, ready for your scripts and integrations.
- AI assistants can discover and connect to BestFolio over MCP.
- After subscribing, you land in the app with links to explore strategies or set up API and MCP access.
- Fix
Your pricing currency stays selected
- Choosing EUR or USD now keeps that choice even if automatic location detection finishes later.
- Your chosen currency also stays selected when you reload the pricing page.
- Improvement
Choose portfolio strategies with a keyboard
- Use the arrow keys to explore strategy choices and Enter to select one. Escape or Tab closes the picker without changing your selection.
- Each sleeve's list keeps its label while you search, and keyboard navigation keeps the highlighted strategy in view.
- Improvement
More deliberate blog emails
- We can keep smaller posts on the blog without emailing subscribers, while highlighting research worth an announcement.
- Routine marketing emails stop at a target of four per month. Posts we explicitly prioritize can use up to two extra emails, with a ceiling of six.
- Improvement
Methodology links the Stability working paper
- The methodology page credits BestFolio Research and links to the SSRN working paper behind the Stability column and its replication archive of code and result tables.
- Improvement
Load price history with less database overhead
- Drawdown and backtest price reads now load only the fields needed for their calculations, while preserving the same adjusted prices and freshness checks.
- Fix
Keep navigation reachable with larger text
- Public navigation switches to a compact menu when enlarged text needs more space. Sign-in and every navigation link remain available in the menu.
- Compact header spacing leaves room for larger text on narrow screens.
- Improvement
New posts are emailed to subscribers automatically
- Blog posts published from 16 September 2026 onward are announced to subscribers by email, with a reminder to us first and the send following a few days later if it has not gone out.
- Posts published before that date are never emailed retroactively, so switching this on does not resend the back catalogue.
- Fix
Founder history stays consistent in billing reports
- Billing reports retain the founder classification of earlier prices when checkout prices change.
- Improvement
Clearer internal acquisition reporting
- Internal reporting now connects acquisition sources to observed product use, payment and retention. Small groups are hidden, and missing history is clearly labeled.
- Separate monthly cohorts show retention once enough time has passed, with privacy protection across overlapping views.
- Improvement
Blog thumbnails and clearer research links
- Every blog card has a thumbnail, including older posts without images and articles with broken external charts.
- Three strategy spotlights now lead to expanded strategy pages. The Signals API introduction is linked from its reference and AI connection guide.
- Improvement
Backtests are easier to explore on mobile
- Search strategy variants on your phone, then see the published period, key metrics and growth chart first. Expand the remaining metrics, regime history and data sources when needed.
- Fix
Metric explanations are easier to read
- Metric explanations stay open while you move the pointer into them. Keyboard and screen-reader users keep the metric name separate from its explanation.
- Fix
Cancellation reminders include weekends
- Cancellation reminders now run every day, including weekends, while keeping the existing reminder window and duplicate-send protection.
- Improvement
Lighter dashboard loading
- The optional survey loads separately when the Full Dashboard needs it, keeping its code out of the initial dashboard download.
- Fix
Accessible allocation and regime details
- Allocation bars describe every holding and percentage to screen readers. Regime explanations support keyboard focus and Escape, with dashboard strategy links kept separately accessible.
- Fix
EUR prices keep tax included
- EUR checkout and founder annual switches now stop if a price would add tax on top of the advertised amount.
- Fix
Share backtests with a keyboard
- The Share popup supports Tab and Escape, labels its link field and returns focus to Share when closed. It also fits small screens.
- Fix
Clearer portfolio alert conflicts
- If another session edits or deletes a portfolio while you save its alert setting, you now get a reload message.
- Fix
Readable strategy summary conditions
- Threshold conditions use complete wording in both search descriptions and the visible strategy introduction. Strategy description sentences keep their separating spaces.
- Fix
First-use measurement waits for consent
- If analytics consent takes longer to confirm, a Main allocation or completed comparison can still be counted while you are viewing it. Views that have gone away are not replayed.
- Fix
Summary statistics fit narrow screens
- Strategy and benchmark statistics use compact spacing on small screens so both columns remain readable without widening the page.
- Improvement
Clearer measurement of completed workflows
- Internal reports distinguish completed research and Main reviews, using consented observations and keeping missing historical data explicit. Payment outcomes are joined to the same visitor journey.
- Improvement
Your chosen Main and its review dates
- After you choose or customize Main, its current allocation can show verified holding periods and the next review date together. Analytics, when enabled, records reaching this view without sending portfolio identifiers or claiming any trades.
- Improvement
Measure completed research with your consent
- With analytics enabled, completed research is counted after a chosen comparison displays performance and risk results. Failed or incomplete comparisons do not count, and portfolio identifiers are not sent.
- Fix
Analytics consent across navigation
- When you enable analytics, navigation between public and account pages preserves your consented analytics identity. Declining analytics still stops collection.
- Improvement
A clearer monthly review checklist
- Review your allocation, holding period and next review date without confirming that you traded. If your allocation or review dates change, recheck them before completing the review.
- Feature
Cashflows for individual strategies
- Illustrate deposits and withdrawals in a selected portfolio sleeve, with a visible rebalance schedule and any unfunded withdrawal shown. Copy the URL to retain your illustration.
- Fix
Clearer account forms and portfolio labels
- Sign-in and sign-up forms are easier to read in dark mode. Dashboard controls and portfolio labels have clearer contrast.
- Fix
Easier chart controls and readable summaries
- Chart series, date ranges and scales are easier to use with a keyboard or on a phone. Expandable summaries follow the visible series and selected period.
- Infra
Safer catalog review
- Catalog updates can now be reviewed in a private admin preview before any public changes.
- Improvement
Key portfolio information first on mobile
- The full dashboard puts current allocation and the next rebalance first on phones. Comparisons lead with key metrics and charts, with detailed tables available to expand.
- Fix
Clearer strategy introductions
- Strategy page introductions and search descriptions use the same complete sentences and clearer wording for conditional rules.
- Infra
Stronger checks for subscription updates
- Releases now verify subscription activation and repeated payment notifications before reaching members.
- Fix
Next signal dates on strategy pages are easier to read
- The next-signal date now uses a higher-contrast colour in light and dark mode.
- Fix
Comparison tables can be scrolled with the keyboard on small screens
- Summary tables on strategy and answer pages are now reachable with Tab when they scroll sideways.
- Fix
Performance comparisons stay responsive while you select
- Building a comparison one strategy at a time now sends one request per panel after a pause instead of one per click, so a quick multi-select no longer slows the page down for everyone.
- Comparisons support up to 30 entities, and the page explains the limit if you select more.
- Improvement
Keep leaderboard filters compact on mobile
- Open Filters when needed, with active filters and their removal controls always visible.
- Larger mobile controls preserve your saved view, full metric choices, sorting and CSV export.
- Improvement
Reach portfolio actions sooner on mobile
- Choose from all your portfolios with a compact mobile selector; desktop cards remain available.
- Current allocation and trades come before research, and the monthly checklist stays with your Main portfolio.
- The Main review link also works after switching portfolios within the page.
- Fix
See the status of your selected model allocation
- Portfolio allocation now shows its own loading or retry state while historical backtests run separately.
- Switching portfolios keeps delayed responses from showing the previous portfolio’s allocation.
- Feature
Add BestFolio to your home screen
- Install BestFolio from a supporting browser with a branded home-screen icon and an app-style window.
- The app remains online, with spacing for phone display cutouts and the home indicator.
- Fix
Use mobile navigation with a keyboard
- The mobile menu keeps keyboard focus inside it, closes with Escape and returns focus to the menu button.
- Notification filters have clearer contrast, accessible selected states and room to wrap on narrow screens.
- Improvement
Find strategy essentials sooner on mobile
- Search and educational starting paths come before catalog research links. Strategy pages lead with a short summary and the selected variant’s current allocation, holding period, data cutoff and next review.
- Detailed research remains available below the interactive view. Preview signals and restricted holdings stay separate from the current allocation.
- Improvement
Edit backtest dates without redrawing charts
- Changing the draft date range keeps charts and statistics steady until you apply it. Apply, Enter and the history presets use the same backtest calculations.
- Feature
Choose alerts for additional portfolios
- Opt each additional portfolio into signal alerts from its portfolio page. New portfolios start with this option off, and Main keeps your existing account notification settings.
- Updates arrive in labelled portfolio sections with links and model allocations. Main account dollar amounts are not applied to additional portfolios.
- Feature
Plan dated portfolio cashflows
- Add dated deposits and withdrawals to a portfolio backtest, with optional monthly, quarterly or annual repetition.
- See the applied dates, unfunded withdrawals and later deposits that restart a depleted balance. Copy the page URL to keep the illustration.
- Fix
Keep your customized Starter as Main
- Changing Starter Portfolio holdings now counts as your own portfolio choice, even if you keep its original name.
- Creating another portfolio preserves your customized Main, and cancellation messages use the same check.
- Improvement
See the exposure inside SmartStack
- SmartStack variants show capital weights and estimated product exposure across their published history, including defensive observations.
- The methodology explains leveraged Treasury positions, embedded managed futures and the difference between capital and exposure. Allocation rules are unchanged.
- Feature
Compare ordinary portfolios alongside strategies
- Your saved portfolios now appear in Performance and Correlations alongside strategies and benchmarks.
- Existing backtests are reused. When a history needs calculating, preparation progress appears before the comparison loads.
- Improvement
Reuse rebalance-date analysis across visits
- Completed rebalance-date comparisons are shared across servers, so repeat requests can reuse the same result.
- Fair-use limits apply to new calculations; opening a cached result does not use that allowance.
- Feature
Compare statistics for strategy variants
- Tick variants on a strategy page to see their performance statistics side by side with the selected variant and benchmark.
- The comparison follows your chosen date range and shows the period covered by each column when histories differ.
- Fix
Leaderboard rankings stay ready across weekends
- Leaderboard caches refresh when their date window or source data changes, reducing slow initial loads without changing ranking calculations.
- Improvement
Portfolio charts load less data upfront
- Portfolio backtests load their main chart first. Additional benchmark and sub-strategy histories load when selected, at their original precision.
- Improvement
Comparison measurement respects your analytics choice
- With analytics enabled, a comparison is counted only after all its results load. Failed and incomplete loads are excluded.
- Improvement
The treatment of missing prices stays consistent
- Backtests, drawdowns and momentum scores keep their existing gap handling across future library upgrades. Published results and strategy rules are unchanged.
- Fix
Scheduled check-ins and renewal recaps can be delivered
- Fixed delivery of the first-week check-in and pre-renewal recap for eligible paying members.
- Fix
Bond-to-cash backtests refresh reliably
- Portfolio backtests with bond-to-cash substitution can refresh their sleeve data without an intermittent database connection error.
- Fix
Telegram alerts show when connection is still needed
- Signal and drift alert switches warn when Telegram is not connected and link directly to connection setup.
- Telegram signals have their own section, and Notifications can be opened directly from a settings link.
- Fix
The backtest range explainer no longer disappears on slow blends
- On a portfolio that takes a while to backtest, the note telling you which sleeve sets the start of the common window sometimes went missing. It now loads reliably.
- Improvement
Explore the data and related research behind blog articles
- Articles link to the current methodology, related research and tools relevant to their topic.
- Strategy chips open the matching strategy page; category labels stay as text.
- Improvement
Article charts appear in the blog list and shared links
- Posts with a chart show a preview beside the title and excerpt, with axes and labels kept in view.
- Social cards use the article image. Posts without images keep their text layout.
- Improvement
Filter the leaderboard by rebalance cadence
- Filter strategies and library portfolios by daily, weekly, monthly, quarterly or annual schedules.
- Your selection is saved with your view. Shared links can open a selected cadence.
- Fix
Restart a monthly review after deleting its portfolio
- If you delete a portfolio during an unfinished monthly review, you can start again with your current Main.
- Completed monthly reviews are preserved.
- Improvement
Strategy backtests can illustrate a fixed monthly, quarterly or annual contribution or withdrawal, nominal or inflation-adjusted, like portfolio backtests
- See cashflow totals and ending balances on the strategy's net-of-costs history, including a selected date window.
- Copy the page link to reproduce the illustration.
- Fix
Monthly review panels stay single on Portfolios and the dashboard
- Your Main portfolio's monthly review stays in one panel on the Portfolios page and the dashboard, without duplicate panels or refresh requests piling up.
- Feature
Portfolio backtests can illustrate a fixed monthly, quarterly or annual contribution or withdrawal, nominal or inflation-adjusted
- The illustration includes cashflow totals, ending balances and a depletion date when applicable.
- Improvement
Strategy pages state the engine version, data version and publication date of the numbers they show
- The published result is identified beside the live and simulated history boundary.
- Improvement
Strategy pages respond faster when you switch tabs, toggle overlays or drag to zoom
- Signal history also stays responsive when you expand a row.
- Feature
HAA gains two gold-universe variants, 1x with GLDM and 2x with UGL, as a tenth momentum candidate
- Gold is held only when it ranks in the top four. Crisis insurance, not a return upgrade.
- Fix
The monthly review checklist loads once instead of refetching in a loop
- Your checklist still refreshes when you return to the window.
- Fix
The status page no longer nests a second main landmark
- Screen-reader landmark navigation now reaches the status content through one main region.
- Fix
The rejection log entry for the Kelly Signal family now describes Kelly's published rules and the current engine numbers
- The correction distinguishes our backtest additions and dates the metrics snapshot.
- Fix
The FMTM vs SPMO comparison loads without a chart rendering error
- The growth chart keeps its accessible description when the page first loads.
- Fix
The portfolio drawdown chart shows the full backtest history instead of clipping to the latest benchmark's start, and its preset windows match the equity chart
- Benchmark toggles apply to both charts. Time Underwater and the drawdown period count are labeled as full-period statistics.
- Feature
A public status page shows data and signal freshness, and the API docs gain an automation-safety guide
- Check the latest stored data and signal dates, the deployed methodology version, expected updates and published corrections.
- The API guide resolves variants by slug and explains freshness checks, deduplication, position reconciliation, order caps and human approval.
- Feature
Walk-forward portfolios accept a minimum and maximum weight per strategy, and a fixed sleeve
- Set weight limits for each strategy, or hold a sleeve at a fixed weight while the rest is optimized.
- The results show the bounds used, and saved portfolios keep them for future rebalances.
- Improvement
Strategy and drawdown pages state what is observed, what is simulated, and what you do next
- Strategy pages show data dates, signal timing and a contextual next step. Drawdown pages lead with observed fund history and separate the simulation assumptions.
- Improvement
The strategy catalog shows the maximum drawdown next to CAGR and turnover, and can sort by it
- Drawdown shows the same start year as CAGR, and its sort states that different measurement windows are not a like-for-like ranking.
- Improvement
Faster leaderboard pages
- The leaderboard now serves precomputed windows, so ranking pages load without rescanning years of daily history
- Improvement
Portfolio backtests now use a bounded queue
- Portfolio backtests that are not cached now run in a bounded queue, so one heavy request cannot slow everyone else
- Improvement
Portfolios always show where every percent is, including cash, and values carry their currency
- Unallocated weight stays visible as cash. Normalize to 100% is an explicit choice.
- Holdings carry their currency, and converted values show the FX date used.
- Improvement
Refund terms now come from one policy source; purchases before the cutover keep the promise made at purchase
- Refund pages, checkout disclosures and emails use the policy that applies to the purchase date.
- Improvement
Tax efficiency now tracks each purchase as its own lot, and the tax drag figure is labelled as a model
- Each increase starts a new holding period, with FIFO lots by default and a LIFO option in the API.
- Modeled tax drag now lists its assumptions and states that it is not a personal tax calculation.
- Improvement
Blog articles show their revision history, and moved articles redirect to their current home
- Reviewed updates include a dated revision note, and consolidated articles keep their established URL.
- Feature
A clearer monthly review for your Main portfolio
- A subscription receipt shows your Main portfolio's model state and next review date, or the step to choose a Main.
- The monthly review checklist saves your progress and records completion after you check the allocation, confirm trades or no change, and note the next review date.
- Signals now shows your Main portfolio first, with changed sleeves and before-and-after model states, followed by the strategy catalog and a favorites filter.
- Feature
Answer pages for the questions people ask AI assistants, with current numbers and source dates
- Compare leveraged ETF drawdowns, look up European ETF alternatives, and compare recent strategy model returns with their full backtests on three new answer pages.
- Strategy and tool pages now include concise answers, tables and visible FAQs. Dates identify the underlying history or available issuer review; missing verification dates are stated.
- Improvement
Pricing shows 2 plans, with annual billing and its saving stated plainly
- Free and Pro now appear side by side. Pro has a Monthly or Annual choice, with the yearly saving compared with standard monthly billing and the monthly equivalent shown.
- Monthly is selected while founder pricing is open. After it closes, Annual is selected, and existing founders keep their rate for as long as they stay continuously subscribed.
- Improvement
Strategy pages lead with rules, current signal and risk, and the FMTM vs SPMO comparison is linked where people look for it
- Strategy pages now open with the rules, the current signal when available and the historical maximum drawdown, using the same data as the page.
- The strategies hub explains how to choose a strategy and links to comparison, overlap, rankings and methodology. The tools hub and momentum ETF article link to FMTM vs SPMO, and the Kelly article links to drawdown tools.
- Improvement
The optional getting-started emails are explained where you set up your first portfolio
- The email choice now appears after you create your portfolio and lists the five getting-started emails over three weeks, alongside a separate choice for product updates and articles.
- Both choices still start off. Signal and account emails are unaffected, and you can change either choice in Settings at any time.
- Improvement
Every signal now names its data cutoff, holding period and next review
- A signal is dated at the close it is computed from, and that date was printed as 'Effective since' on the Current Allocation card and 'Effective from' on the preview card, next to a rebalance schedule that named a different day. Both cards now say the same thing in one line: computed at the Sep 30 close, held Oct 1 to Oct 30, next review Nov 2 at the open. The preview says it is provisional and recomputed each trading morning until its cutoff close, and US market holidays are applied to every date.
- The signal email, the onboarding snapshots, the PDF report and the signal export use the same four dates: JSON rows gain a period object and the CSV appends holding_start, holding_end and next_review after the price columns, while the existing fields keep their meaning. The email's Market Abuse Regulation line now states the day the recommendation is sent, with the price cutoff in parentheses.
- Feature
ETF preferences can now map aggregate-bond and total-market legs, without touching any published number
- Three members asked to trade BND where a strategy says AGG, or ITOT where it says VTI. Those tickers could not join the equivalence table, because that table also normalises tickers before backtests and would have rewritten published legs. A second, execution-only table now does the job: two curated groups, US aggregate bonds (AGG, BND, SCHZ, IUSB) and US total market (VTI, ITOT, SCHB), chosen under Settings, ETF Prefs.
- These preferences apply on /live, the Your ETFs view, the trade list, the execution allocation and the tickers your signal emails show, and nowhere else: backtests, stored signals and published numbers keep the ticker the strategy names. The settings page now says where every preference applies.
- Improvement
The backtest's fill timing is stated, and a delayed-close line shows what it is worth
- Every backtest fills a rebalance at the closing price of the signal day, so it earns the move from that close to the next one. The schedule we publish for followers is the next session's open, which does not capture that move. The methodology page and each strategy's signal history now say so plainly.
- The rebalance sensitivity card gains a 'delayed close' line that trades every signal one session later, holidays included, so you can see how much of a strategy's return rides on trading at the signal close. It bounds the gap; it does not estimate next-open fills, which our price history cannot model.
- Data
Robustness scores now count every strategy variant we ever backtested, retired ones included
- The Deflated Sharpe Ratio corrects each Sharpe for the best of N trials. N counted only the variants still active, so retiring a variant erased its trial and lowered N (221 instead of 227 today). N now counts every variant with a stored backtest, released or not and retired or not, and the tooltip states both the number of retained variants and the number of usable trials. Every Robustness score moves slightly as a result.
- The wording changes with it: the score is a historical statistical assessment, conditional on the trials counted and the moments estimated from each track record, not a probability that a strategy will keep working. When a strategy's own skew and kurtosis are too extreme to use and the score falls back to a normal assumption, it now says so.
- Improvement
Leaderboard and strategy pages stop re-reading two million daily rows every hour
- The Sharpe, Sortino and Stability inputs are month-end NAV values. Until now they were derived from the full daily history of every strategy each time a catalog cache refilled, 5 to 9 times an hour, about two seconds each and up to sixteen when refills overlapped, which is what exhausted the database pool on 8 September. The month-end rows now live in their own table, kept in step with every daily write and checked for freshness before use, so those refills take milliseconds.
- No number changes: the table is built with the same definition the pages used, and a test holds the two row for row.
- Improvement
Inflation Compass says how much its headline depends on the inflation series it reads
- The card already said the pre-2003 CPI fallback is the conservative choice. It now gives the size of the lever: over 2003 to 2026, with everything else pinned, reading trailing CPI instead of the 5-year breakeven lowers the CAGR by about 6 points and deepens the maximum drawdown by about 22 points. The breakeven is the published gauge and the one we read live.
- Methodology section 9 now lists input-series choice as a sensitivity axis of its own, and no longer claims the walk-forward pages carry that evidence, since the gauge is not a walk-forward parameter.
- Data
SmartStack no longer dilutes the base strategy to fit its overlay
- Until now the engine scaled every position, strategy legs included, whenever the overlay ladder asked for more than 100% of capital. That happened in about a quarter of all months (any month holding DBC, AGG or BND) and left the base strategy at 80% of its own exposure while the cards said the overlay sat on top. The overlay is now capped at the capital the leveraged substitutions free, and the strategy legs are never scaled.
- The five SmartStack variants (HAA, VAA-G4, ADM, DAA-G12, KDA) are restated on their full history right after this ships, so their CAGR, drawdown and exposure figures move, and their next live signal follows the new rule. The HAA SmartStack and Return Stacked Quartet descriptions no longer embed backtest figures that drift from the card, and the HAA text now describes the ladder the engine actually runs.
- Fix
Members whose allocation holds no longer get the same email twice a month
- The month-end 'no changes this month' email went out twice, about 16 hours apart, once from the confirmed run on the last trading day and once from the final run the next morning, with the same body. In September 46 members got the pair. The final run now skips the hold email for anyone who already received it from the confirmed run in the same cycle; the rare member whose preview flips still gets a different email, because a change is a different message.
- Fix
The methodology page now lists the deep-history tiers the engine really uses, starting with TIPS
- The TIPS chain said its history before 1997 came from a scaled nominal-Treasury fund. It comes from a monthly TIPS series synthesized for research from 1972, the tier the Price Build Log has always shown, and the page now says so, along with the fact that TIPS were first issued in 1997. The PIMCO Real Return fund it names starts serving in 1998, not 1997.
- Every other chain on the page now ends where the engine's does: the monthly index and Fama-French series behind the 1900 to 1970 tails, the FRED yield tiers for Treasuries, and the S&P GSCI in place of a PIMCO fund the engine stopped using. The drawdown-history explainer got the same corrections.
- Fix
Analyze now uses the currency you picked, and says so
- If you had EU mode on, the Analyze > Performance tables were showing USD while every strategy page showed EUR, and neither page named a currency. The same strategy's annual returns therefore disagreed on the two pages, in some years by more than 20 percentage points. Reported by a reader comparing HAA on both.
- Analyze now follows your display currency across the growth chart, annual returns, period returns, metrics and drawdowns, and each table states the currency it is in. The underlying strategy data was never wrong, only the currency it was displayed in.
- Years before an official EUR/USD rate existed are now marked. There is no rate to convert them with, so they are shown at the earliest available one, which means those years read as USD returns; the table says which years those are instead of leaving you to guess.
- Fix
Optional-email prompt returns to its earlier timing
- On 2 September the prompt asking whether you want the onboarding and update emails moved to after the portfolio wizard. The intent was to ask at a moment that made sense, once we could name the portfolio you had just built.
- It did the opposite of what it was meant to. Before the change, 28.1% of new accounts turned the onboarding emails on. After it, 8.0% did, measured over 50 signups, and the drop is well outside chance.
- The prompt is back to its earlier timing while a better version is designed. Nothing about your existing settings changed, and the boxes remain separate, unchecked and optional.
- Improvement
Articles now point you to the comparison that answers them
- The 9Sig article reports a 72.1% maximum drawdown on observed fund prices, and then left you with nowhere to go. The blog had no next step of any kind.
- There is now a link at the end of that article to the leaderboard, where every strategy's maximum drawdown is listed side by side, so you can see how deep 72.1% really is. It needs no account.
- Members also get a direct link to the side-by-side comparison tool.
- Only articles with a clear next question get this. Everything else keeps the clean read it has today.
- Improvement
Drawdown pages now show a second crash period in search results
- Search listings for pages like UPRO, TQQQ and QLD gave only the single deepest drawdown. People searching for two periods at once, for example the 2020 crash and the 2022 decline, could not tell from the listing whether the page covered both.
- The listing now names the next deepest period alongside the worst one, so a UPRO listing reads 62.7% between 2021 and 2022 and 60.4% from 2019 to 2020.
- Nothing on the page changed. The full table of every drawdown, with peak, trough, depth and recovery time, was already there; only the search description was leaving it out.
- Improvement
Sorting the catalog by CAGR now says the order is not like-for-like
- Each strategy card already showed the year its CAGR is measured from. Sorting by CAGR did not, and a sorted list makes a stronger claim than a card does: the order itself reads as a ranking. Because catalog start dates run from 1920 to 2019, part of that order was simply who has the longest history.
- A line now appears with the results whenever the CAGR sort is active, saying each strategy is measured from its own start year and that the order is not a like-for-like ranking. It is shown only while that sort is selected.
- The CAGR tooltip said the average yearly return over the measured period, which was true but hid the part that matters. It now says the figure is measured from each strategy's own start year, so two strategies can cover different decades.
- No published number changed. As with the drawdown basis, the fix is to say what a figure covers rather than to alter it or to shorten anyone's history.
- Fix
Strategy links on the blog now go to the right page
- Roughly a third of the strategy links on the blog index led to a missing page, because the link was built from the strategy's display name instead of its address. Every link now resolves to the strategy it names.
- Entries that are topic labels rather than strategies, such as momentum or risk parity, are shown as plain labels instead of links that went nowhere.
- Improvement
A reminder before a cancelled subscription ends
- If you schedule a cancellation, you now get a note telling you the date your access ends and how to keep or pause the subscription instead. This is a service notice about your own subscription, so it no longer depends on your marketing email preference.
- Nearly half the members with a scheduled cancellation were previously never told, because the reminder was treated as marketing.
- Fix
A failed renewal payment no longer looks like you cancelled
- When Stripe ends a subscription because a renewal payment could not be collected, the account now gets a note explaining what happened, that nothing was charged, and how to start again. Until now it received the survey asking why you cancelled, which was wrong: you had not.
- Digital wallets such as Amazon Pay get no automatic payment retries, so one temporary processor error can end a subscription. If that is how you pay, a card is the safer choice.
- Fix
Emerging market sleeves now name the fund the backtest actually holds
- Strategies with a developed and an emerging sleeve showed VEA alongside IEMG. Those track different index families: FTSE classifies South Korea as developed, so it sits inside VEA, while MSCI classifies it as emerging, so it sits inside IEMG too. Holding both counted South Korea twice, currently about a fifth of IEMG. A member reported it on the HAA page.
- The cause was a display step that rewrote every emerging sleeve to one house ticker after the simulation had already run. HAA, KDA, FAA, Mama Bear, Pinwheel, Swensen and Merriman all specify VWO, which excludes South Korea, and that is what the backtest priced throughout. The page and the monthly signal renamed it to IEMG, so the buy instruction named a fund no backtest had held. Those strategies now show and trade VWO, and the strategies built on the MSCI family show EFA with EEM.
- Performance figures are unchanged, because the engine always priced the declared ticker. Only the displayed and instructed tickers move. Equivalence groups are now split by index provider, so a fund can only ever be swapped for one tracking the same countries.
- For European members, the VWO to EIMI substitution is now rated approximate rather than close, and both UCITS pages say which of the two holds South Korea. EIMI remains the right pairing with an MSCI developed tracker such as EXUS, where Korea is counted once.
- Improvement
The watchlist and scatterplot stay warm after admin publications and over the weekend
- Publishing a strategy from the admin, and the backfill jobs, dropped the shared comparison cache and left the next visitor to rebuild it (about 55 seconds for the watchlist). They now schedule one re-warm 90 seconds after the last publication, so a batch of republished strategies costs one rebuild that no visitor pays.
- The Behaviour Check panel was warmed on weekdays only, so weekend mornings rebuilt it on demand (3 to 12 seconds for that section). Saturday and Sunday now serve Friday's panel; the scan that moves its inputs runs on weekdays.
- Feature
The watchlist now maps every strategy on Robustness against Stability
- A new chart at the bottom of the watchlist plots each strategy's Robustness Score (the Deflated Sharpe Ratio) against its Sharpe Stability Ratio over the full history in USD, with the two cutoffs from our Sharpe Stability Ratio working paper (0.90 and 0.5) and the count of strategies in each of the four quadrants. Strategies flagged critical on the underperforming list (a bad year against a positive record) are outlined in red, so the bad year can be read against the record it interrupts.
- Most strategies score above 0.99 on Robustness, so that axis is stretched near 1 to keep them apart. The horizontal axis can be switched to the raw Sharpe ratio to see how much the deflation changes the picture. Hover for the figures, click a point to open the strategy.
- Fix
Restating stored metrics no longer leaves the watchlist and scatterplot cold
- The two restatement jobs (risk ratios in early September, withdrawal rates on 6 September) dropped the shared comparison cache and left the next visitor to rebuild it on demand: about 55 seconds for the watchlist and 42 for the scatterplot, measured on 6 September. Both jobs now re-warm the two page shapes in the background right after the purge, the way the daily scan already did.
- Data
Stored safe and perpetual withdrawal rates now refresh with the nightly NAV extension
- The nightly close append kept the stored SWR and PWR at the values of the last full backtest, so on 6 September 11 of 225 strategies carried rates up to 0.29 points away from what the same engine gives on the NAV they sit next to. The extension now recomputes the five stored rate fields from the extended NAV every night, as it already did for Sharpe and Sortino.
- The withdrawal engine itself now evaluates every retirement cohort at once (one step per month across all cohorts) instead of one cohort at a time, about 100 times faster on a century-long history. A parity test holds the new path to the previous implementation to the last bit, so no published rate changes from this alone.
- Fix
The leaderboard now says which drawdown basis each view uses
- On Full History in USD the Max Drawdown column is the canonical backtest figure measured on daily NAV, the same number as the strategy page; the tooltip and the footnote said it was measured on month-end prices. Windowed periods, EUR, strategy cards and the library keep the month-end basis, and the copy now says which is which.
- No number changed. This is the same daily-versus-monthly distinction the drawdown methodology note describes; a monthly figure stored alongside the daily one is planned with the October data release.
- Improvement
Strategy pages show the data notes recorded when a backtest was published
- When the engine records a data limitation on a published backtest, for example a sleeve whose prices were unusable near the end of the window, the strategy page now lists it under the summary statistics together with the date the run was published. Every run published so far carries no notes; the list appears the first time a rebuild records one.
- Tax drag rows now say taxable income, because the federal brackets are applied to taxable income rather than gross income or modified adjusted gross income.
- The methodology page states how unemployment-rate inputs are vintaged: first-release values from the ALFRED archive, with only the pre-archive segment falling back to revised history, and each signal recording which vintage it used.
- Fix
Safe and perpetual withdrawal rates now use recorded inflation back to 1913
- Backtests that start before 1947 were being tested against a flat 3% inflation assumption instead of the recorded US consumer price index: the CPI series we loaded began in 1947, and a coverage rule then dropped it for the whole history. The five century-scale strategies (Classic 60/40, Century Momentum, Paired Switching, UIS) were affected; rates for backtests starting in 1947 or later do not change.
- The withdrawal-rate engine now joins the pre-1947 CPI-U index onto the seasonally adjusted series, so every 30-year retirement window is tested against the inflation that actually happened, including the 1929 deflation and the 1940s and 1970s inflation.
- The stored rates on the affected strategies are being restated, and the safe withdrawal rate article will carry a revision note with the corrected figures.
- Improvement
Filter the catalog by rebalance cadence, and sort it by profitable months
- The strategies page has a new Rebalances filter (daily, weekly, monthly, quarterly, annual), so you can keep only the strategies you are willing to follow at that rhythm. A shared link like /strategies?cadence=monthly keeps it.
- The Sort menu gained Profitable Months (high to low), the share of calendar months a strategy closed up, and every card now prints that share next to its CAGR. It leans toward low-volatility strategies, so use it as a tie-breaker rather than a ranking.
- Fix
Links from our login provider now stay on bestfolio.app
- A few links the login provider generates on its own (after deleting your account, after some verification steps, and the sign-up link in certain of its emails) pointed at an account portal we never set up and ended on an error page. They now land on the matching page here.
- Fix
The 'Sign out of this device' button in sign-in alerts now lands on a page that explains what happened
- Clicking it used to end on an error page, although the sign-out itself worked. It now brings you to the sign-in page with a notice that the session was signed out, and a reminder to use 'Forgot password?' if the sign-in was not yours.
- Security
Sign-in alerts now show where you actually signed in
- The 'new device signed in' email and the device list showed our server's location in the United States for everyone, because our sign-in provider only ever saw our server, not your connection.
- We now pass your real connection address through, so the location and IP in those alerts are yours. If you received one of these emails and the location looked wrong, this was why.
- Improvement
About page and homepage claims now say exactly what BestFolio is and where each strategy comes from
- The About page states the business model plainly (research software and model allocations, no custody, no execution, no individualized advice) and distinguishes faithful implementations, documented adaptations and BestFolio originals such as Composite Momentum and VIX Shield.
- "Peer-reviewed" is replaced by "published and documented" everywhere, matching the inclusion criteria, which also accept books, whitepapers and documented community work. Researcher names link to the strategy page that documents the implementation, with a note that none of them reviewed or endorsed BestFolio.
- The homepage interface preview is labelled illustrative, its example figures are marked as examples, and the unmeasured "most users spend under 10 minutes a month" claim is replaced by "designed for a short monthly review".
- Feature
Stability: a new column for how consistently a strategy's Sharpe held up
- Stability measures how consistently the rolling 3-year Sharpe stayed above zero. It sits beside Robustness on the leaderboard and appears on strategy pages. Thanks to Roman Rubsamen of Portfolio Optimizer for suggesting it.
- The score changes with the selected period: buy-and-hold can look especially steady when a shorter window is dominated by a long bull market. Try several periods to see how the result holds up.
- It needs ten years of monthly history in the selected period. Shorter records show n/a.
- Feature
Behaviour check: see whether a strategy is still trading the way its backtest did
- Each strategy's last six rebalances are compared with every comparable six-rebalance stretch in its own history, matched on the market conditions at the time. Most strategies come back in line; the watchlist has a new section for the few that do not.
- This is about behaviour, not returns: how often a strategy trades, how much it moves, how defensively it sits. Live returns would take decades to say anything, behaviour says it in months. It is not a forecast and does not predict whether a strategy is about to do well or badly.
- A flag has to hold for two rebalances running before it appears, and each one shows the number behind it against what is normal for that strategy, so you can check it against the signals you received.
- Some strategies read economic data that gets revised after publication, which can make a backtest run today place a strategy somewhere different from where the live signal placed it at the time. Where we detect that, the strategy now carries a History under review notice naming how many rebalances are affected, and the signals you received are the record.
- The full method is written up in section 16 of the methodology page, including what it does not tell you: it is not a return forecast, and it does not prove a strategy's edge is real.
- Fix
Webhook alerts now retry transient failures and pin the destination they were checked against
- A timeout, a connection error, a 429 or a 5xx from your receiver is retried up to three times with a short pause (a small Retry-After is honoured). A redirect or any other 4xx is reported immediately and not retried.
- Every attempt re-sends the identical signed body with the same X-BestFolio-Delivery-Key header, so a receiver can drop duplicates; the attempt number is in X-BestFolio-Attempt.
- Each delivery is recorded in the message log with its outcome, attempts and receiver status (host only, never the URL), and the connection goes to the address that passed the public-IP check while TLS is still verified against your hostname.
- Data
Published backtests now record their provenance and refuse missing price data
- Every published backtest now carries when it was published, by which process, from which code and methodology version, and which data warnings were recorded. The backtest API returns these fields so a number on the site can be traced to the run behind it.
- A required ticker with no usable prices, or a held asset without a price series, now fails the run instead of being simulated as a flat holding. The previously published backtest stays in place until a clean run replaces it.
- The unemployment-based strategies (LAA, RAA, Schwoerer) keep every first-release reading and use revised data only to fill history before the vintage archive begins, recording the vintage in each signal. Published signals do not change unless the archive is partial.
- Improvement
Stored Sharpe and Sortino now refresh with the nightly NAV update
- Each night the latest closes are appended to every strategy's stored NAV, but the stored Sharpe and Sortino stayed at the values of the last full backtest until the next monthly run. A strategy page and the full-history leaderboard could show a ratio that was up to 0.01 behind the NAV curve next to it for a few weeks.
- The two ratios are now recomputed from the extended NAV each night under the same monthly definition as everywhere else, so they always describe the curve you see. Nothing else about the nightly update changed.
- Infra
Email delivery outcomes are now recorded per message
- Bounces, blocks, spam complaints, unsubscribes and confirmed deliveries reported by our email provider are stamped on the message record, so email reports can count what actually arrived instead of opens.
- Nothing changes in what you receive: this is measurement only, and it feeds the volume decisions behind fewer, better emails.
- Improvement
Homepage strategy cards now show the same numbers as the strategy pages
- The six free-strategy cards on the homepage were typed in by hand and had drifted: GEM showed a 19.8% max drawdown while its page shows 33.7%. The cards now read CAGR, max drawdown and Sharpe from each strategy's published backtest, name the variant and the backtest years, and draw the real equity curve.
- Fix
US tax estimates now use the 2026 federal brackets and say so
- The tax analysis was labelled 2026 but used the 2025 thresholds. It now uses the 2026 tables from the IRS revenue procedure, keeps 2025 available, and shows which year it models on the strategy page and the portfolio tax card.
- API users can pass tax_year; a year without a reviewed table is refused rather than answered with old thresholds.
- Fix
The Focus dashboard no longer says no trades are needed when it could not load your allocation
- If the allocation request fails or is still loading, the dashboard now says so instead of showing a green no-change message, and it only reports all signals up to date when every strategy sleeve has a signal for the current period.
- Fix
Webhook test no longer reports a redirect as delivered
- Redirects are never followed, so a receiver answering with a redirect had not received anything. The test now reports it as a configuration error naming the redirect target, and only a 2xx response counts as delivered.
- Improvement
UCITS alternatives now show what a close match leaves out
- A substitution marked close now shows the mapping note next to it, for example that EXUS replaces VEU without emerging markets and that EIMI completes the exposure, instead of only a confidence word.
- Improvement
Factual corrections to published blog posts now stay live
- A one-sentence fix to a live blog post no longer takes the post down for a full re-review. The correction is recorded with its reason and date, and the post keeps its publication record.
- Corrections are bounded: anything that changes more than a small part of the text still goes through unpublish, review and publish.
- First use: the GGCEM data-vintage post now says the OECD keeps its own edition archive back to 2001. The earlier version said no such archive exists.
- Fix
Sharpe and Sortino now use one definition on every page and period
- The leaderboard's 30y, 20y, 10y and 5y views, the Strategy Comparison period selector, the benchmark rows of the comparison table, the portfolio page and Portfolio Compare divided compound annual growth by a daily-sampled deviation, while strategy pages, blends and the full-history leaderboard used the annualised mean of monthly returns. The same strategy could show two different Sharpes depending on the page, and switching the leaderboard period changed the formula as well as the window.
- Every Sharpe and Sortino is now the annualised mean of monthly returns over the annualised monthly deviation, computed on month-end values in the displayed currency: the sample deviation for Sharpe, with a cash reference of zero, and the downside deviation for Sortino. On the windowed leaderboards most values rise (median Sharpe about +0.15, Sortino about +0.5) and rankings there have moved; full-history benchmark Sharpes fall. Full-history strategy values, NAV curves, CAGR, drawdowns, signals and every allocation are unchanged.
- Walk-forward portfolio cards also pick up last week's Sortino denominator correction, which had not reached their cached figures, and the Portfolio Health risk-adjusted band now uses the same monthly Sharpe as the portfolio page.
- Fix
Three corrections: backtest previews, founder deadline weekday, starter templates
- Running a backtest yourself from the app, including with a custom date range or leverage, now returns a preview. The published backtest behind the strategy page, the leaderboard and the robustness score is only refreshed by the monthly rebuild.
- Founder pricing closes on Tuesday 6 October, 11:59pm Pacific. The pricing page said Monday; the weekday now comes from the deadline itself. The annual plan badge also names what its saving is measured against, the $29 (EUR 35) monthly price.
- The Capital Efficient starter template now uses the leveraged HAA variant it names. Templates pick their variant by name instead of by catalog order.
- Improvement
Max Sortino portfolios now optimise the real Sortino ratio
- The walk-forward optimiser was maximising the wrong quantity for the Max Sortino criterion: it measured how much the losing months varied from each other rather than how far they fell below zero. A run of equally sized losses registered as no downside risk at all.
- Your settled allocations are unchanged and no past month has been rewritten. Portfolios using Max Sortino will pick up the corrected calculation at the next monthly rebalance, and that first update will be a larger change than a typical month.
- Feature
Signing up from a page now brings you back to it
- If you signed up from a strategy page, the leaderboard, a blog post or the UCITS finder, you landed on the dashboard and had to find your way back. Twelve of those places now return you to where you were.
- Only paths on BestFolio are accepted, and nothing from the address bar is carried across, so this cannot be used to send you somewhere else.
- Fix
Duplicating a portfolio now gives you the same allocation as the original
- Duplicating a portfolio, or cloning one from the library, used to recalculate it from scratch instead of copying the result. For blends built on Max Sortino, Max UPI or Min Drawdown that recalculation can land on a different answer, so the copy could hold a materially different mix than the portfolio it came from.
- Copies now carry the original's settled allocation history exactly. Library templates also stop being recalculated when nothing about them has changed, so a template's card and a clone taken from it agree.
- Fix
Sortino ratios were computed with the wrong formula and have been corrected
- Our downside deviation measured how much the losing months differed from each other, instead of how far they fell below zero. A track that lost the same amount every month scored as having no downside risk at all.
- Every Sortino on the site now uses the standard definition. Most values rise by roughly 20 percent and some fall, so Sortino rankings have shifted. CAGR, drawdown, Sharpe, NAV curves and every portfolio allocation are unchanged.
- Improvement
The walk-forward builder is now honest about which criteria have more than one answer
- Max Sortino, Max UPI and Min Drawdown can return a different mix each time they are solved, even from identical settings. On one measured four-strategy blend a single sleeve moved 22 percentage points between two runs, and one of the two answers was materially worse.
- The old warning called this a difference in weights, which read like rounding. It now says what actually happens, and points you at Max Sharpe and Max CAGR, which return the same mix every time and solve faster.
- Fix
Lifetime accounts could quietly lose Pro access on an old renewal date
- When a lifetime account was set up for someone who had subscribed before, the renewal date from the old subscription stayed on the record. Pro access then switched off on that date, with nothing shown to explain it.
- Setting up lifetime access now clears the leftover renewal, pause and cancellation dates, so it does not expire. It also takes effect immediately, and the manage-subscription panel no longer shows a stale scheduled-cancellation notice.
- Fix
Some listings stopped updating because two price sources were merged badly
- When both of our price sources answered for the same batch, the merge lost track of which rows belonged to which ticker, and the safety check that refuses to file rows under the wrong symbol threw them away.
- It hit whichever tickers happened to land alone in a batch, which is why a handful of listings sat weeks behind while everything around them updated fine. The merge now keeps the ticker attached.
- Fix
The comparison page no longer breaks for people running a content blocker
- The metrics panel on the comparison page was served from a URL containing the word metrics, which uBlock Origin and similar blockers filter by default. If you use one, that panel simply never loaded.
- It now comes from a neutral path, so it loads normally. The old address still answers for anyone calling the API directly.
- Fix
Risk numbers in EUR were overstated on the longer leaderboard views
- Switching the strategy leaderboard to EUR reported volatility about 2.2 times too high, and Sharpe and Sortino correspondingly too low, on the full-period, 10-year, 20-year and 30-year views. CAGR, returns and drawdowns were always correct, and the 5-year view and every USD view were unaffected.
- On the longer views we read one price per week to keep the page fast. The EUR path was measuring those weekly steps but labelling them as daily, which inflated the risk figures. It now converts each true daily move into euros instead.
- A EUR-denominated strategy still shows slightly more volatility than the same strategy in dollars, because the exchange rate is a real risk for a euro investor. That part was never the error.
- Fix
Reset view on the leaderboard now clears the CAGR, drawdown and years filters
- Reset view cleared every other filter but left the three numeric thresholds set, so rows stayed hidden with nothing on screen explaining why. Its own tooltip said it resets filters.
- Clear filters always did reset them, which is why this went unnoticed. Both buttons now behave the same way.
- Fix
If your bank asks to confirm a payment, we now say so instead of promising a retry
- When a bank requires 3D Secure on a renewal, the payment waits for you rather than failing outright. Stripe does not retry those, but our email told you we would retry automatically and pointed you at your card settings, which cannot clear it.
- There is now a separate email for that case. It says the bank needs to confirm the payment, drops the retry promise, and leads with the link that actually clears it.
- Your Pro access still stays on through the same grace window, and you still get one email rather than two when a renewal trips both events.
- Feature
The US tax panel is now on your portfolio page, not just the API
- Yesterday's portfolio tax endpoint is now a card under Performance Metrics, showing the whole portfolio's tax efficiency, long-term share and estimated drag at four income levels.
- It also names where the tax actually comes from. A sleeve at 5% of your book that trades monthly can account for a third of your realised gains, and the table shows that side by side with its weight so the mismatch is visible.
- Sleeves you hold rather than trade realise nothing, so they are left out of that table instead of padding it. The card is an estimate from backtested turnover at US federal rates, not tax advice.
- Data
GGCEM's real-time data check now reaches back to 2008
- Our real-time check on this strategy started in mid-2018, because that is where the St. Louis Fed's public archive of OECD leading-indicator vintages begins. We had described the earlier vintages as unavailable. They are not: the OECD keeps its own publication archive, and it reaches back to 2001.
- Replaying on first-print data back to 2006 changes the conclusion. The 2008 defense was real, with real-time signals risk-off from September 2007 through April 2009 while the index fell. The 2020 sidestep still exists only in revised data.
- The chart and table on the GGCEM page now cover 2007 to today instead of 2019 to today. On as-published data the strategy returns just under the index, with a better Sharpe and roughly 21 points less peak drawdown.
- Feature
US tax impact for a whole portfolio, not just one strategy
- The tax card on a strategy page has always shown holding periods, the long-term share and estimated drag. There was no way to ask the same question of a portfolio, which is what you want when you are choosing between two of them.
- GET /api/tax/us/portfolio/{id} now answers it. Pass the pre-tax CAGR you already have and it returns the drag and post-tax figure at four income levels, plus a per-sleeve breakdown showing which sleeve is generating your tax bill.
- It is not a weighted average of the sleeves. Turnover is the weighted sum of what each sleeve trades, and the long-term share is weighted by realised gain, because only realised gains are taxed. A 5% sleeve that trades monthly can account for a third of your realised gains, and averaging by weight would hide that.
- Feature
Small positions can now be dropped and the rest rescaled, instead of merged
- Below your minimum position size, the execution rollup folded each small holding into the nearest similar one, and anything with no relative landed on whichever holding happened to be largest. A 1% hedge could quietly grow your biggest position.
- The execution rollup now takes min_mode. Leave it alone and nothing changes: merging is still the default. Pass drop_renormalize and small positions are removed instead, with the survivors scaled back up in the same proportions to each other. A 25/25/25/15/10 book with a 12% floor becomes 27.8/27.8/27.8/16.7 rather than 35/25/25/15.
- It rescales to the book's original total, not to 100%, so a levered rollup keeps its gross exposure. A long/short book whose survivors net to zero is left alone rather than scaled, and the response says so.
- Fix
The API docs no longer tell you to authenticate the AI connector with a key
- The connector section opened by saying to authenticate with your bf_live_ key, then said two paragraphs later that there is no key to copy. The first line was left over from before the OAuth connector shipped in July, and it is the same dead instruction two members had already reported.
- It now says what actually happens: add the URL as a custom connector and sign in with your BestFolio account. Terminal clients such as Claude Code can still present a key instead, which is unchanged.
- Added a note that ChatGPT keeps custom connectors behind Developer mode and a paid plan, and that Business and Enterprise workspaces need an admin to allow it first. Claude has no such gate.
- Feature
Strategy cards and the leaderboard now show how long the worst drawdown took to recover
- Depth alone does not tell you what you are signing up for. Two strategies can both fall about 20% and one is whole again in a year while the other takes ten. That gap was nowhere on the site.
- Every strategy card now carries the recovery time, and the leaderboard has a sortable Recovery column under Show all columns. It runs from the peak that started the worst drawdown to the day the strategy regained it, measured on the same series as the drawdown itself, so the depth and the wait describe one episode.
- Two strategies have never regained that peak. Those show a plus sign and say still underwater, because the figure is how long they have been down so far, not how long a recovery took.
- Fix
One blocked request no longer empties the whole comparison page
- The performance page asks for four things at once: the growth chart, period returns, the metrics table and the drawdown chart. If any one of those requests failed, all four were discarded and the page showed a bare 'failed to load'.
- Each panel now stands on its own. Whatever loaded is shown, and a note names the part that is missing.
- The usual cause is a content blocker: some block lists match our metrics request on the word 'metrics'. The note now says so, so you are not left guessing why the page works in one browser and not another.
- Fix
If your session cannot be read, the page says so instead of failing without a reason
- A browser that blocks site data (Firefox's strict tracking protection, or a content blocker) can stop the app from reading your sign-in, and the page then asked for data as if you were signed out. On the performance page that produced a bare 'failed to load' with no clue that your session was the cause, while the same account worked in another browser.
- It now names the likely cause and what to do. Signed-out visitors are unaffected: asking as a visitor is correct for them.
- Fix
The performance picker now shows which strategies need Pro, instead of failing when you pick one
- On /performance and /correlations the picker listed every strategy, including the ones a free or Starter plan cannot open. Picking one returned nothing but 'Failed to load performance data', and a mixed selection quietly dropped those series from the chart with no notice.
- Gated strategies are still listed, so you can see what Pro covers, but they are marked with a lock and cannot be selected by accident. If your selection already contains one, the page names it and links to the plan page instead of showing a generic error.
- Improvement
A German subscriber joins the pricing page
- The pricing page now shows three real subscriber quotes instead of two, the new one from a German founder subscriber on the tax estimation feature, published with permission.
- Fix
Checkout failed for returning EU customers
- Upgrading from an existing account with an EU billing country could fail at the payment step, because the VAT-number field we show to EU customers was not allowed to fill in the business name on file.
- Checkout now completes normally. New sign-ups and customers outside the EU were never affected.
- Feature
Filter the leaderboard by CAGR, drawdown depth and years of history
- Three number boxes sit next to the existing filters: keep rows with at least a given CAGR, no deeper than a given drawdown, and at least a given number of years measured. Leave one blank and it does not filter.
- The drawdown box takes a positive depth, so 25 keeps everything that never fell more than 25%. A row with no value for a metric is left out rather than passed through, and Clear filters resets the boxes with everything else.
- Feature
Stress windows on every strategy page
- Each strategy page now shows how the selected variant behaved through the 2000-2002 dot-com bust, the 2007-2009 financial crisis, Q4 2018, the Q1 2020 COVID crash and the 2022 stock-and-bond drawdown.
- Return is measured across the window and drawdown is the worst peak-to-trough inside it; a window the backtest does not cover is left out rather than shown as a shorter, kinder period.
- Improvement
Robustness score now shows four decimals
- The robustness score crowds up against 1, so two decimals printed 91 of 177 variants as an identical 1.00 and made sorting on it useless at the top.
- The score is now displayed and exported with four decimals, and the server keeps six so the ordering underneath is finer than the display.
- Fix
Momentum-Correlation Triplet: the strategy page said 1/3/6/12-month momentum, the strategy uses 3/6/12
- A reader spotted the page contradicting itself: the rules block said the score averages the 3, 6 and 12-month returns while the About This Strategy blurb said 1/3/6/12. The rules block was right, the blurb was stale, and the blurb now spells out that the average is unweighted.
- Nothing about the strategy or its signals changed. A new check compares every strategy's description against the lookbacks its engine actually uses, so the two cannot drift apart again unnoticed.
- Fix
Founder annual switch: the confirm step now bills one year from today, in the app
- The Stripe screen behind today's founder email kept your original billing date, so it asked for the annual rate up to that date plus the following full year in one payment. That is not what the email offered, and the screen is switched off.
- The link now shows a card in Settings with the exact amount: $190 (or EUR 220) for one year starting today, minus a credit for the unused days of this month, and the renewal date. One Confirm button, and nothing changes unless you press it.
- Nobody was charged the wrong amount. If you saw the old screen, click the same link again.
- Fix
Trade list: the Daily and Weekly groups now show the trades a signal change calls for
- In a portfolio that mixes daily or weekly strategies with monthly ones, the Daily group compared today's target weights to themselves, so it read "no trades needed" every day, including the day a Buy the Dip or Regime Detector signal flipped. A reader asked whether that meant rebalancing to target every day.
- It does not. The previous column now holds the prior signal's weights for every cadence, so the group shows the buys and sells on a flip day and HOLD on every other day. Between flips you hold and let the weights drift.
- Fix
The founder annual switch link works again
- The Switch to founder annual button in today's founder email failed for everyone who clicked it: Settings showed a notice saying the option applies to active founder subscriptions, and nothing opened. The cause was a bug in how we read the subscription back from Stripe. Nothing changed on any account.
- The link now opens the Stripe confirm screen with the prorated amount as intended. If you clicked earlier and saw the notice, click the same link again.
- Feature
Filter the strategies list to the ones that de-risk in bear markets
- A new filter keeps only strategies whose rules can move the whole portfolio into cash or defensive bonds: their backtest went fully defensive at least once. Fixed allocations and always-invested rotations are left out.
- Asked by a reader who found the catalog overwhelming and wanted the risk-off strategies in one view. Share it with strategies?derisk=1.
- Feature
FMTM vs SPMO: a matched-window comparison page for the two momentum ETFs
- A new page compares FMTM (MarketDesk Focused U.S. Momentum) and SPMO (Invesco S&P 500 Momentum) over the only window both have traded, with SPY alongside: total and annualised return, worst drawdown, volatility, calendar returns, daily-return correlation, and a growth-of-100 chart. Every figure is computed from BestFolio's own price data and dated on the page.
- It also answers the questions people search for: how often FMTM rebalances, whether the two overlap, and the part both share, which is that neither can leave equities.
- Two smaller search fixes shipped with it: the 9Sig article's title now leads with the question it answers, and the portfolio overlap calculator carries structured answers to the overlap questions readers ask.
- Feature
Lock a portfolio you want to keep as is, and duplicate any portfolio to experiment on a copy
- Lock keeps a portfolio exactly as it is: edits, holdings changes and deletion are refused until you unlock it. Signals, backtests and monthly reviews keep running for a locked portfolio.
- Duplicate creates a copy with the same sleeves, weights and settings under a new name, so the original stays untouched while you tinker. The copy starts unlocked and is never your Main portfolio.
- Improvement
The sidebar no longer pushes the page when it expands on hover, and filter clicks respond faster
- On desktop, moving the mouse over the sidebar used to widen it in place and shove the whole page 150 pixels to the right, then back, on every pass. The expanded sidebar now slides over the page instead. Pinning it open still keeps it in place.
- On the strategies list and on a strategy page, clicking a filter pill, a variant or a tab now highlights the choice at once and updates the list or the tab a moment later, instead of freezing for up to half a second on large catalogs.
- Improvement
The optional-email choice now comes after you set up a portfolio, and says what the emails are
- The prompt that asks whether you want the getting-started emails used to appear on your very first visit, before you had done anything, with two abstract labels. It now opens right after the onboarding wizard creates your portfolio, and names it.
- The first choice spells out the series: four emails over fourteen days (the portfolio snapshot, how to read a monthly signal, how the backtests are built, UCITS equivalents or how the strategies differ), then it stops. Both choices still start off, and signal and account emails are unaffected either way.
- If you skipped the wizard, the prompt waits for a later visit instead of interrupting the first one.
- Fix
Walk-forward runs no longer time out on the page or claim the server restarted
- The page used to give up after 8 minutes, and at 15 minutes the server declared any still-running optimisation lost with a message blaming a restart that never happened. The server now tracks whether a job is actually alive, so a long run stays reported as running and a genuinely lost one is flagged within about 90 seconds.
- The page follows the server instead of a fixed clock: it shows whether your run is queued (and how many are ahead) or running, keeps polling on a phone that went to sleep, and picks up a result that finished while you were away.
- Errors from the edge network are reported in plain words instead of a raw parsing error.
- Improvement
Golden Ratio Dual Gate now uses entry and exit bands on both gates (SPY 1%, TIP 0.1%)
- Since July the strategy used a single +0.1% line above the 200-day average on both SPY and VIPSX, with no exit line: any close under that line de-levered. A reader showed the cost: VIPSX crossed it four times in seven sessions in August. Each gate now turns on above its upper line, off below its lower line, and holds in between: 1% either side for SPY, 0.1% either side for the TIP canary, the bands the source thread converged on.
- On our engine the change adds about 0.4 points of CAGR and removes a third of the switches, with the maximum drawdown in the same range. The published backtest is recomputed with this release, so the card numbers move. Signals stored before today keep the old rule's history.
- Fix
Golden Ratio Dual Gate: the TIP gate's price, average and band are readable again
- A reader wrote in after the 21 August de-lever: the signal history showed VIPSX at 11.60, its 200-day average at 11.60 and the band at 11.61, so the page could not show why the strategy switched. The fund trades near $11, and a 0.1% band is about one cent, which two decimals cannot display.
- Signal price, average and band for both gates now carry four decimals. Rows already stored keep their old values until the next recompute.
- Feature
Trade list: round targets to whole percents for brokers that only accept whole numbers
- A reader (feedback #101) rebalances at a broker whose percent targets must be integers. The trade list now has an opt-in checkbox, remembered in your browser, that rounds every target to a whole percent.
- Rounding uses the largest-remainder method, so the targets still add up to exactly 100%; trade sizes, dollar amounts and the buy/sell summary are recomputed from the rounded targets, and the copy and CSV exports say when rounding is on.
- Fix
Unsubscribing from marketing no longer switches off your signal emails
- If you clicked Unsubscribe in your mail client on one of our marketing emails, our email provider blocked every message to you, including the monthly signal emails you had switched on. 41 accounts were affected; the blocks are lifted today.
- The daily reconciliation now keeps the marketing opt-out on our side and lifts that provider block automatically, so a marketing unsubscribe only ever stops marketing. Bounced or spam-flagged addresses stay blocked.
- Improvement
Billing and subscription is one click from the avatar menu
- A reader told us (feedback #111) they could not find where to manage their subscription: they looked in the avatar menu, which had no billing entry.
- The avatar menu now has Billing and subscription, which opens the keep, pause or cancel dialog in Settings directly.
- Feature
Permanent Portfolio (Lequeux) joins the catalog, in the version its author runs today
- Nicolas Lequeux's Permanent Portfolio holds 20% global equities, 20% long-term Treasuries and 20% gold permanently, and rotates the remaining 40% between US equities, international equities and cash on 12-month momentum. Equity exposure stays between 20% and 60%, so a full risk-off only ever moves 40% of the portfolio.
- Two variants: the 2026 version he published this week and runs himself, and his original 2024 dashboard version (25% Treasuries, 25% gold, a 50% sleeve). Both carry a live monthly signal and alerts like every other tactical strategy.
- We reproduced his published 30-year figures on our engine to within a fraction of a percent before adding it; the strategy page shows our full backtest with costs.
- Feature
A founder annual rate, offered to founders by email
- Founder subscribers can move from the monthly founder rate to a founder annual rate ($190 or EUR 220 a year, two months free) from a link in an email. Stripe credits the unused days of the current month and starts the annual period the same day.
- The founder protection carries over: the annual rate is a founder rate, and it holds for as long as the subscription stays active. Settings shows a Founder Annual badge after the switch.
- The option is reserved for existing founders and is not on the pricing page. The offer has no deadline; it is proposed again from time to time to founders who have not taken it.
- Fix
Fixed sleeves reject tickers that no price provider can resolve
- Saving a fixed sleeve with a symbol that has no price history used to succeed silently and leave the portfolio permanently empty or wrong. Two mains built on bare European symbols (VGWL, VWCE) had never rendered since July; the Xetra listings VGWL.DE and VWCE.DE were already in our data.
- Portfolio create and update now check every fixed-sleeve ticker. A bare symbol whose exchange-suffixed listing we already hold is rejected with the suggestion (Did you mean VWCE.DE?), and a symbol our provider reports as unknown is rejected too.
- The check fails open: if a provider is slow or unreachable the save goes through with a server-side warning, so a data blip can never block editing.
- Fix
Blended backtests now say when a sleeve was left out
- A blended portfolio backtest silently dropped any sleeve it could not build a price history for (a ticker with no data, a strategy with no backtest run) and scaled the remaining weights up to 100%. The curve did not match the portfolio as written, and nothing said so.
- The backtest response now lists every dropped sleeve with the reason, the portfolio page shows an amber notice naming them, and the drop is logged on the server.
- Weights are still renormalised over the surviving sleeves. Fix or remove the sleeve to get a faithful curve.
- Fix
Signal emails are withheld rather than sent with a trade list that contradicts their own summary
- On 31 August the confirmed email and the next morning's final email gave eight subscribers different sell and buy lists under an identical What changed summary. The summary was right; the trade list had picked up a stale stored row for strategies that had not changed.
- The stored-row fallback was fixed on 1 September. This adds a check at send time: if any strategy you hold is missing its fresh signal, the message is held back and flagged to us instead of going out with a contradiction in it.
- Hold messages, which show your current holdings rather than a rotation, are not affected.
- Feature
Keep, pause or cancel from Settings, plus a reminder before access ends
- Cancelling now happens in Settings, where you can also pause for up to 3 months or undo a scheduled cancellation with one click. The Stripe billing portal keeps cards and invoices only.
- If you schedule a cancellation, you get one email soon after and one 3 days before access ends, both with the keep and pause options. Neither goes out if you have opted out of product emails.
- Pausing a subscription that was scheduled to cancel now also undoes the cancellation.
- Improvement
Your first real portfolio becomes your Main automatically
- The monthly signal email tracks your Main portfolio. When your Main is still the default Starter Portfolio, or you have none, a portfolio you create or save from a blend now becomes Main on the spot.
- The Portfolios page also points this out when your Main is still the default and you have built others, with a one-click switch.
- Improvement
No-change months now arrive as a monthly review
- A month with nothing to trade used to say "no changes" and stop. The email now lists what each sleeve is doing and when it checks again, what would trigger a trade, and the month's return for walk-forward portfolios.
- A "Mark reviewed" button records that you looked, with a two-button card on the Portfolios page. It takes 10 seconds and tells us whether the monthly email is doing its job.
- Improvement
Walk-forward caps the pool at 12 strategies and explains its settings
- The solver fits one weight per strategy on as many monthly returns as the window holds, so a 34-strategy pool on a 12-month window was fitting noise, and it ran for over an hour while the page gave up after 8 minutes. The pool is now capped at 12, with 5 to 8 recommended. Saved walk-forward portfolios are unaffected.
- Every parameter now has a tooltip, and the page warns before you run when the window is short for the pool, the weight cap is loose, you picked several variants of one strategy, or you chose a drawdown-based criterion, whose weights are not stable between runs.
- A Reset to defaults button restores the standard setup: Max Sharpe, 36-month window, 40% cap, monthly rebalancing.
- Improvement
A fourth subscriber voice, on the comparison page
- A US founder subscriber who benchmarks BestFolio against PortfolioVisualizer, AllocateSmartly, and TestFol.io in his own spreadsheets is now quoted on the AllocateSmartly comparison page and the pricing page, published with permission.
- Fix
Confirmed and execute signal emails can no longer disagree
- On the last trading day of a month, the afternoon confirmed email could show a rotation in one of your strategies that the next morning's execute email did not repeat. The trade list was read from a stored estimate while the What changed section was computed fresh, so the two halves of the same email could describe different allocations.
- Both halves now come from the same computation. The target allocation you read in the afternoon is the one you trade the next morning.
- Improvement
Strategy pages and card hovers are easier to read
- Strategy detail pages had about fifteen small items that were too light to read comfortably: the Tactical badge, the source and paper links, the spread and liquidity lines under the asset universe, the unselected variant buttons, and several grey captions that stayed light-grey in dark mode instead of switching.
- All of them now clear the WCAG AA contrast threshold of 4.5 to 1 in both themes. The backtest table at the bottom of the page can also be scrolled with the keyboard now, which it could not be before.
- Cards no longer tint their background when you hover them. They lift with a shadow and a slightly stronger border instead, which keeps the small print on a card readable while you are pointing at it.
- Improvement
Small grey captions are readable again across the site
- About thirty small captions used a grey that was too light in light mode and too dark in dark mode at the same time: sub-labels on strategy pages, empty cells on the leaderboard, the trademark and disclaimer lines on the comparison and overlap tools, and assorted hints inside the app.
- They now use the same grey the rest of the site uses for that job, which clears the WCAG AA contrast threshold of 4.5 to 1 in both themes. Two of them were measurably failing on live public pages, not just borderline.
- Nothing moved and no wording changed. The text is simply darker in light mode and lighter in dark mode.
- Fix
Walk-forward drawdown is now labelled as a daily figure
- Walk-forward portfolios have reported their worst drawdown on daily values since June, but the column was headed simply Max DD, and the site uses that heading elsewhere for the month-end figure. Comparing a walk-forward portfolio against a strategy page therefore meant comparing two different measurements without either screen saying so.
- The Walk-Forward page now reads Max DD (daily), with a tooltip stating it is measured on the full daily series and captures intra-month troughs that month-end values smooth over. No number changed; only the label it carries.
- Why it matters: a daily drawdown is deeper than a month-end one for the same portfolio, so reading a blend's daily figure against a strategy's month-end figure makes blending look like it adds no protection. On a like-for-like basis it roughly halves the worst drawdown.
- Improvement
Strategy cards now show the window each return is measured over
- Every strategy's backtest starts at the earliest date its own assets have data for, and those start dates run from the 1920s to 2019. Two cards side by side could therefore show returns measured over spans decades apart, with nothing on the card saying so.
- The catalog card now prints the start year next to the headline return, for example "CAGR 15.5% since 1987". No number changed; the card simply states the window the number covers.
- This came from a subscriber who compared two sector strategies whose windows differ by 36 years and concluded the newer one was riskier. Measured over the same window the ranking reverses on every axis, so the missing context was not just noise, it pointed the wrong way.
- Fix
More accurate leveraged-ETF history before those funds existed
- Strategies with a leveraged sleeve are backtested further back than the leveraged fund itself existed, using the underlying index plus the borrowing cost such a fund would have paid. Two costs in that model were wrong: the 2x funds were charged a 0.50% yearly fee instead of the 0.95% they actually charge, and the one inverse fund was charged interest on borrowed money when a short position earns interest instead.
- Both are now corrected. Checked against the real funds over 16 to 20 years of overlapping history, the simulated 2x versions of the S&P 500, Nasdaq 100 and Russell 2000 now track within 0.06% a year, and the inverse Nasdaq fund within 1.0% a year instead of 8.7%.
- The 3x funds were already accurate and are unchanged, so any strategy built on TQQQ, UPRO or TMF keeps exactly the history it had. The 2x Treasury proxies are also left as they were, pending a separate review of how bond collateral is charged.
- Improvement
Signal dates now say which month the allocation is held
- A signal is dated at the market close it was computed from, so a row dated 31 July is the allocation you hold through August. The strategy pages showed only that computed-from date, which made the Current Allocation card and the Signal History table look like they disagreed with each other when both were correct.
- Every Signal History row now reads as a mapping, for example 2026-07-31 to August 2026, the column is labelled Signal date, and the table says once that each row is dated at the close it was computed from. The Current Allocation card names the same holding month in its own wording, so the two surfaces cannot be read against each other and give different answers.
- Weekly and quarterly strategies get the wording that fits them. Daily and buy-and-hold strategies are left alone, because for those the signal date already is the holding date and inventing a second date would be misleading.
- Improvement
Portfolios open fast again after a few days away
- The overnight job that pre-computes portfolio backtests could only reach the most recently edited portfolios, so if you had not opened yours in a while it was rebuilt from scratch on your next visit and could take over a minute to load.
- It now works through every portfolio, starting with the ones furthest out of date. Your numbers were always correct; this is purely about how long the page takes to appear.
- Improvement
BestFolio is now on Trustpilot
- We opened a public Trustpilot profile at trustpilot.com/review/bestfolio.app, so there is finally a neutral place to leave a review. The site footer links to it.
- Improvement
Subscriber voices on the landing page and the UCITS guide
- The landing page now shows three real subscriber testimonials, each published with permission: a UK researcher on robustness testing, an Italian investor on EUR analytics and tax impact, and a US user on automating rebalancing through the API.
- The EU quote also appears on the best UCITS TAA strategies guide.
- Fix
BAA-G4 now uses the offensive menu from Keller's paper
- Bold Asset Allocation's aggressive variant is built in the paper from the VAA-G4 global four with the Nasdaq-100 substituted for the S&P 500: QQQ, VWO, VEA and BND, holding the strongest one. Our implementation had been carrying SPY, QQQ, VEA and VWO since launch, which both added back the S&P 500 the paper deliberately swapped out and left out the aggregate-bond leg.
- SPY has not been removed from the strategy, only from the list it can buy. It remains one of the four canaries, where it helps decide whether the strategy is risk-on or risk-off. Because it is no longer holdable, it also drops out of the Asset Universe card, which now shows the ten assets BAA-G4 can actually hold.
- The correction is close to performance-neutral over the full 1986-2026 history (12.55% vs 12.57% a year, same 24.6% worst drawdown): the two menus pick the same asset in 95% of months. It matters for faithfulness to the published rules rather than for returns, and it restores the strategy's ability to rotate into aggregate bonds while still risk-on.
- The backtest shown on the strategy page is recomputed against the corrected rules.
August 2026
- Fix
Asset Universe no longer lists tickers a strategy never holds
- Some strategies read a ticker purely to make a decision: a canary that sets the risk-on/risk-off regime, or a Treasury-bill benchmark that a momentum score has to beat. Those tickers were being shown in the Asset Universe card as if they were holdings, so a strategy could look like it invested in one more asset than it ever buys.
- Corrected for BAA-G12 (the VEA canary), DAA (the BND canary), Gold Cross-Asset (its bond signal), Golden Ratio Dual Gate (both gate tickers) and AlphaOne Momentum (its absolute-momentum benchmark). Capital-Adjusted Allocation hides its cash leg only while the moving-average filter is off, because the filter is what makes cash a real holding.
- Variants that genuinely can hold one of these are unchanged: BAA-G4 still lists VEA, because there it is an offensive asset rather than only a canary.
- This is a display correction. No strategy's rules, signals or backtests change.
- Fix
Walk-Forward builder no longer times out on large pools
- Running or comparing a big strategy pool used to hold one long request open, and on the drawdown-based criteria an 8-strategy pool sat close enough to the proxy's 100-second limit that larger pools failed with a timeout. The builder now submits the optimisation as a background job and shows live progress while it polls for the result.
- Finished optimisations are kept for a few hours, so re-running the same setup returns instantly and the same submission from two tabs shares one computation. Any refresh of the underlying strategy data starts a fresh optimisation automatically.
- One long optimisation also no longer slows unrelated requests while it computes.
- Improvement
Testimonials replaced with a real subscriber quote
- The customer quotes on the landing, pricing, and sign-up pages dated from pre-launch placeholder copy. All three pages now carry a genuine testimonial from a UK Pro subscriber, published with permission.
- Fix
Blog editorial date updates fixed
- Updating a blog draft's publication date through the editorial API returned a validation error since launch; date changes now save correctly.
- Fix
Core-satellite portfolio creation fixed, plus an honest Pre-launch label
- Creating a portfolio with pinned fixed sleeves in one API call returned a 500 (the core/satellite construction had to be saved plain first, then updated). Create and update now behave the same; the in-app editor was never affected.
- The strategy chart's Pre preset no longer calls pre-launch history out-of-sample. That window is generally the period the author studied when designing the rules, so the tooltip now says to treat it as in-sample. The Forward OOS preset is unchanged.
- Improvement
API keys now reach the windowed backtest and the NAV comparison endpoints
- A read-only bf_live_ API key now authenticates on GET /api/backtest/{variant_id}/window and GET /api/performance/nav, so a Pro subscriber can pull a strategy's post-publication metrics and its monthly NAV series from a script instead of only from a logged-in browser. Requested by a Pro user comparing HAA without QQQ's full backtest against its genuinely out-of-sample record.
- Authorization is unchanged. The key resolves to its owner's account and the same tier, visibility and ownership checks apply as in a browser session, so a key never widens what its owner can see.
- Fix
UCITS Finder is explicit about missing tickers, and VT gets an entry
- Searching for a ticker with no entry used to fall straight through to substring matches: VT returned the rows for VTI, VTV, VTIP and GOVT, each with its own confidence badge, which read as the tool calling their UCITS wrappers close matches for VT. Exact ticker hits now rank first, the finder states explicitly when there is no exact entry, partial results are labeled as such, and one or two letter searches match ticker prefixes only.
- VT itself now has an entry: the nearest UCITS fund is Vanguard FTSE All-World, VWCE accumulating (IE00BK5BQT80) or VWRL distributing (IE00B3RBWM25). It is a close rather than exact match: VT tracks FTSE Global All Cap while the All-World twins hold large and mid caps only, roughly the top 90-95% of investable market cap, so VT's small-cap sleeve is not covered.
- Fix
Walk-forward keeps the allocation it already published
- Walk-forward portfolios used to re-optimise every past month on each refresh. For the Max Ulcer Performance Index, Max Sortino and Min Max-Drawdown criteria that could quietly change a past month's allocation even though nothing about your data had changed, because those objectives can have several equally good answers and the optimiser does not always return the same one.
- Months you have already been shown are now replayed exactly as published, and only genuinely new months are optimised. Your monthly rebalance is unchanged, and refreshes are faster. Max CAGR, Max Sharpe and Min Variance were never affected.
- Fix
UCITS: NTSX now maps to its real wrapper (WTEF)
- The European view of NTSX pointed at a rebuilt CSPX plus IBTM pair on the claim that no direct UCITS wrapper existed. WisdomTree's own US Efficient Core UCITS ETF (WTEF, IE000KF370H3) is the same 90/60 structure and has been LSE-listed since October 2023, so the NTSX row now points there.
- This matters because the old rebuild diluted the sleeve from 1.5x to 1.0x. On the Return Stacked Quartet the UCITS view now reads 107% aggregate exposure instead of 100%, against 156% for the US version. WTEF is a close rather than exact twin: its index applies ESG exclusions the US fund does not, and the fund is small with thin on-screen volume.
- Fix
Correlations page stays responsive while you build a comparison
- Adding strategies one at a time used to start a fresh correlation calculation on every click, so a large selection queued up dozens of overlapping computations and could slow the rest of the site for other pages too.
- The page now waits until you have finished selecting and runs a single calculation, and it drops any calculation you have already moved past.
- Correlation covers up to 30 entities at once, which is past the point where the heatmap stays readable.
- Improvement
Faster walk-forward on the risk-based criteria
- Walk-forward analysis on Max UPI, Max Sortino and Min Max-Drawdown is several times faster, so large strategy pools no longer time out on the Walk-Forward page.
- Each month now starts from the previous month's allocation instead of from scratch, which also makes the resulting weights move slightly less from month to month.
- Fix
Walk-forward now always respects your per-strategy limit
- On the Max UPI, Max Sortino and Min Max-Drawdown criteria, the optimiser could not always solve a month and silently dropped the per-strategy cap you had set for it. In the worst case a single strategy took the entire walk-forward allocation under a 35% limit.
- Every month is now solved with a method suited to those three criteria, and any result is checked against your limits before it is used. Max CAGR, Max Sharpe and Min Variance were never affected and are unchanged.
- Your portfolio picks up the correction at its next recompute. Weights for past months may shift as a result.
- Feature
New variant: Triplet SmartLeverage 1.5x
- The Momentum-Correlation Triplet gets a leveraged execution variant. Selection is unchanged and stays computed on the regular 1x ETFs; the chosen sleeve is executed at a 1.5x exposure target using 2x and 3x leveraged ETFs at reduced weight, with no margin.
- A return dial, not a Sharpe improvement: backtests add roughly 4 points of CAGR over the Standard variant at a deeper drawdown. Assets without a leveraged ETF stay at 1x, so the achieved leverage runs below target in months that hold them.
- Improvement
Fewer marketing emails, and referral prompts only after real value
- Marketing emails are now hard-capped at two per month per person. Signal alerts, monthly recaps, and account emails are not affected.
- The referral banner now waits until you have a Main portfolio and 30 days of history, instead of greeting everyone from day one.
- Feature
Tell us why you are here, if you want to
- One optional question on the dashboard asks what brought you to BestFolio, and a second one, later, asks where you first heard about us. Both are skippable and never block anything.
- Your answers are editable any time under Settings, About you, and they only steer what we build next.
- Improvement
Backtest disclaimer now shows on every blog post
- Every page already carried the general disclaimer, but the sentence about backtested results being hypothetical appeared on only 7 of 58 posts, because it was written into each post by hand.
- Every post now shows it. Posts that already include that sentence are left alone, so nothing appears twice.
- Fix
Signal History now agrees with the Current Allocation card
- On some strategies the most recent Signal History row showed the market as it stood on the day the backtest was built, under a month-end date it had not reached yet, so it disagreed with the Current Allocation shown above it.
- Stored backtests no longer record a rebalance for a month that has not finished, and for the most recent date the live signal now takes precedence over the stored one.
- The monthly backtest refresh now runs on the first scan of each month instead of only the 1st or 2nd, so a month that starts on a weekend is no longer skipped.
- Improvement
Founder pricing now has a closing date
- Founder pricing closes on Tuesday 6 October 2026 at 11:59pm Pacific. Until then you can still subscribe at $19/mo (EUR 22 with VAT included) instead of the regular $29/mo.
- The date closes the founder rate to new subscribers only. If you are already on it, your price does not change for as long as you stay subscribed.
- Until now the pricing page said only that founder pricing would not last, with no date behind it. It now shows the real date and the days remaining.
- Fix
Clearer error when a walk-forward window is too long
- Asking for a lookback window longer than the history your selected strategies actually share now returns a clear message saying how many months are needed, how many exist, and what to change. It used to fail once per optimization criterion with a raw internal error.
- Feature
Five new strategies for September
- Inflation Compass (David Varadi, CSS Analytics) leads the batch: a four-quadrant macro rotation where SPY's 200-day trend sets growth and the bond market's 5-year breakeven, confirmed by a sector ratio, sets inflation. One sector position at a time, monthly, with a card backtest from 1950 that covers every postwar inflation regime. It succeeds Growth-Inflation Sector Timing, which stays in the catalog with a cross-link.
- TQQQ Quadrant Stack, a community strategy by u/Separate-Ad-9633 from r/LETFs, joins as the leveraged pick: 30% TQQQ with ZROZ, international small-cap value and return-stacked diversifiers, where SPY and TLT trend breaks each route their sleeve into gold and managed futures. Half the book never trades.
- Also new: Generalized Protective Momentum (Keller and Keuning), Meb Faber's Trinity Portfolio, and Charles Gave's Permanent Portfolio update. All five ship with full backtests and live signals for Pro subscribers.
- Feature
HAA-Simple Leveraged 2x (QLD), with an extreme-risk warning
- A twice-requested variant joins the HAA family: the Simple 2x construction holding QLD (2x Nasdaq-100) instead of SSO when risk-on. Same rules, same gate, a different engine.
- It ships with our strongest risk disclosure. The SPY plus TIP gate does not read the Nasdaq, so in 2000 it held the Nasdaq sleeve through eleven straight months of the dot-com unwind: a drawdown of roughly -80% that took nearly a decade to recover, with a second -53% episode in 1983-1987. The strategy page flags it as extreme risk, not investable on its own.
- Since QLD's 2006 inception the same rules have beaten the SSO variant on every major metric. The deep history is the honest price tag: treat it as a return dial, not a Sharpe improvement.
- Improvement
Comparison metrics stay fast even on a cold cache
- Comparison metrics were cached per exact request, so no two pages ever shared work, and recomputing the full catalog took about two minutes for whoever hit it first each hour, the watchlist above all.
- Metrics are now cached per strategy variant and shared across the watchlist, compare, backtest and scatterplot pages, and the daily data scan refreshes them right after it finishes, so the first visit of the day no longer pays the recompute.
- Fix
Watchlist renders instantly while metrics load
- Opening the watchlist computes performance metrics for every strategy variant in one request. When the server cache is cold that request can run for minutes, and the whole page stayed a blank loading skeleton the entire time.
- The page title and description now appear immediately, with the loading placeholder confined to the table area, so a slow metrics fetch no longer looks like a broken page.
- Feature
Leaderboard: UCITS filter and replicability flag
- European investors kept cross-checking every ticker by hand to see whether a strategy can be replicated with UCITS funds. Each strategy row now checks its full asset universe against the same UCITS mappings the strategy pages use: fully replicable strategies carry a small UCITS badge, and a new UCITS filter keeps only those rows. Requested on r/LETFs.
- The expanded CSV export adds a UCITS Coverage column (covered/total tickers), so partially replicable strategies show exactly how many holdings have a UCITS cousin.
- Fix
Asset Universe cards now show what each variant actually trades
- Strategies that pick holdings from regime allocation tables (TQQQ/UPRO Trend, Buy the Dip, VIX Shield) listed only their signal inputs, so the card showed the two tickers the strategy never holds and none of the ten it does. Leveraged and SmartLeverage variants likewise showed base tickers instead of the leveraged ETFs they hold, and brake variants omitted their cash leg.
- The universe is now assembled the same way real allocations are, and tickers are shown under the same canonical names as the allocation charts (IEMG rather than VWO, PDBC rather than DBC, GLDM rather than GLD). Catalog ticker search follows suit, so searching KMLM or DBMF now finds the strategies that trade them.
- Fix
Portfolio Compare no longer trips the fair-use limit on repeat runs
- Comparing portfolios fires one backtest request per selected portfolio, so a few comparisons in a row could cross the per-account fair-use ceiling, and every request then failed with a misleading 'at least 2 portfolios required' error. Reported by a subscriber.
- Cached backtests no longer count against the ceiling (only fresh computes do, which keeps the abuse protection intact), and when the limit does engage the page now says so and suggests waiting a minute.
- Data
Price cache: stale dividend adjustments fixed and guarded
- Price providers re-adjust an ETF's entire history whenever it pays a distribution, but our cache only refreshed the last few days of data, so older rows could quietly sit on a stale adjustment basis. Returns spanning that seam were slightly off, and on a few bond tickers (notably TIP and IEF) it was enough to nudge signal scores. Found while answering a subscriber's reconciliation question.
- We refetched clean history for every affected symbol, and the fetcher now detects a re-based series on its own and heals the full history immediately instead of leaving a seam.
- Fix
Asset Universe cards no longer list signal indexes as holdings
- Regime Detector, VIX Shield and the Vol-Target QQQ variants showed their signal inputs (the VIX and Nasdaq-100 indexes, breadth and credit series) in the Asset Universe card as if they were investable holdings.
- The card now lists only assets the strategy can actually hold. Same fix family as GEM's BIL threshold and HAA's TIP canary from July.
- Improvement
ETF preferences: IYR and SGOL join the substitution groups
- IYR (iShares US Real Estate) is now part of the US REIT group, so an account-wide VNQ to IYR preference works, as a subscriber requested. SGOL (abrdn physical gold) joins the gold group as a common near-duplicate.
- Defaults and recommendations are unchanged: VNQ and GLDM stay the canonical picks.
- Fix
Drawdown pages stop querying the data provider for malformed tickers
- Crawlers following broken links sent mangled ticker text (like "VYM)%3A") to the drawdown analyzer, and every hit made a pointless data-provider call. Malformed tickers are now rejected instantly and the page returns a clean 404.
- Real ticker shapes, including BRK.B, ^GSPC, GC=F and BTC-USD, work exactly as before.
- Fix
Backup price data is always filed under the right ticker
- Single-ticker price fetches from our backup provider could lose their ticker label in transit and were then stored under a placeholder symbol, leaving the real ticker's data stale.
- The label is now attached at the source, and unlabeled data is dropped instead of misfiled.
- Data
GGCEM: real-time data check published, removed from Top Performers
- A subscriber showed that GGCEM's OECD leading-indicator data is revised after first publication, so the published backtest quietly benefits from information that was not available at the time. We reproduced it against the real publication archive: on as-published data since 2018 the regime call differs in 19% of months, Sharpe drops from 1.19 to 0.82, and the worst drawdown deepens from -11% to -34%.
- The GGCEM page now carries a data caveat and a full real-time comparison (chart and numbers), and the strategy is excluded from Top Performers rankings while the review is open. Live signals always used first publications, so nothing changes in live operation.
- Improvement
Tranching now asks before a portfolio edit cancels it mid-window
- Editing a portfolio while a tranching window was in progress could switch tranching off without any warning, silently cancelling the remaining tranche alerts. One subscriber lost the final tranche of a 5-day entry this way.
- The portfolio editor now asks for an explicit confirmation before a save turns off an in-flight tranching window, and turning it off also cleans up the stored tranche plan.
- Fix
Dark mode: UCITS and drawdown pages are readable again
- In dark mode, the UCITS strategy hub, the per-ticker UCITS mapping pages, and the drawdown history pages rendered most headings and numbers in near-black on a near-black background.
- All three page families now use proper dark-mode text colors, and they were added to the automated contrast checks so this cannot quietly come back.
- Reported by a subscriber.
- Improvement
Risk vs Return: Top Performers criteria shown on the page
- The numbered Top Performers list ranked variants by an unpublished mix of Sharpe, CAGR, and max drawdown, so it was not clear why a variant made the cut.
- The card now states the eligibility gates and the exact ranking formula next to the list, computed over the same window as the chart.
- Fix
The Robustness column is now called Robustness everywhere
- The leaderboard header used to say Deflated Sharpe (DSR in the compact view) while the blog, methodology and strategy pages call the same score Robustness. A reader went looking for a Robustness column and reasonably concluded it did not exist.
- One name now: Robustness, with the tooltip spelling out that it is the Deflated Sharpe Ratio. Saved CSV exports keep working through the old header alias.
- Feature
Stoken ACA: each sleeve gets its own backtest
- The three ACA pairs (SPY/IEF, GLD/TLT, VNQ/IEF) are now separate variants on the strategy page, each backtested standalone with full metrics, drawdowns and withdrawal rates.
- Useful for studying what each sleeve contributes, or for blending the sleeves at your own weights instead of the book's equal thirds.
- Requested by a subscriber.
- Fix
Chart reference labels no longer clip at the right edge
- The lifetime CAGR marker on the Rolling 5-Year CAGR chart, the CAGR marker on Annual Returns, and the Sharpe=1 line on Risk vs Return anchored their text to the chart edge, so part of the label could get cut off.
- All three labels now render inside the plot area and stay fully visible at any chart width.
- Data
Month-end signals wait for every fund's official close
- Some ETF closing prices reach our data provider hours after the US close, and a month-end signal computed in that window could silently use the previous day's price for those funds, occasionally flipping an allocation.
- The nightly price refresh now fetches every fund's official close from a second source the same evening, and month-end signals hold off until the full universe has settled closes before locking in.
- Execute alerts on the first trading day are computed from complete data either way; this closes the window where an earlier preview could disagree.
- Fix
Rebalance alerts: trade list and What changed now always agree
- In the pre-close Confirmed and Preview alerts, the What changed section used fresher data than the trade list, so the two could contradict each other when a strategy flipped on the last trading day.
- Both sections now render from the same freshly computed signals, and portfolios with a pinned fixed sleeve no longer show that sleeve swapped to leveraged vehicles in the alert view.
- The definitive Execute alert on the first trading day is unchanged and remains the one to trade on.
- Fix
Factor Exposure shows all six factor labels
- The Factor Exposure card on strategy pages squeezed six factor bars into a short chart, and the chart library silently dropped every other axis label, so Market, Value and Investment looked missing.
- The card is taller and every label always renders: Market, Size, Value, Profitability, Investment and Momentum.
July 2026
- Improvement
Portfolio and strategy data updates the same evening after US close
- Strategy NAVs and portfolio dashboards previously picked up each market close only the next morning, so the numbers always ran a full trading day behind.
- The nightly refresh now appends the close the same evening once US markets have settled, so dashboards are current by the time you check them.
- Fix
Performance and Correlations pickers show the whole catalog
- The strategy picker on the Performance and Correlations pages silently stopped after the first 50 variants, which hid newer strategies such as HAA Quartet unless you searched by name.
- The picker now lists every strategy variant, sorted alphabetically so a strategy's variants sit together.
- Fix
Daily strategy alerts fire on every regime flip again
- An alert deduplication rule meant to stop repeat emails also swallowed genuinely new flips on daily and weekly strategies: once a strategy had alerted a given transition, later identical flips sent nothing. Every new flip now alerts.
- The Signal History table on strategy pages includes live signal changes since the last full backtest, so it always agrees with the Current Allocation card.
- Fix
Strategy category filters no longer split into duplicates
- Category chips on the leaderboard and strategies catalog could show the same category twice (for example Multi-Asset and Multi Asset), and picking one hid strategies filed under the other spelling.
- All strategy tags now use one spelling, so each category appears once and its filter matches every strategy in that category.
- Improvement
Three clearer ways to start exploring strategies
- The strategies catalog now starts with three explained paths: a simple passive baseline, a defensive monthly approach, and an EU/UCITS-friendly route.
- Each path shows who it may suit, when to avoid it, its trading cadence, expected turnover, and the longest losing stretch in its backtest before you open the strategy.
- On small screens, three quick filters stay visible while the rest sit under More filters; CAGR sorting now lives in the metrics menu.
- Feature
Six new strategies for August
- Global Growth Cycle Enhanced Momentum (Grzegorz Link) leads the batch: global equity momentum gated by the OECD leading-indicator cycle, backtested to 1986 across three variants.
- Also new: KISS Momentum, a community two-system model pairing a broad risk-parity momentum sleeve with a concentrated year-to-date picker; Stoken's Active Combined Asset, daily channel breakouts across three asset pairs from Survival of the Fittest for Investors; Faber's 12-Month High Switch, which holds risky assets only while they trade near their 12-month high; and Predicting US Treasury Returns, the Baltussen, Martens and Penninga four-signal bond-timing model.
- The Desert Portfolio, a defensive three-fund allocation from the Gyroscopic Investing forum, joins the fixed lineup. All six ship with full backtests and live signals for Pro subscribers.
- Fix
Leaderboard trailing returns measured to exact dates
- The 1M, 3M, YTD and 1Y columns now anchor on the true last trading day of each lookback window instead of a nearby sampled point, which could add up to a week of extra returns to the shorter windows.
- Strategies whose backtests were recently recomputed now refresh on the leaderboard nightly, so its figures always agree with the strategy's own page.
- Fix
Accurate monthly scoreboard columns
- The auto-generated monthly TAA scoreboard now measures its Month, YTD and 1-Year columns on exact calendar month boundaries, using the same NAV curves each strategy page shows.
- Rows whose data does not reach the month's last trading day are held back instead of being published short.
- Feature
SWR and PWR columns on the Leaderboard
- The expanded Leaderboard now shows each strategy's Safe Withdrawal Rate and Perpetual Withdrawal Rate, the same figures its strategy page reports.
- Both columns sort and export to CSV, and they stay fixed to the full backtest history whatever period you select.
- Improvement
A faster drawdown analyzer
- The drawdown tool no longer re-downloads a fund's full price history every time you run it, so results come back faster.
- This also clears the occasional "analyzer is busy, please retry in a few seconds" message on the free tool.
- Improvement
A much smaller strategy catalog over MCP
- list_strategies now returns a compact catalog by default, around 90% smaller, so it no longer fills up an AI assistant's context in a single call.
- You can narrow it with search, strategy_type, frequency and limit, or ask for complete records with full: true.
- Improvement
A much shorter monthly recap email
- The monthly recap email now covers the 3 changes most worth your time, with a one-line tally of everything else and a link to the full changelog.
- It also arrives earlier: the first Tuesday after the month ends, instead of three weeks in.
- Feature
Connect Claude or ChatGPT to BestFolio by signing in
- The MCP server now supports signing in with your BestFolio account, so you can add it as a connector in Claude or ChatGPT without copying an API key.
- This also makes it work in the Claude web and mobile apps, which have no way to send an API key.
- Existing setups that pass a bf_live_ key as a header keep working exactly as before.
- Improvement
Strategy pages respond faster when you click around
- Switching tabs, picking a variant, toggling a comparison overlay or dragging to zoom on a strategy page no longer rebuilds the whole chart and stats tables each time.
- Typing in the strategy catalog search box stays smooth with the full list on screen.
- Fix
Asset Universe cards list only assets a strategy can hold
- Signal-only tickers no longer show up as holdings: GEM's T-bill threshold (BIL) and HAA's canary trigger (TIP) are inputs to the signal, and the strategies never hold them.
- GEM's universe now correctly reads 3 assets (SPY, VEU, AGG), and HAA's no longer lists TIP.
- Feature
Portfolio leverage can now be switched on in Settings
- The portfolio leverage tools, previously limited to a small beta group, are available to every account: levered backtests, 2x and 3x ETF routes, borrowing costs, and a leverage sweep chart.
- Turn it on under Settings, Portfolio Preferences, then edit any portfolio to configure leverage.
- Improvement
Leaderboard columns are tighter and easier to scan
- Metric columns in the leaderboard are now sized to the numbers they hold instead of their heading text, so the full set of return and risk metrics is far more compact.
- More columns fit on screen at once and the values line up in a clean, uniform grid, with longer headings wrapping neatly instead of stretching a column wide.
- Improvement
Fair-use limits on portfolio backtests and edits
- Portfolio backtests and edits now have per-account rate limits, so one account's automation can no longer slow the app down for everyone else.
- Normal use is unaffected: the ceilings sit far above what interactive editing produces. Automated callers that exceed them receive HTTP 429 with a Retry-After header.
- Feature
UCITS alternatives: full sector coverage and automatic baskets
- Every sector ETF our strategies rotate through (XLE, XLK, XLV and the rest) now has a European UCITS equivalent: the SPDR Select Sector UCITS family, same provider and same sector indices as the US funds. 29 strategy variants that previously showed Unmapped rows in the UCITS panel are now fully covered, and 26 more tickers gained verified mappings.
- Funds with no single UCITS twin, like return-stacked RSST, 90/60 NTSX, or the Pacific fund VPL, are now rebuilt automatically as a basket of UCITS funds with the exact weight of each leg shown, instead of a note telling you to do the math yourself.
- A monthly audit now compares every live strategy signal against the mapping table, so a new strategy or a new rotation can never silently bring back an unmapped ticker.
- Feature
New library portfolio: Open Momentum Trio
- A pre-built 40/30/30 blend of Hybrid Asset Allocation, Bold Asset Allocation G4, and Accelerating Dual Momentum. Each sleeve is a fully published model, and blending them has historically cut the worst drawdown to roughly half of what the sleeves suffer alone.
- It started as a subscriber request to add a closed-rules tactical strategy. Those rules are private, so this portfolio rebuilds the same shape from open models instead.
- Improvement
Privacy policy now covers campaign attribution
- If you accept Analytics cookies, we now record which of our own posts or articles brought you to BestFolio (the campaign tag on the link, the landing page, and the referring site) so we can tell which content is worth writing more of.
- Nothing changes if you decline: no attribution is stored, and withdrawing consent deletes anything already stored. The updated privacy policy describes this in Section 3.4 and takes effect on July 17, 2026.
- Improvement
Faster, more reliable plan detection across the app
- The app now resolves your plan from a single account endpoint instead of scanning the strategy catalog, so Pro pages unlock faster after sign-in and Settings can label the Founder plan correctly.
- SmartBlend and Walk-Forward optimization now enforce Pro on the server as well, matching what the pricing page says.
- Feature
Signals and Portfolios pages now open to free accounts
- Free accounts see the Signals page with live monthly signals for the six free strategies. Pro strategies appear as locked rows with regime and dates visible but allocations hidden.
- The Portfolios page is open to free accounts with one saved portfolio included (Pro includes up to 25). Pro-only tools like walk-forward construction are labeled before you click.
- Improvement
EU VAT handled consistently on USD plans
- If your billing address is in the EU but you subscribed on a USD plan, VAT is now applied from your next renewal, matching how our EUR plans already work. Affected subscribers receive a one-time email before anything changes.
- USD prices remain listed excluding tax, and the pricing page now states exactly when VAT applies.
- Improvement
Leaderboard tables now make more room for comparison
- The leaderboard now uses more of the available screen width, so more strategy metrics stay visible at once on larger displays.
- When the extended table has additional columns off-screen, edge shading and scroll controls now make that clear and provide a quick way to reveal them.
- Security
Account deletion and retention now have explicit limits
- Deleting an account now removes feedback free text and identifiers while preserving only non-identifying workflow facts; linked message and delivery records are removed as well.
- Message free text now expires after 90 days, minimal delivery records after one year, feedback after three years, and protected operator-access audits after two years.
- The Privacy Policy now distinguishes BestFolio service providers from providers acting for their own legal purposes and explains the narrow tax-record and deletion-prevention exceptions.
- Improvement
Performance metrics are now consistent across BestFolio
- Key views now use the same 1Y, 3Y, CAGR, backtest history, drawdown, and Sharpe definitions and ordering.
- Leaderboard dates now show the observations behind full-history results, while recent returns keep their own shorter periods.
- Month-to-date and quarter-to-date values now stay separate from trailing one-month and three-month returns.
- Improvement
Optional emails now require a clear choice
- New accounts start with onboarding tips and product updates turned off, then choose each stream separately on their first app session.
- Settings keeps the two controls separate and can turn off every optional email at once. Essential billing, security, and account messages are unaffected.
- Fix
Walk-forward portfolio charts now update daily again
- Walk-forward portfolios could keep their performance chart frozen at the last monthly rebalance, because the nightly refresh skipped any portfolio whose freshly optimized weights had drifted from the published ones.
- The nightly refresh now extends the chart with the allocation you were actually given at the last rebalance, so the current month tracks through the latest close.
- Fix
Keyboard navigation and mobile layouts are more reliable
- Navigation menus now close with Escape and return focus to their trigger, skip links move directly into page content, keyboard focus stays visible in both directions, and controls wait until they are ready before accepting a click.
- The strategy catalog no longer exposes hidden duplicate links to the keyboard, and the leaderboard fits a 320-pixel viewport while its data table remains internally scrollable.
- Guide and pricing cards now show a clear keyboard focus ring, and checkout buttons retain readable contrast while they are briefly disabled.
- Improvement
Ten UCITS pages now show the evidence behind the match
- SPY, QQQ, VTI, IEF, VWO, TLT, AGG, GLD, TQQQ and DBMF pages now set out what each side tracks, the domicile and structure, listings, distribution policy, cost, replication method and the known differences, with links to the issuer's own sources.
- Every reviewed mapping carries the date it was checked, and any page lets you report a mapping that looks wrong.
- Improvement
Blog publishing now preserves reviewed copy
- New and updated articles now stay in draft until the exact title, summary, and body have been reviewed and approved.
- If published prose needs a correction, it must be unpublished, revised, and reviewed again before it returns to the site.
- Improvement
European workflow links are easier to find
- The Strategies and Portfolio Library pages now point to the UCITS-compatible strategy guide and the free UCITS Finder, and explain where USD/EUR display, ISINs, and mapping confidence fit into the workflow.
- The homepage now lists the two display currencies BestFolio supports, USD and EUR, and no longer claims GBP display support.
- Fix
Subscription status updates are more resilient
- Billing notifications now wait briefly instead of failing immediately when a protected account-maintenance job is finishing, reducing delayed access updates after checkout or renewal.
- Long-running maintenance still asks Stripe to retry, so no payment event is marked complete before it is safely processed.
- Fix
Blue callouts now render correctly in dark mode
- Blue-accented callouts across Settings, Scatterplot, strategy details, research notes, the route guide, and the walk-forward editor now use the intended deep-blue styling and maintain readable contrast in both themes.
- Fix
Live Tracking now respects the server's access boundary
- Regular members now stay on manual holdings and use their own read-only IBKR connection in Settings, without the page probing the owner's legacy brokerage feed.
- The owner-only feed and admin controls now follow the server's access decision instead of browser-side account identifiers.
- Fix
9Sig research now has one corrected article
- The established 9Sig article now contains the faithful-rules correction, while the duplicate follow-up address redirects to it.
- The page separates observed TQQQ and AGG history from pre-launch simulations and historical-return bootstrap scenarios, with the study windows and limitations stated beside the results.
- Fix
Mobile menu scrolls, and Sign In is easier to reach
- The navigation menu on phones now scrolls on its own, so every item stays reachable on smaller screens, including the account links that sit at the bottom.
- Signed-out visitors now also get a Sign In button in the top bar on mobile, so returning members can log in without opening the menu.
- Feature
Suggest ETFs to fill a factor gap in FactorLens
- The FactorLens vs Target tab now has a Suggest ETFs to fill my biggest gap button: it finds the factor your portfolio is furthest below your target on, and lists real ETFs with the strongest exposure to it.
- It is a measured-exposure screen, not investment advice or a recommendation to buy.
- Feature
Compare your FactorLens exposures against a target
- FactorLens has a new vs Target tab: pick a target factor profile (total market, small-cap value, quality, or trend) or set your own per-factor targets, and see where your portfolio sits above or below each one.
- It highlights your biggest gaps in plain English. This is a comparison aid, not investment advice.
- Feature
Portfolio pages now show walk-forward allocation history
- Walk-forward portfolios now include a Strategy Allocation Over Time chart, showing how each strategy's target weight changed at every rebalance.
- Use the 1Y, 5Y, and All controls to review different periods. Pinned strategies are marked as fixed, and switching portfolios always loads that portfolio's own history.
- The chart shows recomputed out-of-sample target weights, not broker holdings or trade history.
- Feature
Emerging Markets factor region in FactorLens
- FactorLens can now regress your portfolio against the Fama-French Emerging Markets factors, alongside the existing US and Developed Markets sets, so emerging-market holdings are measured against the right factor universe.
- Pick Emerging from the Factors dropdown. The Emerging Markets profitability and investment factors begin in the early 1990s, so that regression uses a shorter history, which the results now flag.
- Improvement
High-risk strategy warning now explains portfolio use
- The extreme-risk 'not investable' notice on strategies with a very large historical drawdown now explains that the same strategy can appear as a small, capped sleeve inside a diversified BestFolio portfolio, where its risk is bounded and offset by holdings that behave differently.
- Improvement
FAQ controls read cleanly with assistive technology
- FAQ chevrons now remain visual decoration, so screen readers announce each question without an extra symbol.
- Improvement
Leaderboard shading makes relative differences easier to scan
- Numeric cells now use a subtle five-band scale calculated only from the rows currently shown, while exact values stay visible and ties or short samples remain neutral.
- Direction follows each metric's definition, fragile DSR warnings stay amber, and the page explains that colours are a comparison aid rather than a recommendation or forecast.
- Improvement
Walk-forward results show weight stability
- Single and comparison results now label weight stability and show the average monthly change, largest single-sleeve shift, and concentration-equivalent strategy count.
- Results with fewer than two out-of-sample weight observations say that history is insufficient, and the summary makes clear that stability describes past weight changes rather than forecasting performance.
- Feature
Research Notes begin with strategy inclusion criteria
- Research Note 01 explains the four gates a strategy must clear before it can enter BestFolio's research catalog and why inclusion is not an endorsement.
- The reusable note format is linked from the research library and includes article metadata, methodology links, limitations, and sitemap coverage.
- Improvement
Portfolio allocations fit smaller screens
- Portfolio actions and selection now stack cleanly on phones, while strategy and fixed sleeves switch to readable cards that keep every ticker available.
- Current and preview allocations sit side by side when space allows, and optional ETF processing controls now live in a drawer so the holdings stay central.
- Improvement
Strategy pages explain what the numbers cover
- Strategy pages now show their rebalance cadence, data coverage, rule summary, costs, and next action before the charts.
- UPRO, QLD, and TQQQ drawdown pages now lead with actual fund history and show pre-inception proxy simulations in a separate, clearly labeled section.
- Improvement
Strategy cards stay put when you hover them
- On the Strategies page, each card's one-line description and current holdings are now always shown instead of appearing only on hover, so cards no longer grow and shift the grid as you move the mouse across it.
- Improvement
Clearer email preferences
- Email settings now separate product updates and blog posts from your portfolio signal alerts, so you can turn off marketing emails without losing your signal or account emails.
- The product updates option shows how often it can send, so a busy week is never a surprise.
- Improvement
Factor Lens is easier to use on small screens
- Factor scorecards now stay within a phone-sized screen, with readable exposure bars and labels that wrap instead of forcing the page sideways.
- Entry modes, region and example controls, result tabs, sharing, and table rows now use roomier touch targets.
- Improvement
Returning members see their current allocation right away
- When a former Pro member re-subscribes, BestFolio now emails the latest effective allocation for their main portfolio right away, provided signal emails are enabled and they have not already received that cycle's signal.
- The snapshot applies their ETF preferences, UCITS setting, and SmartLeverage configuration without describing the message as a rebalance or telling them to trade.
- Improvement
Metric names now match across comparison views
- The leaderboard and strategy statistics now use the same names, explanations, and number formatting for CAGR, volatility, drawdown, Sharpe, Sortino, Calmar, UPI, and related metrics.
- Downloaded leaderboard CSV files use those same canonical column names while keeping numeric values spreadsheet-friendly.
- Feature
Choose a custom start year on the leaderboard
- The leaderboard now lets you compare every strategy from a fixed calendar year between five and thirty years ago, alongside Full History and the existing trailing windows.
- Strategies that launched later stay visible, and the Years column shows the history actually used for each row.
- Improvement
Pricing and checkout show renewal and tax terms
- Each paid plan now shows its renewal amount and interval, tax treatment, and a refund-policy link next to the subscribe button.
- Stripe Checkout repeats the renewal and tax-total information and shows the refund-policy address before you submit.
- Security
Account exports and deletion cover more linked data
- Your account export now includes the settings needed to reconstruct portfolios, along with consent, referral, broker connection, feedback, favorite, share, submission, and cancellation records where applicable. Secrets and private access links are excluded.
- Account deletion now also removes linked feedback and administrative delivery records, including writes that overlap with the deletion request.
- Improvement
Public pages are easier to use with assistive technology
- Keyboard focus, color contrast, control labels, and navigation order have been improved across public pages in both light and dark themes.
- Favorite stars on strategy cards are now separate controls, so keyboard and screen reader users no longer encounter one interactive control nested inside another.
- Feature
Optional private feedback when cancelling
- The subscription controls now present pause and cancellation as neutral self-service options, including while a subscription is already paused. Scheduling a cancellation never requires feedback.
- If you choose to share it, you can select a cancellation category and add a private note. Notes are encrypted at rest, are never sent to analytics or notifications, and are deleted after 365 days or with your account, whichever comes first.
- Security
Cancellation feedback privacy safeguards
- Cancellation comments are no longer copied into admin notifications or general message logs, and historical database copies are removed.
- Protected storage, 365-day private-note expiry, and account-deletion rules are now in place before optional cancellation feedback is enabled.
- Feature
Compare, density, and saved views on the leaderboard
- Tick strategies on the leaderboard and press Compare to open them side by side on the performance chart, up to six at once. A compact density toggle fits more rows on screen.
- The leaderboard now remembers your period, filters, sort, columns, and density between visits, with a Reset view button to clear them.
- Feature
A Free Tools hub
- The Tools page is now a real hub that lists every free tool in one place: the Factor Lens, Drawdown Analyzer, UCITS Finder, and Portfolio Overlap.
- Security
Account deletion now erases more of your data
- Deleting your account now removes message and delivery records, feedback identifiers, API keys, referral records, and your broker connection details, on top of portfolios and preferences. Billing records are kept only where law requires.
- A new internal check fails our tests if a future table that stores your data ever lacks a deletion rule, so nothing can quietly slip through.
- Improvement
Accessibility: the pricing comparison is now a real table
- The Free versus Pro feature comparison is now a proper data table with row and column headers, and the check and dash marks read as Included or Not included to screen readers.
- Feature
Favorite strategies and more metrics on the leaderboard
- You can now star a strategy straight from the leaderboard, and Show all columns adds Calmar, Ulcer Index, and best and worst month next to the existing metrics.
- The CSV download now matches the columns you are viewing, so the key view and the expanded view each export exactly what is on screen.
- Improvement
Rejection log: a reader-suggested 3x Nasdaq timer, tested and passed on
- A reader suggested a popular leveraged strategy that holds 3x Nasdaq while a stack of trend and momentum rules read as an uptrend, backed by a chart showing almost +4,000%. We re-modeled the exact rules on our engine back to 1999.
- The headline turned out to be a start-date artifact: the backtest begins in late 2009 and never sees the dot-com crash. Modeled honestly, the same idea carries a 65% drawdown (in 2022, not some distant era), and its clean 200-day version drops 93% through the dot-com bust.
- Improvement
Accessibility and SEO refinements
- Filter chips on the strategies, signals, and leaderboard pages now announce their selected state to screen readers, the onboarding weight sliders and remove/add controls have proper labels, and several content pages no longer nest a second main landmark.
- Added a canonical URL to the refund page and the BestFolio YouTube channel to the site's structured data.
- Data
Corrected the SQQQ UCITS mapping and a strategy type label
- In EU and UCITS mode, SQQQ now maps to the WisdomTree NASDAQ 100 3x Daily Short (QQQS, ISIN IE00BLRPRJ20), a true -3x Nasdaq inverse, instead of a -1x S&P 500 fund. This corrects UCITS trade lists for strategies that short the Nasdaq, such as Buy the Dip.
- Golden Ratio is now correctly labeled a Fixed allocation strategy rather than Tactical, so it shows under the Fixed filter and respects the hide-fixed account preference.
- Fix
Aligned backtest cost and account deletion wording with actual behavior
- The research page transaction-cost note now matches the rest of the site: backtests model a 10 basis point one-way cost on turnover, scaled up to 3x when recent volatility is high, and do not model taxes, fund expenses, or market impact.
- The account deletion notice now states that message and delivery records (recipient, subject, and content) are deleted, which matches what happens. Feedback and billing records are still retained for legal and accounting reasons.
- Improvement
Rejection log now covers four more ideas we tested and passed on
- The public rejection log used to hold one entry. It now documents four more strategies we backtested in the last two months and chose not to ship: managed futures as a defensive leg, a credit-strength market-timing sensor, a leveraged-ETF backtest marketed at 20% that is really 13% once the leverage is costed honestly, and gold as a risk-off leg.
- Each entry shows the rules, our numbers, and the specific reason it did not beat what we already run. It is the human-readable side of the Robustness score, which counts every idea we test, shipped or not.
- Improvement
Robustness scores now count our unreleased research strategies
- The Robustness score's selection-bias correction now counts every strategy variant we have ever backtested and still track, including research strategies that never made it to the site. N rises from 150 to 202, the luck benchmark every Sharpe has to clear rises with it, and every score moves down a little.
- Expect a handful of borderline strategies to pick up the amber fragile flag. Nothing about the strategies changed; the bar for calling a Sharpe real is higher and more honest.
- Improvement
Methodology page now explains the Robustness score
- A new Section 11 documents how the Robustness score is computed: the Deflated Sharpe Ratio of Bailey and Lopez de Prado (2014), which corrects each strategy's Sharpe for track-record length, fat tails, and the number of strategy variants we have tested (including reference rows and research strategies we never released), with scores below 0.90 flagged as fragile.
- It also explains why the score can drift down as the catalog grows, why it does not change with the leaderboard period filter, and why the leaderboard, strategy pages, and the Performance comparison table always show the same number.
- Fix
Signal chart preset ranges now span their full window
- Choosing 1Y (or any preset) on the signal driver chart now shows that actual period. A strategy with a single rebalance and a monitoring tail in the past year no longer compresses the 1Y view down to a two-month axis that looks like a full year.
- Axis labels are unambiguous: short windows label ticks by day, longer ones use a month plus apostrophe year (Jun '26), so a year no longer reads like a day of the month.
- Fix
Real daily max drawdown for portfolios with fixed ETF holdings
- Portfolios holding a fixed ETF sleeve were backtested on month-end points only, so Max Drawdown (daily) read identical to Max Drawdown (monthly) and understated the real intra-month decline.
- Fixed ETF holdings now keep their full daily history: the daily drawdown row, the drawdown chart, and the growth curve are genuinely daily on these portfolios. Expect a deeper daily drawdown figure, and small shifts in other metrics now computed from daily data.
- Portfolios made only of strategy sleeves already ran on daily data and are unchanged.
- Security
Analytics consent and account deletion protections are stronger
- Analytics now remains off unless you consent, stops immediately when consent is withdrawn, and resets when you sign out or switch accounts.
- Account deletion now removes additional operational records and blocks deleted account identifiers from being reused in internal measurement.
- Improvement
Signal chart continues past the last rebalance
- The signal driver chart used to stop at the last rebalance, which on a trigger-only strategy could be months ago. It now continues with a dashed line showing the values the strategy has computed daily since, so you can watch how close it is to its next move.
- The dashed tail is monitoring only: a marker labels the last rebalance, nothing after it is a trade, and a future-dated month-end preview is never drawn as if it already happened.
- Improvement
Separate email controls and clearer account-data descriptions
- Settings now has a separate control for onboarding tips. Marketing and onboarding unsubscribe links each stop only the matching stream, while signal and account emails are unaffected.
- The data-export and account-deletion descriptions now name what is included, what operational or billing records are retained, and how to request a broader export or full erasure.
- Improvement
Route guide, pricing, and cookie controls are clearer
- Clearer route guide (educational comparison, no more personal-plan output), consistent refund and renewal wording at checkout, distinct naming for the free UCITS Finder vs Pro account-wide substitution, and a cookie banner that no longer covers buttons.
- Fix
Walk-forward portfolio edits preserve pinned fixed sleeves
- Some walk-forward portfolios reserve a constant slice for pinned fixed sleeves the optimizer never touches (a core and satellite construction). Saving one from the portfolio editor could silently drop that pin and hand the whole allocation back to the optimizer; updates now keep it, rescale the optimizer's share, and recompute the blended results right away.
- The editor shows the pinned sleeves when you edit such a portfolio, and the API validates pinned-sleeve configs on save instead of accepting settings the monthly recompute would later reject.
- Feature
Walk-forward portfolios can cap daily-rebalancing strategies
- Walk-forward optimization has a new optional Daily Strategies Cap: a ceiling on the combined weight of daily-rebalancing strategies, separate from the per-strategy max weight. Daily strategies are the most sensitive to execution speed, so many investors want their share bounded even when the optimizer loves them.
- The input appears on the Walk-Forward page and in the portfolio editor whenever your selection includes a daily strategy, and saved portfolios keep honouring the cap at every monthly re-optimization.
- Improvement
Dashboard holdings link to their strategies
- Each strategy shown in your dashboard's Current Holding, and in the rebalance preview, is now clickable and opens that strategy with the matching variant already selected.
- It is one step to go from a holding to the backtest, signal, and details behind it.
- Improvement
Daily signal alerts now say when to fill
- The pre-close preview email for daily strategies now says it plainly: if the change holds, filling before today's close tracks the backtest best, and a confirmation follows before the next open.
- The morning execute alert now recommends filling at or near the open. On fast daily strategies such as Buy the Dip, waiting until the close gives up a large part of the edge.
- Improvement
Homepage preview now shows live strategy signals
- The See It in Action preview on the homepage now shows the real current allocation for two strategies, pulled from live signals and refreshed at each month-end, instead of a fixed example.
- The date on the card reflects the month you are currently holding, so it no longer looks out of date.
- Fix
Return contribution card no longer drops renamed holdings
- On strategies whose holdings are displayed under a different share class (for example GLD shown as GLDM, or DBC as PDBC), the per-asset return contribution card silently omitted the renamed holding and its contribution total underreported. RP Gold+SCV No Filter listed only IEF and VIOV; the gold sleeve, worth about 69 percentage points, was missing.
- The card now prices every displayed holding through its full data history, so all sleeves appear with their correct contribution.
- Stored contributions are being recomputed, so a strategy page may show the corrected card with a short delay.
- Fix
Rebalance sensitivity card now matches the backtest engine
- The trade-cadence comparison simulated every trade one session later than the headline backtest. Monthly strategies barely noticed, but daily strategies were badly understated: Buy the Dip Standard showed 15.3% CAGR on the card against 22.3% in the actual backtest.
- Strategies whose holdings are displayed under a different share class (for example GLD shown as GLDM) could show collapsed cadence lines because the simulation dropped the renamed holding entirely. Un-priced weight is now held as cash, exactly like the engine treats it.
- Stored comparisons are being recomputed, so a strategy page may show the corrected card with a short delay.
- Improvement
Rebalance cadence labels now match how each strategy trades
- On daily strategies such as Buy the Dip, the rebalance sensitivity card labeled the native cadence 'Monthly (every signal)'. It now reads 'At every signal change', which is what the simulation actually does.
- The once-a-year line on daily strategies now carries a note explaining that holding a signal allocation for a full year can produce extreme results by design.
- Fix
Accuracy pass
- Accuracy pass: clearer trade-list labeling (model targets, not account holdings), corrected onboarding preview, corrected competitor comparison, updated privacy policy for the optional read-only IBKR connection, unified backtest cost disclosure.
- Fix
Current and preview signals are now distinct
- API and reports now distinguish the current actionable signal from the next-month preview; new status and preview_signal fields.
- Data
Strategy pages now flag reconstructed deep history
- Some strategies reach back further than their holdings actually traded, so the earliest years are rebuilt from monthly data. The stats table now names that period and the tickers involved instead of leaving you to guess.
- Monthly returns are exact in that reconstruction, so CAGR, Sharpe and Sortino are unaffected. Volatility, Max Drawdown (daily) and Calmar are measured from daily prices and read smoother than reality over that period.
- Improvement
Drag-to-zoom on the signal and drawdown charts
- You can now drag across the signal driver chart or a strategy's drawdown chart to zoom into any window, the same way the growth chart already works. A Reset zoom button clears it.
- The signal driver chart also gains preset ranges (1Y, 3Y, 5Y, 10Y, All), so you can jump to a recent window instead of reading the whole history at once.
- Data
More honest risk figures for our two momentum strategies
- Golden Ratio Dual Gate and Century Momentum both hold SPMO, the Invesco S&P 500 Momentum ETF. SPMO barely traded in its first two years: on 151 of the 252 sessions in 2016 it did not trade at all, so its published closing price sat unchanged for weeks at a stretch. That made both strategies look calmer in their early history than they really were.
- Those years now come from two liquid momentum ETFs instead, MTUM from 2013 to 2017 and PDP from 2007 to 2013, and SPMO's own prices are used only from 2018, once it began trading normally. Reported volatility rises, the worst drawdowns are unchanged, and long-run returns come out slightly higher.
- Fix
Strategy cards now show the allocation bar for single-asset holdings
- When a strategy was fully invested in one asset (such as GEM or VAA sitting 100% in a single ETF), its card showed an empty gap where the colored allocation bar should be.
- These cards now render a full-width bar for that holding, so you can see at a glance which asset a rotation strategy is currently in.
- Fix
Signed-in home always shows your dashboard
- Some signed-in visitors opening the site home saw the public marketing page instead of their dashboard, because a cached copy of the anonymous home page could be served to everyone regardless of sign-in.
- The home page is no longer shared-cached, so it always matches your sign-in state.
- Feature
New strategy: Golden Ratio Dual Gate (leveraged, Pro)
- A leveraged tactical strategy from u/confettofetti on r/LETFs: it holds 50% UPRO on top of a Golden-Ratio-style sleeve (momentum, small value, managed futures, gold, long treasuries) when both the S&P 500 and a TIP inflation canary are above their 200-day trend, and drops the leverage into the same sleeve otherwise. It is never in cash, and the shared sleeve keeps trading low.
- This is an aggressive, higher-drawdown strategy: on our engine (2008 to 2026) it returned about 18.9% a year with a roughly 37% maximum drawdown. Size it accordingly. Find it under Strategies.
- Feature
New variant: HAA-Simple with a momentum ETF as the risk asset
- HAA-Simple has a new variant that holds a US momentum ETF (FMTM) in place of the S&P 500 when the strategy is risk-on, and still steps aside to Treasuries or cash when the canary or trend turns down.
- In backtests the momentum sleeve raised long-run return but not risk-adjusted return, with a deeper drawdown in growth-led reversals, so it is offered as a return-seeking satellite rather than a core.
- Improvement
Clearer signal chart and drag-to-zoom on backtests
- The signal driver chart now plots against real calendar time, so on strategies that only trade on a trigger (like Buy the Dip) the gaps between points reflect the real time between rebalances instead of being evenly spaced. Faint vertical lines mark where the strategy changed regime.
- On strategy backtest charts you can now drag across the chart to zoom into any window, alongside the existing preset ranges. A Reset zoom button clears it.
- Fix
Leaderboard 30Y button now shows real 30-year data
- The 30Y period button on the Strategy Leaderboard was showing full-history numbers instead of the 30-year window (a stale default from a May change). It now loads the correct 30-year data, matching the other periods.
- Each row now has a Years column showing that strategy's actual track-record length, so on Full History a 100-year record and a 15-year one are no longer indistinguishable. A footnote explains that Max DD uses month-end prices and that the optional weekly column samples differently.
- Improvement
Strategy signals explain portfolio ticker differences
- The Signals tab now carries the same "How this allocation was produced" panel as portfolio holdings. It states that the tickers shown there are the canonical strategy signal, before your ETF preferences, leverage, UCITS setting, or rollup apply, and links to your portfolio's own explanation.
- Improvement
Signal emails link straight to your trades
- The monthly signal email's button now opens your portfolio's trade list directly, instead of the generic signals page.
- A second link, "Why these tickers?", jumps to the new allocation explanation, so a ticker that differs from the strategy page is explained where it is computed.
- Improvement
Portfolios open on an implementation summary
- The banner at the top of a portfolio now answers the monthly question directly: which portfolio this is (with its Main badge), when your next actual trades are due, whether the numbers are ready or still computing, and a one-click jump to the trade list.
- The headline date is the next rebalance with real trades to make. When a no-trade sleeve rebalance comes sooner, it is noted separately instead of headlining a date with nothing to do.
- Feature
See how your final allocation was produced
- Portfolio holdings now include an expandable "How this allocation was produced" panel naming each step between the raw strategy signals and the final tickers: leverage overlay, your ETF preferences, UCITS substitution, and small-position rollup, with the exact ticker swaps at each step.
- It also says when a step is NOT reflected in the current view, which is the usual reason the portfolio page, a strategy page, and the monthly email can show different tickers for the same strategy.
- The separate leverage-swaps, UCITS-notes, and rollup boxes merged into this panel.
- Improvement
Portfolio backtests stay visible while recomputing
- Changing the currency, period window, or benchmark used to blank the backtest section until the new result arrived. The previous chart now stays visible with a refreshing note.
- A first-time open that takes longer than a few seconds now explains that the full history is building and will be cached, and failed loads get a retry button.
- Fix
Pinned sidebar stays put when moving between pages
- A pinned sidebar no longer collapses and re-expands for a moment when you navigate between certain pages (for example Dashboard to Strategies).
- The brief flash of the guest navigation bar that signed-in users could see on the same page changes is gone too.
- Improvement
Sign-in page says where you are headed
- When a page like Portfolios or Settings sends you to sign in, the sign-in card now says what you get after signing in, instead of a generic form with no context.
- Improvement
Strategy pages now explain why a variant is the default
- Under the variant selector there is a new "Why is one variant the default?" note. The default marks the canonical base variant, or a documented risk-control pick like RVol Shifter Cash-Only; it was never a performance ranking, and now the page says so instead of hiding it in a hover tooltip.
- Improvement
Locked Pro templates in the setup wizard now show a preview
- Clicking the Aggressive or Capital Efficient template in the first-portfolio wizard used to send you straight to the pricing page, losing your place.
- You now see exactly which strategies the template holds, can jump to Pro pricing if you want it, or continue with the closest free template in one click.
- Improvement
Strategy search clears after each pick on comparison pages
- On Correlations, Performance, Signals, and Blend, picking a strategy from the search results now clears the search box and keeps it focused, so you can type the next name right away instead of re-selecting the old text.
- Fix
Factor Lens quick entry accepts one holding per line
- The quick entry box only understood comma-separated holdings; portfolios typed one per line were silently ignored and Analyze appeared to do nothing.
- It now also accepts new lines, semicolons, and weights written with a percent sign, and it tells you exactly which entries it could not read.
- Improvement
UGLD is now a selectable 2x gold ETF in your preferences
- The 2x gold sleeve in strategies like Buy the Dip defaults to UGL, which issues a K-1 tax form. Under Settings, ETF preferences you can now choose UGLD (Direxion Daily Gold Bull 2X) instead: the same 2x daily gold exposure, but a 40-Act fund that issues a regular 1099.
- Your backtests and signals do not change. Only the ticker shown for you to hold is swapped.
- Fix
Dashboard recovers when your selected portfolio was deleted
- If the portfolio you last viewed on the dashboard was deleted, the page got stuck on "Could not load data" on every reload. It now falls back to your main portfolio automatically.
- Improvement
Cached portfolio backtests load faster
- Saved portfolio results are now stored compressed, so opening a portfolio that is already computed returns noticeably faster.
- Feature
New variant: a volatility-scaled whipsaw filter on the TQQQ 200-day gate
- The TQQQ/QQQ 200MA Band strategy has a new variant that swaps the fixed trend band for one that widens when the market is calm and tightens when volatility is already high.
- In backtests it roughly quarters the number of trades versus a plain 200-day gate while holding the same drawdown, the cleanest of the whipsaw filters we tested.
- Fix
Send test now reaches every enabled webhook, not just the first
- The Send test button in Webhook delivery settings previously only posted a sample payload to your first destination, so a second webhook never received the test until you removed the first.
- It now fans out to every enabled destination, exactly like a real signal alert, and skips any you have disabled. The result tells you how many destinations were reached and names any that failed.
- Improvement
Portfolio pages load from cache instead of recomputing
- Opening a saved portfolio now serves the stored backtest result whenever the underlying data has not changed, instead of recomputing for several seconds on every visit.
- The notification badge and comparison charts also respond faster thanks to a shared server-side cache.
- Improvement
Deflated Sharpe and annual turnover in the Performance comparison
- The Metrics Comparison table on the Performance page now shows each strategy's Deflated Sharpe Ratio (the same robustness number as the leaderboard) and its annual turnover.
- Portfolios and benchmarks do not have these numbers, so their cells show a dash.
- Feature
Performance page: rolling CAGR chart and portfolio period returns
- A new Rolling CAGR chart shows the trailing 1, 3, 5 or 10-year annualized return at every point in time, so you can see whether a strategy earns its headline CAGR consistently or rode one lucky stretch.
- Your saved portfolios now appear in the Period Returns table alongside strategies and benchmarks.
- Win Rate, SWR and PWR are now filled in for strategies in the Metrics Comparison table; they previously showed only for portfolios.
- Fix
Factor Lens: quicker holding entry
- Clicking a ticker or weight box in the Factor Lens builder now selects what is already there, so you can type over it in one click instead of several.
- The weight box no longer shows spinner arrows; type the percentage directly, and a comma or a dot both work as the decimal.
- Improvement
Reach the correlation matrix from the strategy catalog
- The Strategies page now links straight to the correlation view, so you can see how any set of strategies has moved together, including through 2008, March 2020 and 2022, before combining them into a defensive blend.
- Data
New strategy: TQQQ/TLT Dual-Gate
- A UK/UCITS-oriented sibling of the TQQQ/QQQ 200MA Band, requested by u/HBCTIA on r/TQQQ. It only re-leverages when both the S&P 500 and the Nasdaq-100 confirm the trend (SPY more than 4% above its 200-day SMA and QQQ not more than 3% below its own), holds 60% TQQQ / 40% long Treasuries when risk-on, and flees to 100% Treasuries when either index breaks down.
- The UCITS view maps it to QQQ3 and DTLA/IBTL for LSE investors. Backtested to 1985 it has cleared roughly 20% CAGR, but it is a high-drawdown leveraged satellite (over 50% max drawdown), not a core holding.
- Fix
Portfolio sleeve breakdown shows true daily drawdowns
- In a portfolio's Sleeve Breakdown, each strategy sleeve's Max Drawdown now reflects its own daily history and matches the figure on that strategy's own page, even when the portfolio also holds a fixed monthly buy-and-hold position.
- Previously, adding a holding that only has monthly data (for example KMLM) quietly pulled every sleeve onto a month-end basis, which understated the real drawdowns.
- Improvement
New benchmark: TQQQ buy-and-hold
- You can now add a raw TQQQ (3x Nasdaq) buy-and-hold line to the Performance page comparison, alongside the S&P 500, QQQ, 60/40 and the other benchmarks, to see how a plain leveraged buy-and-hold stacks up against the tactical strategies.
- Improvement
Three more Staff Picks and a daily-cadence warning
- The Staff Picks shelf grows from 6 to 9 strategies: Momentum-Correlation Triplet, Buy the Dip, and VAA join the curated list.
- Strategies that rebalance daily now carry an orange Daily badge in the catalog and on their page, because a signal that can change any trading day takes real attention to follow by hand.
- Data
UCITS finder now shows Euronext listings
- 74 of the UCITS equivalents now carry a verified Euronext venue symbol (Amsterdam, Paris or Milan) alongside the London listing, so investors on DEGIRO and other Euronext-first brokers can find the exact tradable ticker.
- Where a fund has no Euronext listing under the same symbol, the field stays empty rather than guessing. The ISIN remains the universal identifier.
- Improvement
Italian and German tax estimates are no longer marked provisional
- Now that the per-instrument classification review is complete, the Italian and German tax panels on strategy pages drop the provisional label. They stay clearly marked as estimates, not tax advice.
- The German breakdown now shows an ETC / ETN line for gold and leveraged products, which sit outside the German fund tax rules and so carry no partial exemption or advance levy.
- Improvement
The IBKR holdings view is now information only
- The Settings IBKR drift table now shows your current weight, the model target, and the difference for each ticker, without buy or sell labels. What you do with that information stays entirely your decision.
- The beta rebalance order list and basket CSV export have been removed. BestFolio publishes model strategies and shows how your account differs from the model you selected; it does not provide personalized investment advice.
- Connecting IBKR now asks you to confirm you understand this before saving your credentials, and the FAQ now spells out exactly what the connection does and does not do.
- Data
Corrected three UCITS equivalents
- AGG and BND now show the correct fund behind ticker IUAG: the iShares US Aggregate Bond UCITS ETF (IE00B44CGS96). The entry previously carried the Global Aggregate fund's name and ISIN.
- HYG, JNK and UJB now point to IHYU, the USD high yield fund. The old ticker IHYG is the EUR high yield fund.
- USMV now maps to MVEA (iShares Edge MSCI USA Minimum Volatility Advanced); the previously listed IUMV ticker is no longer live.
- Data
Italian and German tax estimates now classify the exact UCITS instrument you would hold
- The per-strategy tax profiles (API endpoints /tax/italy and /tax/germany) previously bucketed each position by its US backtest ticker. They now classify the European UCITS replacement you would actually buy, verified instrument by instrument against official Italian and German tax rules.
- Biggest corrections: leveraged Treasury exposure now gets Italy's reduced 12.5% government-bond rate (it is held as a plain Treasury fund in Europe), leveraged S&P 500 and Nasdaq exposure held via UCITS funds now gets Germany's 30% equity exemption, bond and real-estate funds no longer wrongly receive that exemption, and gold or 3x products (legally notes, not funds) are no longer charged the German advance levy.
- Every response still returns the full per-instrument classification for audit. These are informational estimates, not tax advice.
- Fix
Return contribution card restored for some portfolios
- Portfolios containing certain older strategies (Permanent Portfolio, Robust AA, Trinity and a few others) showed an empty per-asset return contribution card. A date formatting quirk in those strategies' stored signals broke the calculation; the card now computes for all portfolios.
- Fix
More reliable handling of rapid request bursts
- A rare timing collision in the rate-limiter's background cleanup could return a server error when a client (for example an automated script) sent many requests at once. The cleanup now runs on its own, so it can no longer interfere with a request.
- Improvement
Holdings vs target now loads on its own and remembers the day's reading
- The IBKR "Holdings vs target" check on the Settings page now loads automatically for your Main portfolio and caches the reading for the day, so you no longer click "Check holdings" every time you open the page. Use "Check holdings" whenever you want a fresh pull from IBKR.
- Fix
The drift panel now points to where you enter holdings
- When a portfolio had no recorded holdings, the Drift vs target panel told you to add a dollar amount "in the editor", but holdings are actually entered on the Live page. The message now links straight to the Live page so the field is easy to find.
- Fix
Settings tools now default to your Main portfolio
- The portfolio picker in Settings (used for the IBKR deviation and holdings-vs-target tools) defaulted to your first portfolio by id; it now defaults to your Main portfolio, the one you actually implement.
- Improvement
GOVZ is now a selectable alternative to ZROZ
- If a strategy holds ZROZ (long-duration zero-coupon Treasuries), you can now choose GOVZ (iShares 25+ Year Treasury STRIPS) as your preferred ETF for it, alongside the existing EDV option, and your signals will hand you GOVZ in its place.
- Fix
The dashboard's Show leveraged filter now hides every leveraged variant
- The dashboard Strategy Performance table has a Show leveraged toggle. Some leveraged variants (SmartStack, SmartLeverage, and leveraged versions of otherwise-unleveraged strategies like HAA) slipped past it and showed even with the box unchecked. The filter now classifies each variant individually, so unchecking Show leveraged hides all of them.
- Fix
More portfolio editor boxes select on a single click
- Clicking the portfolio name, the walk-forward name, or a sleeve's ticker box now selects the whole value on the first click, so you can type a new value straight away instead of clicking it several times.
- Fix
Clearer errors when a page cannot load its data
- Walk-forward, the Strategy-Asset Matrix, and the ETF preferences and IBKR sections of Settings now show a clear message with a Retry button when a data request fails, instead of looking empty or stuck on Loading.
- Comparing portfolios in one currency and then applying a custom date window now always refetches in the currency you are viewing.
- Fix
Walk-forward editor number boxes are easier to edit
- The Window, Max Weight and Rebalance boxes in the walk-forward portfolio editor now select their value on a single click, so you can type a new number straight away instead of clicking several times.
- They no longer show the tiny up and down arrows that changed the value one step per click; just type the number.
- Improvement
Search strategies by ticker, and see each strategy's full asset universe
- You can now search the strategy catalog by ticker: type something like TLT or QQQ and every strategy that can hold it shows up.
- Each strategy page now lists its complete asset universe, taken straight from the strategy's own rules, so instruments that were sometimes missing before are all shown.
- Fix
A per-strategy weight cap now always takes effect
- When you set a maximum weight per strategy in a walk-forward portfolio, the app now checks your strategy count can actually honour it. With too few strategies to stay under the cap and still add up to 100% (for example a 30% cap across three strategies), the optimizer used to quietly ignore the cap and could show one strategy well above it. Saving now explains the limit and how to resolve it, so the cap you set is the cap you get.
- Improvement
You can now build up to 25 portfolios
- The per-account portfolio limit is now 25, up from 10, so you have more room to build and compare blends.
- Fix
Portfolio pages no longer crash when viewing trades
- Opening some portfolios could show an application error instead of the Trade List; the page now loads correctly for every portfolio, whatever its rebalance schedule.
- Fix
Portfolio weight boxes are easier to edit
- Clicking a sleeve's weight box in the portfolio editor now selects the whole value on the first click, so you can type a new weight straight away instead of clicking it several times.
- The weight box no longer shows the tiny up and down arrows that changed the value by only 0.1% per click; just type the number (a comma or a dot both work).
- Improvement
Strategy and portfolio pages load faster
- The strategy and portfolio pages now defer their heaviest panels (the strategy Signals, Allocations and Monte Carlo tabs, and the portfolio walk-forward editor, Monte Carlo and leverage cards) until you open them, so both pages come up faster, especially on mobile.
- Improvement
Charts describe themselves to screen readers
- The NAV growth chart and the strategy drawdown chart now provide a spoken text summary (each line's start, end, high and low) to screen readers, matching the accessible labels already on the other charts.
- Improvement
Favorite a strategy from its detail page
- The favorite star now sits next to the title on each strategy page, so you can save a strategy while you are reading it instead of returning to the leaderboard.
- Favorites stay in sync across the strategy list, the strategy page and your Favorites page.
- Fix
Strategy counts now show the current total everywhere
- The published strategy count shown across the site (landing, guide, comparison, feature pages and free tools) now always matches the live catalog, instead of a snapshot that could lag behind newly released strategies.
- Improvement
Portfolio performance now matches the strategy pages
- Portfolio pages now show the same full set of statistics as strategy pages, including monthly and daily max drawdown, average leverage, exposure, EAR, turnover and trades per year, with a benchmark comparison column you can switch.
- Benchmark lines on portfolio charts are now drawn daily instead of a coarse month-by-month step, so they line up with the portfolio's own daily line.
- The drawdown chart now has a 1Y / 3Y / 5Y / 10Y / All date-range selector, on both strategy and portfolio pages.
- Improvement
EU mode now shows UCITS tickers everywhere
- With EU / UCITS mode on, UCITS tickers now show across the whole app, the dashboard, signals, strategy pages, live tracking and portfolio allocations, plus your monthly signal and tranche emails, not just a couple of screens.
- Also added Live Tracking to the sidebar and tidied up navigation and strategy counts across the site.
- Feature
See the execution flow on SmartLeverage strategy pages
- SmartStack and SmartLeverage strategy pages now show an execution-flow diagram: a Sankey that traces the base signal on the left through the leverage swaps (QQQ to QLD, VNQ to URE) to the execution-ready tickers you actually trade on the right.
- Feature
Send signal alerts to multiple webhook destinations
- You can now add several outbound webhooks in Settings (for example a personal Discord plus a shared server), each with a label and an on/off switch. Every signal alert fans out to all the enabled ones.
- Fix
Signal emails now use your preferred ETFs
- If you set ETF preferences (for example a specific S&P 500 or bond ETF), the signal email now shows those tickers in the what-to-hold view instead of the defaults, matching the app and the trade list.
- Fix
Walk-Forward now shows the strategy name for every sleeve
- Some strategies (like Century Momentum) have sleeves named just Standard or Cash Defensive, which were hard to spot in the Walk-Forward universe list. The list now prefixes the strategy name, so every option is identifiable.
- Fix
Portfolio roll-up, trade list, and processed allocation now show the leveraged ETFs you trade
- For a portfolio with a SmartStack or SmartLeverage sleeve, the portfolio roll-up, execution roll-up, processed allocation, and trade list showed the underlying ETFs (like QQQ and VNQ) while the signal email traded the leveraged versions (like QLD and URE). They now all show the execution-ready tickers, so the trade list matches what to actually buy.
- This extends the SmartStack fix from the strategy pages to every portfolio-level surface and the API.
- Improvement
Growth of $100 chart now shows a strategy's full history
- For strategies with decades of data, the Growth of $100 chart now plots the entire backtest back to its inception instead of starting at 1980. Century Momentum, for example, now runs all the way back to 1928.
- The S&P 500 and 60/40 benchmark overlays extend back to match, so the comparison covers the same period as the strategy rather than being cut short at 1980.
- Improvement
The monthly TAA scoreboard now leads with the model portfolios and shows 1-year returns
- The first-of-the-month scoreboard post now opens with the three model portfolios (conservative, moderate, aggressive), the diversified blends most people should actually hold, then lists the full strategy board.
- Every table now shows the month, year-to-date and trailing 1-year return side by side, with a short read on how the month fits the longer picture.
June 2026
- Feature
Connect a read-only IBKR account (beta)
- Pro users can link a read-only Interactive Brokers Flex token in Settings, then compare live holdings against any portfolio target (your ETF preferences included).
- Read-only by design: a Flex token can only fetch statements. BestFolio never places trades or moves cash, and stores the token encrypted, never your positions.
- Fix
SmartStack strategy pages now show the leveraged ETFs you actually trade
- On SmartStack variants, the Current Allocation, Next Month Preview, and signal export showed the underlying ETFs (like QQQ and VNQ) while the signal email and backtest used the leveraged versions (like QLD and URE). Every surface now shows the same execution-ready tickers, so what you see is what you hold.
- Momentum score tables still list the underlying assets, where they belong.
- Fix
Fixed two starter portfolio templates in onboarding
- The Aggressive and Capital Efficient starter templates referenced a strategy that had been renamed, so one sleeve did not load when you picked them during onboarding.
- Both now point at the current Return Stacked Quartet strategy.
- Improvement
Dual Momentum Systems pages now link to the author's new site
- Each Dual Momentum Systems strategy page links to its updated version on Randy Harris's newly launched site, going straight to that strategy where one exists.
- Where a strategy was retired and replaced, the link points to its successor, so the Bamboo page now links to Permanent Portfolio DMS.
- Improvement
A cleaner, more consistent sidebar
- The navigation is now grouped the same way everywhere: Build and Tools for portfolio work, Analyze for the analytics, with the Leaderboard kept front and center. This started as an opt-in beta and is now the default for everyone.
- Improvement
Strategy Compare is now part of Performance
- Strategy Compare only let you pick strategies and then sent you to the Performance page, so we merged it in. Pick and chart strategies, portfolios, and benchmarks all in one place on Performance, the old Strategy Compare links still take you there.
- Improvement
Active Returns vs the S&P 500 now shows on your portfolios
- Open any portfolio and you now see the Active Returns section (excess return, up and down capture, and rolling and annual active return vs the S&P 500), the same analysis the strategy pages have. It no longer requires adding the S&P 500 as a benchmark first.
- Improvement
Portfolio Compare charts now match the Performance page
- The growth and drawdown charts on Portfolio Compare now use the same colours and the same rounded drawdown axis as the Performance page, so the same portfolio looks the same wherever you view it.
- Improvement
Clearer descriptions so you can tell the strategy pages apart
- Strategies, Leaderboard, Strategy Compare, Portfolio Compare, and Performance now each open with a one-line description of what the page does and links to the related pages, so it is easier to tell them apart and land on the right one.
- Improvement
Clearer strategy badges: Risk-On and Risk-Off signals
- The live signal badge on each strategy now reads Risk-On, Mixed, or Risk-Off, so it no longer shares the word Aggressive with the risk-profile badge.
- Risk profile (Conservative, Moderate, Aggressive) now has its own blue shades, kept separate from the green, amber, and red of the live signal.
- Hover any badge on a strategy card for a short explanation, and the guide legend now groups the badges by what they mean.
- Fix
Fixed a rendering glitch on blog articles
- Some blog posts could flicker or briefly fail to become interactive because the article was processed twice, once on the server and once in the browser, in slightly different ways. The post is now prepared once on the server so the page renders consistently.
- Improvement
Easier to find the AllocateSmartly / Portfolio Visualizer guide
- Linked the migration guide from the AllocateSmartly comparison page and the empty Portfolios screen, so it shows up right when you are deciding whether to switch or building your first portfolio.
- Improvement
New guide for switching from AllocateSmartly or Portfolio Visualizer
- Maps the models you already run (the Keller suite, dual momentum, Faber rotation, and the classic lazy portfolios) to the strategies in the library, so you can find them without rebuilding.
- Shows how to recreate any portfolio from strategy sleeves, Fixed Ticker sleeves, and Walk-Forward, and sets the expectation: a vetted library with live monthly signals, not a blank-canvas backtester.
- Improvement
Faster start when you build your first portfolio
- The new-portfolio wizard now opens straight on the template picker, so you start choosing a portfolio right away instead of clicking past a welcome screen first.
- Data
Carlson's Orthogonal Alpha (BTAL/QLD) now backtests to 2002
- We extended BTAL's history with a deep-history series so the strategy's chart now spans the dot-com aftermath and the 2008 crash, not just the calmer post-2013 window. Its honest worst drawdown over the longer history is closer to -38% than the -14% the recent window showed.
- Pre-2011 BTAL is a simulated reconstruction (real from 2011 onward), so the deep history is indicative rather than realized, and it does not include the 2000-2001 dot-com peak.
- Feature
Five new momentum strategies
- Added Century Momentum (top-decile US momentum with a 10-month trend filter, backtested to 1928), Momentum-Correlation Triplet, and Split-Lookback Momentum Pair, three BestFolio Research originals.
- Added Pragmatic Asset Allocation (Quantpedia) and Multi-Asset Momentum (Zambrano and Rizzolo), two published multi-asset momentum models.
- All five include full backtests with documented proxy chains and are available to Pro subscribers.
- Fix
Return Stacked Quartet is now easy to find in the builders
- The Return Stacked Quartet was listed as 'Quartet 20-20-30-30' in the walk-forward and blend pickers, so searching for it by name turned up nothing. It now carries its proper name.
- The picker search also matches a strategy's name, not just the specific variant name, so any strategy is findable by what it's actually called.
- Fix
Corrected the up and down capture figures in Active Returns
- The up and down capture ratios in the new Active Returns section were averaged in a way that understated them. They now use the standard month-by-month average and show sensible values.
- Feature
Active Returns: see performance relative to a benchmark
- Strategy and portfolio backtests now include an Active Returns section measured against the S&P 500: a monthly excess-return chart (colored by whether the benchmark was up or down that month), active return by calendar year, and a rolling 36-month active return with tracking error.
- It also reports tracking error, information ratio, up and down capture, and the share of months that beat the benchmark, so you can tell whether the edge came in rising or falling markets.
- Fix
Fixed a rare error that could stop backtest results from loading
- Some backtests could fail to load when a statistic came out as a non-finite value (for example a ratio computed over a very short or perfectly flat history). The response now returns that value as blank instead of failing the whole request.
- Improvement
Filter the strategies catalog by number of holdings
- The Strategies page has a new Holdings filter, so you can narrow the catalog to simple, low-holding blends: show only strategies that currently hold 2, 3, or 5 positions or fewer.
- The count reflects each strategy's current allocation, and the filter works across the whole catalog, including Pro strategies you have not subscribed to.
- Feature
Catastrophe-brake versions of four leveraged portfolios
- We added '+ Catastrophe Brake' versions of four leveraged portfolios: SSO/ZROZ/GLD, UPRO/ZROZ/GLD, UPRO/ZROZ/GLD/KMLM, and Regime Detector SmartLeverage.
- The brake is the classic 10-month trend rule with one tweak: when the S&P 500 closes below its 10-month average three months in a row, the portfolio moves to cash, and comes back the first month it closes back above. It only trips in long, drawn-out bear markets, not normal dips, and sits in cash about one month in eight.
- Across the full history it cut each portfolio's worst drawdown by 14 to 27 points and usually nudged the long-run return up too. It is late by design (you still take the first leg of a fast crash) and cannot make a 3x portfolio safe.
- Improvement
The portfolio editor now closes the moment you save
- Saving a portfolio used to hold the editor open for a beat while everything refreshed, which could feel unresponsive if you clicked again. The editor now closes as soon as the save goes through, and the page updates in the background.
- Fix
Corrected the GPMv strategy credit
- GPMv is now correctly credited as Randy Harris's variant of Generalized Protective Momentum (GPM), the strategy created by Wouter Keller and Jan Willem Keuning. The earlier attribution pointed only to a blog handle and left out the original authors.
- Improvement
Walk-forward results now show the Ulcer Performance Index (UPI)
- The walk-forward results table and single-criterion view now include a UPI column alongside Sharpe, Sortino, and Calmar. If you optimize for Max UPI, you can now see the value you optimized for instead of having to infer it.
- Improvement
Clearer warnings on the Kelly signal strategies
- The Jason Kelly signal strategies (3%, 6%, and 9% Signal) now carry an education-only notice on their detail page and a marker on the catalog card, making clear they are teaching examples we discourage using.
- The leveraged versions (6% and 9% Signal) are now labelled aggressive risk instead of moderate, to match what holding 2x and 3x ETFs actually involves.
- Fix
Signal History header stays put when you scroll
- On a strategy's Signals tab, the table column headers now stay fixed and fully visible as you scroll through the full signal history, instead of letting the rows overlap them.
- Feature
Two new tactical strategies from Thomas Carlson
- Adaptive 60/40 holds 60% in stocks and rotates the defensive 40% each month into the strongest of long Treasuries, gold, or commodities, a regime-aware update to the classic balanced portfolio.
- Orthogonal Alpha is a higher-risk core-satellite that pairs 2x Nasdaq with the BTAL anti-beta ETF and uses BTAL's own momentum as an early risk-off signal.
- Improvement
Find your route leans a little more tactical
- The guide now starts a small tactical sleeve sooner instead of flagging it for later, and makes the honest case that running tactical rules is barely more work than buy and hold, since you place trades either way.
- Improvement
Rebuilt the Features page around outcomes
- The Features page now leads with the four things a tactical investor should demand: drawdown control, honest out-of-sample backtests, a clear monthly action, and fit for your broker. The same capabilities, organized around what they do for you rather than a long list of tools.
- Improvement
A clearer sign-up button
- The sign-up button now reads Create free account consistently across the site, in place of several different labels.
- Improvement
Cleaner top navigation
- The marketing navigation is decluttered. The most-used pages (Strategies, Leaderboard, Blog, Pricing) stay one click away, the tools and research pages are grouped into labelled menus with icons, and a Find your route button points to the interactive guide.
- Improvement
Find your route now returns a personalized plan
- Rebuilt the Find your route guide into a personalized plan. It now weighs your age, pot size, whether you own or rent, how settled you are, and what you can save, then returns a blended plan with a house fund, broad index core, and optional tactical sleeve, plus an interactive house-budget and monthly-savings calculator.
- Fix
Leveraged portfolios show their levered holdings on the portfolio page
- If you apply leverage to a portfolio, the Hold and Preview panels on the portfolio page now show your levered holdings and the leverage swaps, matching the dashboard, with a toggle to switch back to the unlevered baseline.
- The trade list now targets those levered holdings too, so its buys and sells line up with what you actually hold.
- Improvement
Find your route now factors in your age and pot size
- The route wizard now asks your age and how big your pot is. A young investor with a small pot is pointed at a simple broad-index start, and as age or pot size grow it leans toward a rules-based tactical route.
- Fix
Fixed the leaderboard model portfolios panel getting stuck loading
- Turning on Show model portfolios from the library could leave the panel spinning on Loading indefinitely. It now loads the portfolios instantly from their cached metrics and ranks them by Sharpe.
- Feature
New: Find your route, a guided way through the money map
- A short questionnaire at the new Find your route page asks about your foundations, time horizon, and temperament, then points you to one primary route from the Where to Begin map, with its honest catch and a next step.
- Improvement
The Where to Begin guide speaks your currency
- The guide headline now reads your next euro, pound, or dollar to match the region you are visiting from, instead of always saying dollar.
- Improvement
A clearer way to publish a portfolio to the library
- The Publish to Library action on the portfolios page now opens a dialog that explains what the public library is, how the review works, and what stays private. It shows your latest submission status and lets you add an optional note for the reviewer.
- Feature
See model portfolios on the leaderboard
- The Show model portfolios switch now ranks our model portfolios inline with the individual strategies, so you can see exactly where each blend lands on any metric and period. Blend rows are italic and marked, link to the library, and the tracked star portfolios are published monthly in the scoreboard. Their numbers come from the same daily out-of-sample tracking as the strategies.
- Feature
Start a walk-forward portfolio from a pre-built template
- Building a walk-forward portfolio now offers one-click starter templates: pick a backtest-validated set of strategies and selection rules, then tweak anything before you create it.
- Improvement
A clearer, redesigned Where to Begin guide
- The Where to Begin map has a cleaner layout: a proper branching diagram from the foundations into the five routes, a step-by-step how to read it panel, and route cards with icons.
- Same honest, plain-language content, just easier to scan in light and dark mode.
- Improvement
Portfolio Compare now follows your display currency
- Switch to EUR and the Portfolio Compare page shows EUR-converted metrics, matching the leaderboard and strategy compare.
- Feature
Track your holdings without a broker, manual entry on Live
- Live Tracking now has a Manual mode: enter your holdings by hand (ticker and value) and see them next to your target allocation with per-ticker drift. No broker connection needed, and it is saved on your device.
- Feature
See how much a strategy depends on its rebalance date
- The rebalance sensitivity card can now run the once-a-year rebalance in each of the 12 calendar months and show the spread in return and drawdown. A wide spread means a single backtest is leaning on the luck of the calendar rather than a real edge.
- Improvement
Easier number editing in the portfolio and walk-forward builders
- Number fields in the portfolio and walk-forward editors now select their contents when you click into them, so a single click lets you type a new value instead of clearing the box first.
- The portfolio weight field now accepts decimals such as 12.5% and no longer drops a typed leading zero or jumps the cursor while you type.
- Feature
Pause your subscription instead of cancelling
- From Settings, pause for up to three months instead of cancelling. Billing and Pro access pause together, your founder rate stays held, and the plan resumes automatically at the end.
- Improvement
ETF preferences now apply across every portfolio and show on portfolio pages
- ETF preferences are now a single account-wide setting in Settings, applied to every portfolio you hold. They previously attached to one portfolio only, so overrides looked like they vanished on the others.
- Portfolio pages now have a Your ETFs / Default ETFs toggle, so you can see your preferred tickers (for example VOO instead of SPY) in the holding and preview panels, not just on Live Tracking. Backtest figures still use the strategies' default tickers.
- Fix
Corrected the MATE ETF name and its European alternative
- MATE was mislabeled as a Return Stacked diversified-alternatives blend. It is the Man Active Trend Enhanced ETF (Man Group / AHL): 100% US equity plus 100% trend-following, the same structure as RSST. The strategy listings and the UCITS alternative page now reflect that.
- Fix
Fixed an error loading some walk-forward portfolio charts
- Opening the performance chart for certain walk-forward portfolios could fail with an error. It now loads as expected.
- Feature
New leverage detail: max equity vs total exposure
- Strategy stats now show peak total exposure next to peak equity exposure, so a strategy that only levers a small equity sleeve is not mistaken for one that levers the whole book. A 3x position held on a third of the portfolio reads near 2x total but about 1x equity, very different real risk from a strategy that is 3x across the board.
- Both figures are leverage-adjusted, so a 3x ETF held at a third weight counts as one unit of exposure. The numbers fill in as each strategy backtest is recomputed.
- Feature
New strategy: Vol-Target 2x QQQ (trend-gated)
- Vol-Target 2x QQQ holds 2x Nasdaq (QLD) only while the Nasdaq is above its 200-day average, sized to a target volatility that is reassessed monthly, and sits in T-bills otherwise. It comes in three risk tiers: Conservative (10% vol), Balanced (15%), and Aggressive (20%). The trend gate is built to sidestep the catastrophic drawdowns of leveraged buy-and-hold.
- Feature
New HAA variant: HAA-Simple Leveraged 3x
- HAA-Simple now has a 3x leveraged variant that holds UPRO (3x S&P 500) when both the TIP canary and the S&P's own momentum are positive, and de-risks to unleveraged Treasuries or T-bills otherwise. It gates on the unlevered S&P, not the leveraged fund, which historically captured the sharpest rebounds. Higher risk than the 2x version, available on Pro.
- Improvement
Clearer canary score label on signal charts
- The canary score chart now explains that each value is the 13612 momentum: the 1, 3, 6, and 12-month returns blended into one figure (a sum for HAA, weighted 12/4/2/1 for BAA/DAA/KDA), not an average of the four. This makes the number reconcile with a hand calculation.
- Security
Stricter content-security-policy measured in report-only mode
- We started measuring a tighter content-security-policy for scripts using a report-only header. It does not block anything and has no visible effect, it only records what a stricter policy would flag before any future enforcement.
- Feature
HAA Leveraged 3x variant
- HAA now has a 3x leveraged variant alongside the 2x. It scores momentum on the base assets and holds the 3x ETF where one exists (SPY to UPRO, QQQ to TQQQ, TLT to TMF), leaving the rest and the defensive sleeve unleveraged.
- Backtests show higher growth than the 2x with a deeper drawdown. The protective canary keeps the worst drawdown far below a 3x buy and hold, but it stays a high-risk satellite, not a core holding.
- Feature
Jason Kelly Signal strategies available in blends
- The Kelly 3Sig, 6Sig, and 9Sig value-averaging strategies can now be added as components in the blend and walk-forward builders.
- They are educational, high-drawdown models (9Sig can draw down around 94%), so they are offered only inside blends with that warning, not as standalone recommended strategies.
- Feature
Webhook alert tests show delivery status
- Webhook signal alerts now send a clearer JSON payload with strategy names, slugs, signal dates, old and new allocations, and a short summary.
- Settings can send a sample webhook alert and show the HTTP status returned by your ntfy, Pushover, Gotify, Zapier, or custom endpoint.
- Improvement
Clearer API setup and alert delivery options
- API setup now shows portfolio ids in the app and the docs explain how to use an API key or MCP client.
- Alerts and Settings now make email and webhook delivery easier to find for users who do not use Telegram.
- Large leaderboard and chart-heavy analysis pages now load more smoothly.
- Improvement
More consistent metrics and mobile controls
- Comparison, dashboard, and performance views now use the same metric names, order, and formatting, so key figures line up across pages.
- Bottom screen widgets now coordinate their positions on mobile, and walk-forward and risk chart controls wrap more cleanly on small screens.
- Improvement
Clearer action feedback and error handling across the app
- Saving, running, deleting, and applying changes now show progress and confirm success or failure, so an action no longer looks like it did nothing while it is still working.
- Pages that fail to load now show a clear error with a retry button instead of looking empty, and the dashboard no longer asks an existing portfolio owner to start over after a temporary load failure.
- There is now a Build and Edit portfolio shortcut on the dashboard, and the strategy variant Recommended badge is renamed Default since it marks the base variant, not a performance ranking.
- Feature
New leveraged trend preset in the portfolio library
- Small Account Leveraged Trend is a new walk-forward preset in the library. It blends two leveraged trend models, TQQQ Trend and Low Initiative LETF V2, letting the optimizer reweight them monthly for the best downside-adjusted return while capping either sleeve at 65%. Both models trade only a handful of ETFs, so the blend stays practical to run with a smaller account.
- Improvement
Faster strategy picker in the portfolio builder
- The searchable strategy picker in the portfolio builder now renders only the rows on screen, so the dropdown opens and scrolls smoothly even with the full catalog of 100+ strategy variants loaded.
- Fix
Unemployment-based strategies backtest point-in-time
- The strategies that read the US unemployment rate (Lethargic Asset Allocation, Robust Asset Allocation, and the Schwoerer unemployment timer) now backtest on the figure as it was first published each month, not the later-revised number. This removes a small look-ahead bias, so their historical signals reflect what a live investor could actually have seen.
- Improvement
Easier to blend strategies into a portfolio
- The strategies page now has a Mix strategies entry point that takes you straight into the portfolio builder, so combining several strategies into one backtested blend is no longer buried in the navigation.
- Feature
Leveraged LETF baseline portfolios added
- Three popular r/LETFs static portfolios are now in the catalog as informational baselines to compare against the tactical strategies: SSO/ZROZ/GLD (50/25/25), UPRO/ZROZ/GLD (50/25/25), and UPRO/ZROZ/GLD/KMLM (40/20/20/20). The leveraged sleeves use BestFolio's calibrated synthetic-leverage cost model, so the backtests land a touch below testfol.io (which runs leverage too cheap). They are static, quarterly-rebalanced baselines, not tactical strategies.
- Improvement
German tax estimate now includes the Vorabpauschale
- The estimated German tax on each strategy page now also models the Vorabpauschale, the annual advance lump-sum on accumulating funds. For each position carried across a year-end it applies the published Basiszins, caps the charge at the year's actual gain, taxes it, and credits it against the eventual sale so nothing is taxed twice. It stays a provisional estimate: the 1,000 EUR personal allowance is not applied (it is a per-person amount) and the fund classification is still under review.
- Improvement
EU tax estimate defaults to your country
- The Italy/Germany switch on the strategy-page tax estimate now starts on your own country, inferred from where you sign in, instead of always defaulting to Italy. You can still switch manually at any time.
- Fix
Faster, more reliable drawdown analyzer
- The drawdown analyzer now returns instantly when you re-run the same portfolio, and it stays responsive when several analyses run at the same time.
- Improvement
EU tax estimates combined into one panel with a country picker
- In EU mode, the Italian and German capital-gains estimates now share a single strategy-page panel with an Italy/Germany switch, instead of stacking two separate cards. Pick a country and only that estimate is shown.
- Improvement
200-Day SMA Trend variants grouped by asset role
- The 200-Day SMA Trend strategy's six single-asset variants are now grouped in the variant selector by role (Equity: SPY and QQQ; Diversifiers: GLD, VNQ, TLT; Faber: the 10-month variant) instead of a flat list of six, matching the grouped layout HAA already uses.
- Improvement
Where-to-begin guide added to the main menu
- The honest map of where your long-term money can go is now linked from the top navigation, the methodology page, and the getting-started guide, so it is no longer buried in the footer.
- Feature
Added an honest where-to-begin money map
- A new public guide maps the order of operations for a spare dollar: cash cushions and debt first, then property, public markets, rules-based investing, active tilts, or higher-risk slices.
- It is educational, globally worded, and keeps BestFolio as one small TAA branch rather than a hard sell.
- Feature
Estimated German tax on the strategy page (EU mode)
- In EU mode, Pro and API users now also get an estimated German capital-gains figure (Abgeltungsteuer) on each strategy page, alongside the Italian one: 26.375% with Teilfreistellung partial exemptions (equity funds 30%, mixed 15%, other 0%), derived from the strategy's own rebalance history. It is provisional (the fund classification is preliminary, and the Vorabpauschale advance tax is not modelled) and is shown with a clear note that it is not tax advice.
- Feature
Estimated Italian tax on the strategy page (EU mode)
- In EU mode (EUR), Pro and API users now see an estimated Italian capital-gains figure on each strategy page: the per-unit tax split across the Italian buckets (plain ETF 26%, government-bond ETF 12.5%, ETP 26% with loss carry-forward), derived from the strategy's own rebalance history. It is a provisional estimate (the instrument classification and the carry-forward window are still being confirmed) and is shown with a clear note that it is not tax advice.
- Feature
Leaderboard and comparison table now show EUR
- If you switch BestFolio to EUR (the currency toggle in the top bar), the strategy leaderboard and the comparison table now convert every return, CAGR, volatility, and drawdown to euros using historical exchange rates, the same as the strategy and portfolio pages already did. Pick EU mode once and every ranking reflects what a euro investor actually earned, FX drift included.
- Fix
Static portfolio sleeves now backtest with full history
- When you add an ETF as a fixed sleeve in a portfolio (rather than a tracked strategy), it now inherits the same proxy and synthetic-leverage history extension that strategies use. Previously a recently-launched fund such as RSST or RSSB capped the whole blend's backtest at a couple of years; those sleeves now extend back through their building blocks (into the late 1980s for the return-stacked funds), so the portfolio backtests as far as the data allows.
- Improvement
Accent colors unified to the BestFolio brand blue
- Feature icons, the leverage badge on your dashboard, and the upgrade panel now use the brand blue consistently instead of mixed indigo and purple accents.
- Improvement
Published a machine-readable API spec
- The read-only API now has an OpenAPI spec at /api/v1/openapi.json, so you can generate a client or import it into your tooling.
- Fix
Strategy pages now always show the selected variant's data
- Opening a strategy page through a direct variant link could briefly show another variant's signal history, performance numbers, or chart while the title showed the one you picked.
- The page now ignores out-of-date responses when the variant changes, so every panel stays in sync with your selection.
- Feature
Connect your AI assistant to BestFolio over MCP
- A new MCP server lets you add BestFolio as a connector in Claude or ChatGPT and ask about your strategies, signals, and portfolios using your API key.
- It is read-only and Pro-gated, like the HTTP API. The API docs show how to set it up.
- Feature
More of the API is available to your key
- Your read-only API key now reaches portfolio backtests, walk-forward results, drift, and trade lists.
- Full strategy detail (variants, metrics, signals) is available to the key as well.
- Improvement
Cleaner, grouped variant picker on the HAA page
- The HAA strategy page carries the most variants, so its variant picker is now grouped by family with shorter labels instead of one long scrolling row, which makes it easier to scan and pick.
- Feature
HAA-Simple RSST now has a UCITS build for EU investors
- A new HAA-Simple RSST (UCITS) variant lets EU investors run the strategy without the US-listed RSST. When risk-on it holds a UCITS blend of a 2x S&P 500 UCITS ETF plus the iMGP DBi Managed Futures UCITS ETF, and de-risks to IEF/BIL on the same TIP and SPY momentum signals. It tracks the US RSST version closely on a risk-adjusted basis.
- Fix
Returning members can re-subscribe from the pricing page
- If your subscription had lapsed, the pricing page could still mark that plan as your current one and hide the subscribe button. A lapsed plan now correctly shows the option to re-subscribe.
- Feature
Estimated Italian capital-gains tax for each strategy
- A new per-strategy Italian capital-gains estimate (Pro and API). It reconstructs realized gains from the strategy's rebalance history with FIFO lot matching, sorts each holding into its Italian bucket (plain ETF at 26%, government-bond ETF at 12.5%, ETP at 26% with loss carry-forward), and applies the rules. Figures are per unit of capital, and the per-instrument classification is returned so you can check it, since the bucketing is provisional.
- Improvement
Per-instrument prices added to the signal export
- The signal-history export now carries each instrument's price at every rebalance: a <ticker>_price column in CSV, a prices map in JSON. You can now compute realized gains and taxes for any jurisdiction straight from the signal feed, without a separate price lookup.
- Feature
Download a per-rebalance price ledger for any-jurisdiction tax
- Each strategy now exports a price ledger: for every rebalance, the price of each instrument bought, sold, or held, plus the weight change. Drop it into a spreadsheet to compute realized gains and taxes for any country. Available as CSV or JSON to Pro and API users.
- Improvement
Trade list grouped by rebalance cadence
- Portfolios that mix a daily sleeve (like Buy the Dip) with monthly sleeves now split the trade list into sections by rebalance frequency, each labelled with its next rebalance date, so you can see what is due tomorrow versus at the next month-end.
- Fix
Leverage: low targets no longer sit on the higher-decay 3x route
- If a portfolio's leverage target was 1.5x or lower but routed through 3x ETFs (UPRO/TQQQ), it now uses the 2x route (SSO/QLD), which reaches the same leverage with less daily volatility decay. Leverage settings now warn when you pick the 3x route, since 2x is the better route for any target up to 2.0x.
- Improvement
Recompute a walk-forward portfolio from the editor
- The walk-forward editor on the Portfolios page now has a Recompute now button to force an immediate re-optimization. With create, edit, and recompute all on the Portfolios page, the old standalone Walk-Forward Portfolios page is retired and its links redirect there.
- Improvement
Clearer wording on signals and strategy pages
- Strategy and signal pages now describe each strategy's current allocation more precisely.
- Telegram signal alerts now carry the same educational, not personalized advice note as the monthly signal email.
- Improvement
Keyboard support for the walk-forward edit dialog
- The Edit dialog for walk-forward portfolios now closes with the Escape key and keeps keyboard focus inside it while open.
- Feature
Create a walk-forward portfolio from the Portfolios page
- Create New Portfolio now has a Walk-Forward (auto-optimized) mode next to the manual blend: pick your strategies and optimization settings and it saves a live portfolio that re-optimizes its weights every month, with no separate trip to the Walk-Forward tool. The Walk-Forward tool stays for exploring runs before you commit.
- Improvement
Edit walk-forward portfolios on the Portfolios page
- Editing a walk-forward portfolio (its strategies, optimization criterion, window, and weight limits) now opens right on the Portfolios page instead of sending you to a separate page. Saving re-optimizes as before.
- Improvement
Click through from Risk vs Return and the Strategy-Asset Matrix
- On the Risk vs Return page, the chart points, the Top Performers list, and the table rows now link straight to the strategy, carrying the variant you clicked.
- The Strategy-Asset Matrix rows now link to the strategy as well.
- Improvement
Easier to find the new navigation
- If you are still on the classic sidebar, a one-time banner now points to the new navigation so it is easier to discover. Try it from the banner, or turn it on anytime in Settings under Appearance, and switch back whenever you like.
- Improvement
Clearer Save button for your own walk-forward portfolios
- In the Walk-Forward tool, the Save button on each result now reads Save as live walk-forward portfolio, with a tooltip, so it is clear you can save your own portfolio that re-optimizes its weights automatically every month, just like the built-in walk-forward portfolios.
- Fix
Walk-forward drawdown now measured on the daily equity curve
- Walk-forward portfolios now compute max drawdown and the drawdown chart from the daily out-of-sample equity curve instead of month-end values, so the figure reflects intra-month declines.
- Returns and the optimized weights are unchanged; only the drawdown basis is now daily, matching how single strategies are measured.
- Fix
Fixed the ETF Preferences Save button
- On Settings, ETF Prefs, the Save Preferences and Auto-Optimize buttons could silently do nothing. They now save reliably, and tell you if no portfolio is loaded yet.
- Feature
New strategies: HAA Quartet and HAA-Simple RSST
- HAA Quartet uses HAA's TIP canary as a single on-off switch over the Return Stacked Quartet (20% NTSX, 20% GDE, 30% RSST, 30% ZROZ): it holds the Quartet when the canary is positive and moves fully to T-bills when it turns negative. In a 1987 to 2026 backtest (history is reconstructed before the funds existed) the switch kept about the same return as holding the Quartet outright while lowering volatility and the worst drawdown to about -20%, its biggest win being the 2022 bear.
- HAA-Simple RSST holds RSST (100% S&P 500 plus 100% managed futures) when risk-on and unleveraged IEF/BIL when off, deciding risk-on or risk-off from the S&P 500 and the TIP canary rather than RSST's own momentum. A higher-octane satellite that stacks a non-correlated trend sleeve on top of equity, not a core holding.
- Improvement
RVol Shifter now recommends the Cash-Only variant
- The Recommended badge on RVol Shifter now points to the Cash-Only variant. Over the 2003 to 2026 backtest it returned about 25.3% a year with a -38% worst drawdown, versus 24.1% and -62% for the previous 3-State default, so it is a similar return at a much smaller drawdown.
- The Recommended badge also shows a tooltip now: it marks the variant we suggest starting with, not the one with the highest backtest numbers. The 3-State, 2-State, and Wongkok 200SMA variants stay available to compare and select.
- Feature
New strategy: a plain 200-day trend benchmark
- Added 200-Day SMA Trend: hold an asset while its month-end close is above its 200-day moving average, otherwise T-bills. It is the simplest trend-following rule and the classic benchmark tactical strategies aim to beat, kept deliberately unoptimized.
- Ships on SPY (the benchmark) plus QQQ, GLD, VNQ, and TLT, with a Faber 10-month variant. Over 2007 to 2026 the SPY version returned about 9.9% a year with a -22% worst drawdown, versus 10.7% and -51% for buy and hold SPY.
- Improvement
HAA-Simple Leveraged now times the 2x sleeve off the S&P, not SSO itself
- The leveraged HAA-Simple variant (2x SSO) now decides risk-on or risk-off from the S&P 500's own momentum plus the TIP canary, then holds SSO when risk-on, instead of reading the 2x ETF's own momentum. Gating on the 1x index avoids whipsawing out of the leveraged sleeve right after a sharp drop and then missing the rebound.
- In a backtest from 2007 to 2026 this raised CAGR from about 16.5% to 19.2% for the same worst drawdown (about -32%); the defensive sleeve stays unleveraged IEF/BIL. We also clarified that plain HAA-Simple goes risk-on only when both the TIP canary and the S&P's own momentum are positive.
- Fix
Regime Detector signals show today's readings
- The Regime Detector signal page now refreshes its composite score, S&P and VIX levels, and the six sub-signals every day. Before, those diagnostics could stay frozen at the date of the last regime change.
- The held allocation was always live and correct, so this fixes only the diagnostics shown next to it.
- Feature
Opt in to a new, simpler navigation
- Settings now has an Appearance section where you can turn on a beta sidebar that groups the portfolio tools into Build and Tools and the charts under Analyze. The Leaderboard stays front and center, and you can switch back to the classic menu anytime.
- Feature
Walk-forward rebalances now show in your Alerts
- When a walk-forward portfolio rebalances its sleeves, the per-sleeve changes now appear on the Alerts page (not just the monthly Execute email), and the portfolio list shows a small Rebalanced marker on recently reoptimized walk-forward portfolios.
- Improvement
Walk-Forward shows which sleeve limits the backtest window
- When you run a Walk-Forward optimization, the results now name the sleeve whose history starts latest (the one capping how far back the common backtest can go), so you can drop it to extend the window.
- Improvement
Download the leaderboard as a CSV
- The leaderboard has a Download CSV button that exports your current filtered, sorted view (returns, CAGR, drawdown, Sharpe, turnover, publication year, and the Robustness score) for offline analysis.
- Improvement
Signals API: list variants by slug, clearer active vs preview
- You can now list a strategy's variants (ids and names) by slug with GET /api/strategies/slug/{slug}/variants, so you no longer have to dig variant ids out of the full catalog.
- The signal export now includes top-level current_signal and next_signal dates, so it is clear which row is the active allocation and which is next month's preview.
- Data
A-RVol Shifter backtest now reaches back to 2000
- The A-RVol Shifter strategy's backtest start was lowered from 2003 to 2000, so its history now spans the full dot-com crash. The earlier legs use the same fallback price chains as the rest of the catalog.
- Improvement
After-tax CAGR for blended portfolios
- The Blend page's tax-efficiency column now also shows each portfolio's estimated after-tax CAGR (US federal, weighted from the component strategies' turnover and long-term-gains mix), so you can compare blends on what you actually keep.
- Improvement
Plug your own tax rates into the US tax overlay
- The US Tax Impact panel on each strategy page now has a Your own rates row: enter your short and long-term marginal rates and the tax drag and after-tax CAGR recompute live, instead of only the preset income brackets.
- Feature
Head-to-head heatmap: which strategy won, and when
- On the performance comparison page, picking exactly two strategies now shows a Head-to-Head by Era grid: each cell is one strategy's annualized return minus the other's, by start year and holding horizon (1, 3, 5, 10 years).
- Green means the first strategy won that window and red the second, so you can see whether an edge held across eras or only in one stretch.
- Improvement
See how much of the time a strategy spends underwater
- The strategy drawdown chart now shows Time Underwater: the share of the backtest spent below the prior high-water mark, alongside the longest and deepest drawdowns.
- It flags strategies that are often underwater even when their individual drawdowns are shallow, which depth alone does not reveal.
- Feature
Filter and sort the leaderboard by US tax efficiency
- The leaderboard has a new Tax efficiency column and filter (excellent, good, fair, poor), based on how much of each strategy's gains qualify as long-term under US rules.
- Pro shows the rating for every strategy; the free tier covers the free strategies, with a Pro prompt on the rest.
- Feature
See how robust each strategy's Sharpe ratio really is
- Every strategy now shows a Robustness score: the Deflated Sharpe Ratio, the probability its Sharpe is real rather than the luckiest pick among all the strategies we tested.
- It corrects the Sharpe for track-record length, fat tails, and how many strategies were tried. Strategies in the fragile zone are flagged, so you can treat a shiny backtest with the right caution.
- Find it on each strategy page and as a sortable column on the leaderboard (under Show all columns).
- Improvement
A clearer way back to the app from the blog
- When you are signed in, the blog now shows a Back to dashboard button and the BestFolio logo takes you to your portfolios, so the rest of the app stays one click away.
- Improvement
See which sleeve limits a blended portfolio's date range
- When a multi-strategy portfolio's backtest starts later than its sleeves individually would, the portfolios page now names the sleeve with the shortest history, the one that sets the common start date.
- Remove or swap that sleeve to extend the range further back.
- Improvement
Sort the strategy catalog by turnover, CAGR, or publication date
- The Strategies page has a new Sort control: order the catalog by name, yearly turnover (low to high), CAGR (high to low), or first publication date (newest or oldest).
- Improvement
Clearer walk-forward rebalance alerts
- The Alerts page now explains that walk-forward sleeve rebalances arrive in your monthly Execute email, alongside per-strategy signal changes.
- Alerts and Settings now make clear that signal and rebalance alerts follow your Main portfolio.
- Feature
Get signal alerts by webhook
- Add a webhook URL in Settings to receive monthly signal updates as JSON, for ntfy, Pushover, Gotify, Slack, Discord, or your own endpoint.
- Each delivery is signed so your receiver can verify it came from BestFolio.
- Feature
Manage your API keys in Settings
- Pro subscribers can create, view, and revoke read-only Signals API keys directly in Settings, under API Keys.
- A new key is shown once when you create it, so copy it then.
- Feature
Signals API documentation
- A new docs page explains how to pull any strategy's monthly signal as JSON or CSV with an API key, with curl and Python examples.
- It covers how to tell the active allocation apart from next month's preview.
- Feature
Compare strategies by tax efficiency
- The Compare page has a new sortable Tax Eff. column, so you can rank strategies by tax efficiency alongside CAGR, Sharpe, and drawdown.
- Improvement
Tax efficiency for blended portfolios
- Smart Blending now shows a tax-efficiency estimate for each optimization method, weighted from the strategies in the blend.
- Feature
Save a bonds-to-cash setting on any portfolio
- Turn on Bonds to cash in the portfolio editor to replace every bond sleeve across the blend with cash, and the portfolio backtest updates to match.
- Pick the cash proxy per portfolio: BIL or SGOV T-bills, or uninvested cash at 0%.
- Feature
See any strategy with its bonds swapped for cash
- On a strategy's backtest tab, turn on Bonds to cash to replace its bond sleeves (Treasuries, TIPS, corporates) with cash and compare CAGR, Sharpe, UPI, and drawdown side by side.
- Pick the cash proxy: BIL or SGOV T-bills, or uninvested cash earning nothing.
- Improvement
Euro amounts use European number formatting in EU mode
- With EU mode on, monetary values now display in European style (1.234,56) instead of US style, matching how euro figures are written across the eurozone.
- Feature
Export strategy signals as CSV for automated trading
- Pro subscribers can now export a strategy variant's signal history as CSV or JSON through the BestFolio API, with one column per ETF target weight.
- Designed for feeding monthly allocations into automated trading, for example Alpaca or IBKR.
- Data
Corrected pre-2007 managed futures backtest history
- Strategies that hold DBMF, KMLM, or CTA now use the Barclay BTOP50 CTA index for their pre-2007 backtest history, instead of a gross trend-following factor that overstated returns.
- Backtests starting before about 2007 for these strategies now show lower, more realistic managed futures performance (roughly 9.9% a year in the deep history, versus a previously inflated 22%).
- Improvement
Accurate author notes on legacy Dual Momentum Systems strategies
- The LT Gain pages now note the strategy has been retired from the current Dual Momentum Systems lineup and is kept for historical reference.
- The Bamboo page now points to its successor, Permanent Portfolio DMS.
- Improvement
Cleaner strategy catalog cards
- Strategy cards now combine the plan and type into one badge and reveal the description on hover, so the grid is easier to scan.
- The allocation bar is hidden for single-ETF strategies, where a one-segment bar added no information.
- Improvement
Leaderboard: filter by leverage and sort by turnover or publication date
- New Leverage filter (All, Leveraged, Not leveraged, Base only) reads each variant directly, so leveraged variants like HAA Leveraged (2x) now appear under Leveraged.
- Show all columns adds sortable Turnover and Published (first publication date) columns, so you can find low-turnover or oldest strategies without opening each one.
- Fix
Reliability fixes for drawdown analysis, backtests, and signup
- Drawdown analysis no longer errors intermittently when many analyses run at the same time.
- Portfolio backtests no longer fail to load when a data point is unavailable; the series shows a gap instead.
- New-account signup is more robust when an email address is reused across accounts.
- Improvement
An easier way to share BestFolio with people who'd value it
- Your referral link moved to a clearer spot in Settings (now called Spread the word), and a one-time note points you to it. Share your link, and when a friend joins and pays their first month, you both get the next month free.
- Fix
Creating and saving portfolios works again
- Fixed a regression that caused creating or saving a portfolio to fail with an error. Building portfolios, saving walk-forward runs, and editing existing portfolios all work normally again.
- Fix
Portfolio API now returns your leveraged allocation
- The rollup endpoints (/api/portfolios/{id}/rollup and /rollup/execution) now apply your selective-leverage overlay by default, matching the allocation shown in the app. Add leverage=false to get the unlevered baseline.
- Improvement
Saving a walk-forward run now creates a live portfolio
- Saving from the Walk-Forward Optimization page now creates a live walk-forward portfolio that re-optimizes its weights every month, instead of a frozen snapshot of the latest run.
- Feature
See strategy and portfolio analytics in EUR, with UCITS ETF tickers
- New EU mode switch in the sidebar and in Settings. Turn it on to see NAV, returns, drawdown, and every metric for strategies and portfolios converted to EUR using historical EUR/USD exchange rates, with safe withdrawal rates adjusted for euro-area inflation.
- EU mode also shows UCITS ETF tickers in your portfolio execution view, so the names match what European brokers offer. Your choice is saved to your account.
- Improvement
Accessibility improvements for screen readers and keyboard users
- Charts, tables, and dialogs now describe themselves to assistive technology, and the navigation marks the page you are on.
- Added a skip-to-content link, clearer focus handling in dialogs, and labels on form fields and icon buttons.
- Improvement
Cleaner punctuation in suggestions, tools, and signal emails
- Replaced stray dashes with standard punctuation across portfolio health suggestions, ETF search, the UCITS rollup and tax tools, and the signal alert emails, so the wording reads consistently.
- Feature
Share a portfolio with a link, or submit it to the community library
- Every portfolio now has a Share button that creates a public link to a frozen snapshot of its allocation, backtest, and metrics. Anyone with the link can view it without an account, and you can revoke a link any time.
- You can also submit a portfolio to the community library: our team reviews it and, once approved, publishes it as a template other members can browse and blend.
- Fix
Old links to renamed strategies now reach the right page
- Links to former strategy names (accelerating-dual-momentum, composite-dual-momentum, sadek-vb and others) now redirect to the renamed strategy instead of showing a missing page; the renamed Kelly signal blog post redirects too.
- Cleaned up how search engines see the site: the sign-up page, the homepage, and social preview images no longer appear as duplicate or stray pages in search results.
- Feature
Referral program: give a month, get a month
- Share your personal referral link from Settings. When a friend signs up with it and pays their first month, you both get the next month free as account credit.
- Works on every plan: Founder and Monthly earn their own monthly price back, Annual earns one month's value. Free users can refer too; the credit is saved and applied when they subscribe.
- Feature
Automated monthly TAA scoreboard on the blog
- On the first of each month the blog now publishes a TAA Scoreboard automatically: every published strategy's month and YTD return, top 10 unlevered, a separate leveraged corner, the weakest 5, and benchmark context, generated straight from the strategy catalog with sanity checks before anything goes live.
- First edition arrives July 1 covering June 2026.
- Feature
Drawdown history pages for 44 popular ETFs
- Every major ETF now has a dedicated page at /drawdown/<ticker> (for example /drawdown/tqqq) showing its maximum drawdown, recovery time, share of months spent underwater, worst rolling 12-month return, and a table of its five deepest drawdowns, computed from extended monthly history.
- Pages refresh daily from the same data that powers the Drawdown Analyzer, and any other ticker the analyzer supports renders on demand.
- Feature
Signal Drivers now shows raw indicators, not only scores
- Strategies whose rule compares raw values (a price against its moving average, an RSI against a band, a regime threshold) now chart those exact values under Signal Drivers, where previously only per-asset score tables were shown.
- The new Indicators view appears automatically for any strategy that records numeric values with its signals; nothing to configure.
- Improvement
Portfolio backtests stay warm: no more 60-second first loads
- Saving or editing a portfolio now rebuilds its backtest in the background, so the first open after a change is instant instead of a long spinner.
- Cached backtests refresh exactly when their underlying data changes (new prices or strategy updates) rather than expiring on a timer, so evening opens no longer pay a cold rebuild.
- The morning cache warm-up now also covers portfolios you edited recently, not only the one marked as main.
- Feature
Liquidity at a glance on the Asset Universe card
- Every instrument on a strategy page now shows its average daily traded value and an estimated spread bucket (tight, moderate, wide), so you can see how thin a listing is before you pick it.
- UCITS equivalents show the same figures for their actual European listing (London, Xetra or Milan), the part that matters when a fund trades thinly in Europe even though its US sibling is liquid.
- Spread figures are statistical estimates inferred from daily price ranges, not measured quotes, and are labeled accordingly; the exact basis-point estimate sits in the tooltip.
- Feature
Six Dual Momentum Systems legacy strategies join the catalog
- The Russell, Triad, Global Navigator, LT Gain, GPMv and Bamboo, the original public generation of Randy Harris's Dual Momentum Systems strategies, moved from private preview into the public catalog.
- Published with the author's permission. Every page carries a note marking it as the original public version and linking to Dual Momentum Systems, where the author maintains the updated, revised versions and his timely monthly allocations.
- Improvement
ACA Dynamic Bond and The Russell backtests are now hundreds of times faster
- Stoken's ACA Dynamic Bond recomputed every price-channel from the beginning of history for every single trading day, which put its full backtest near 15 minutes; the channel states are now resolved in one pass and the same signal sequence computes in well under a second.
- The Russell rebuilt all of its momentum scores from scratch for every month in its history; scores are now computed once for the whole history, cutting its backtest from roughly 10 minutes to seconds.
- Both strategies produce exactly the same signals, trades, and performance numbers as before; an equivalence test suite compares the new code against the old logic across every history length.
- Improvement
Signal previews now use live intraday prices and adapt to the real market close
- Pre-close signal previews (monthly, daily, and a new weekly preview) are now computed from a live intraday price snapshot instead of the prior day's close, so a preview genuinely answers what would change tomorrow if the day closed now.
- Preview and confirmation emails are scheduled relative to the actual market close, including early-close half days and daylight-saving shifts, keeping the promise of at least one hour of notice before the close.
- Weekly strategy alerts now use the actual Friday close (they previously went out before the final prices settled), drift alerts evaluate after the nightly price refresh, and duplicate daily change emails are eliminated: each allocation change is announced once as a preview and once as an execute reminder, never repeated.
- Infra
Machine-readable site index at /llms.txt
- bestfolio.app/llms.txt now publishes a plain-text index of every published strategy (with CAGR, max drawdown, and backtest start), the free tools, and recent blog posts, following the llms.txt convention used by AI assistants. It regenerates from live data, so it stays current as strategies and posts are added.
- Fix
Leaderboard rows now open the exact variant you clicked
- Clicking a leaderboard row used to open the strategy page on its primary variant, whose numbers can differ from the variant in the row (for example Permanent Portfolio Tactical vs Static). The link now lands on the clicked variant, so the numbers you saw are the numbers you get.
- Fix
Honest full-history risk numbers in multi-strategy comparisons
- When comparing several strategies (Watchlist, Performance pages), each strategy now reports its own full-history risk and return; previously the numbers were silently limited to the period all selected strategies share, so a young strategy in the mix could hide an older strategy's worst drawdown. Comparing one strategy against a benchmark still aligns both to the same period.
- The /strategies/smartstack link now lands on the SmartStack explainer instead of a missing page.
- Fixed rare brief degraded blips of the status endpoint caused by one-off network hiccups during its checks.
- Fix
Portfolio Library rebalance badges now distinguish daily-signal portfolios
- Three library portfolios that include a daily-signal strategy (BestFolio House Momentum, Levered Growth Control, Aggressive Walk-Forward Growth) were labeled Monthly. They now carry a Daily badge, and the library filter gained a Daily option.
- Fixed a rare server error when opening a portfolio backtest that was not already cached.
- Withdrawal-rate metrics (SWR and PWR) now recover automatically after a temporary outage of the inflation data source instead of silently using a 3 percent fallback until the next release.
- Feature
BestFolio vs AllocateSmartly comparison page
- A factual side-by-side of the two services: strategy coverage, validation methodology, European UCITS support, blending tools, and pricing. Including the places where AllocateSmartly is the better choice.
- Improvement
Locked strategy pages now preview the backtest you unlock
- The Backtest, Signals, and Allocations tabs on Pro strategies used to show an empty gray panel behind the upgrade prompt. They now show an illustrative long-history equity curve so you can see the kind of chart a Pro subscription unlocks.
- The upgrade prompt also notes that our deepest backtest histories reach the 1920s.
- Improvement
Every page now shows the same strategy count
- The landing page hero, stats row, and feature cards could disagree on the number of live strategies because some sections used a build-time snapshot. All counts on the page now come from the live catalog.
- The demo signal card on the landing page showed a hardcoded March 2026 date next to the words Updated daily. It now always shows the current signal month.
- Stats on the pricing page and leaderboard now describe our backtest depth accurately: the deepest histories reach the 1920s.
- Improvement
Clearer sign-up page, newsletter on blog posts, fuller footer
- The sign-up page now lists what the free tier includes (6 strategies, monthly signals, UCITS alternatives) next to the form on desktop.
- Blog posts now offer the free Monthly Briefing newsletter at the end of each article.
- Footer links now include Strategies, Leaderboard, Library, Blog, Free Tools, and Pricing.
- Fix
FactorLens analyze button is easier to see
- The Analyze Portfolio button used a pale teal that could read as disabled even when it was ready. It now uses a higher-contrast color.
- Fix
Reliability fixes for notifications, newsletter signup, and the nightly data refresh
- Telegram notifications whose text contains unusual characters now arrive as plain text instead of being silently dropped when formatting fails.
- Newsletter signup no longer shows a spurious error when our email provider is slow to respond; the request is now retried automatically.
- The nightly price refresh skips tickers whose data has permanently ended, cutting recurring false error alerts.
- Improvement
Clear risk warning on extreme-drawdown strategies
- Strategy pages now show a prominent warning when a strategy's worst historical drawdown is beyond -70%, stating it is published for research only and is not investable.
- The warning points to the catalog for lower-risk, diversified options. It currently applies to the most aggressive leveraged strategies.
- Fix
Risk vs Return compares every strategy over the same 30-year window
- The Risk vs Return chart was measuring each strategy over the period shared by all strategies on the page, which had collapsed to the start date of the newest strategy and understated the drawdown of strategies with older crashes. It now uses a fixed 30-year window, so the figures line up with the leaderboard and the strategy pages.
- Strategies with less than 30 years of history are hidden by default, with a toggle to add them back over their own shorter history.
- Fix
Notification titles read cleanly on the notifications page
- The notifications page no longer shows the internal signal-phase tag (like [FINAL] or [DAILY EXECUTE]) in front of a strategy name. The notifications bell already hid it, and now both surfaces match.
- Fix
Strategy pages no longer flash the locked state while your access loads
- On a cold page load, a signed-in account could briefly see the 'Upgrade to Pro' locked state on a strategy page before access finished loading. The page now shows a brief loading state until access is known, so paid content no longer flashes as locked.
- Improvement
Sharper text contrast on returns heatmaps and status colors
- Numbers in the monthly and annual returns heatmaps now switch between dark and white labels by true contrast, so every cell meets WCAG AA in light and dark mode while the color scale stays the same.
- The green and red action buttons, the notification count badge, and the rebalance period toggle now use deeper fills so their white labels are easier to read.
- The allocation bars in the homepage demo now use dark labels that stay legible on their bright segments.
- Improvement
Strategy pages now show both monthly and daily max drawdown
- The Summary Statistics table now lists Max Drawdown (monthly) and Max Drawdown (daily) as separate rows, so the deeper daily figure on the drawdown chart no longer looks like it disagrees with the table.
- The monthly figure uses month-end values, the common published convention, while the daily figure follows daily prices and matches the chart's deepest point. Tooltips explain the difference.
- Fix
Notifications panel is no longer cut off by the sidebar
- The in-app notifications dropdown was being clipped by the sidebar, which cut off strategy names. It now opens as a full panel so the names are readable.
- Clicking a notification opens the related strategy without a full page reload, and a notification with no linked strategy now opens the notifications page instead of doing nothing.
- Improvement
Clearer text contrast on buttons, badges, and allocation bars
- Primary action buttons across the site now use a deeper blue, so their white labels meet WCAG AA contrast in both light and dark mode.
- Allocation bar labels now pick black or white text per segment by true contrast, and a few mid-tone asset colors were deepened so every ticker stays legible.
- Tightened the remaining colored badges and tags (the dashboard regime tags and the pricing highlight badge) to meet AA contrast.
- Improvement
Dark mode text is easier to read
- Raised the color contrast of text, numbers, and labels throughout dark mode so they meet WCAG AA accessibility contrast on dark backgrounds.
- Fixed faint or, on some strategy pages, nearly invisible text by giving secondary text and light callout cards proper dark-mode colors.
- Fix
Benchmark stats now match the strategy's own period
- On a strategy page, the benchmark column in Summary Statistics (and the Performance compare view) now reports its return, drawdown and other stats over the same date range as the strategy, instead of the benchmark's full history. Previously a strategy that started in the 1980s was compared against an S&P 500 drawdown that reached back to the 1929 crash, which was not a fair comparison.
- Improvement
Dashboard and Strategy Compare clarity improvements
- The dashboard Strategy Performance table now hides leveraged strategies by default behind a Show leveraged toggle, and adds a Max Drawdown column so a high trailing return no longer hides a deep drawdown. Drawdowns past 35% are flagged in red.
- The portfolio selector is always visible on the dashboard so it is clear which portfolio you are viewing, with your primary portfolio selected by default.
- Strategy Compare and Performance now read as one flow: Strategy Compare is where you browse and rank strategies, then open your picks in Performance for the detailed side-by-side view.
- Feature
SmartStack overlay now available on DAA and KDA
- The SmartStack gold + managed-futures overlay, already on HAA, VAA-G4 and ADM, now also runs on Defensive Asset Allocation (DAA-G12) and Kipnis Defensive Adaptive (KDA). Pick the SmartStack variant on either strategy page.
- As with the other SmartStack variants, it layers a diversifying gold and managed-futures return stream on top of the base signal using fractional leveraged and return-stacked ETFs, so it works in a standard brokerage or UCITS account with no margin or futures. See the methodology page for how the overlay works.
- Improvement
Clearer explanation of the SmartStack gold and managed-futures split
- The methodology page and the SmartStack note on each strategy now make clear the gold and managed-futures overlay is not a fixed 50/50. Only the capital freed by the leverage swaps is split evenly; commodity and bond sleeves add managed futures on their own, so managed futures usually carries more than gold and the mix shifts month to month.
- A worked example walks through a typical month that lands near 18% gold and 38% managed futures.
- Fix
Library templates no longer clutter your own portfolios list
- Browseable library templates were appearing in your portfolios grid and returned a not-authorized error when opened. Your grid now shows only the portfolios you own; templates live under Library, where you browse and clone them.
- Improvement
Cloning a library template asks for a name, and portfolio names stay unique
- Clone from a template card or its detail page and a dialog now asks for the new portfolio's name, pre-filled with the template's name.
- Each portfolio you own needs a distinct name. If a name is already taken (ignoring case and surrounding spaces) you get a clear message instead of a silent duplicate.
- Data
S&P 500 benchmark now goes back to 1920
- The S&P 500 total-return comparison line on the Growth of $100 chart now extends back to 1920. It previously started in 1988, so it was missing from portfolios that backtest earlier; it now appears alongside the other benchmarks on those long histories.
- Feature
New: a Portfolio Library of ready-to-clone strategies
- Browse a curated library of pre-built portfolios at /library, from a conservative all-weather core to aggressive walk-forward growth. Each card shows its long-run backtest (CAGR, Sharpe, max drawdown) so you can compare at a glance.
- Three are free to clone; the rest unlock with Pro. One click copies a template into your own portfolios, ready to track and trade.
May 2026
- Improvement
Saved portfolios load their backtest much faster
- A portfolio's backtest is now computed once and reused, so reopening it is near-instant instead of recomputing from scratch. It refreshes automatically when you change the portfolio and as new daily data arrives.
- Improvement
Hide individual series on strategy charts
- Click a series in the legend of the growth and drawdown charts to hide it, so you can switch off the 40/60 and S&P 500 benchmarks and read a strategy on its own.
- The strategy's own drawdown line is now drawn heavier so it stands out against the benchmarks.
- Fix
Strategy picker no longer gets cut off in the portfolio builder
- The searchable strategy picker now floats above the rest of the editor, so its list is no longer clipped at the bottom of the table when you scroll.
- Fix
Leveraged strategy sleeves show their leveraged holdings in portfolios
- Adding a SmartLeverage strategy variant to a portfolio sleeve now shows the leveraged ETF mix it actually holds, instead of the underlying un-leveraged allocation.
- Fix
Drawdown chart now agrees with the Max Drawdown in Summary Statistics
- The strategy drawdown chart now reads the same backtest history as the Max Drawdown figure, so its deepest daily drawdown is always consistent with (and at least as deep as) the month-end number in Summary Statistics. A separate data path could previously understate it for some tactical strategies.
- Feature
Compare how often a strategy rebalances
- Every strategy page can now show how its returns change if you trade back to target every signal, once a year, or only when your holdings drift more than 5% from target.
- Useful where taxes make frequent trading expensive: see what less-frequent rebalancing costs in performance, and how much it cuts your trading.
- Improvement
Signal-driver score chart now covers every strategy family
- The chart of driver scores over time, previously limited to momentum and canary strategies, now appears for any strategy that exposes them, with a selector when a strategy tracks more than one set of scores.
- Improvement
Strategy and tool pages load faster and stop shifting as they open
- The Strategies catalog no longer jumps while it loads; the cards are present the moment the page renders.
- FactorLens and the Drawdown Analyzer load noticeably lighter, deferring their charts until you run an analysis.
- Fix
Analytics now load only after you accept analytics cookies
- Product analytics no longer initialise or set any cookies until you accept analytics cookies in the consent banner, matching our Privacy Policy.
- Fix
Free strategies open without a sign-up wall, and safer account deletion
- Clicking a free strategy as a visitor now opens it directly instead of bouncing you to the sign-up page.
- Account deletion now verifies your subscription is cancelled before removing your account, so you can never be billed after deleting.
- Feature
See the scores behind a strategy's signals over time
- Momentum and canary strategies now show a chart of their driver scores across the whole backtest, so you can see exactly when and why the strategy turned defensive (scores dipping below zero).
- The drawdown chart also gained the multi-variant overlay, matching the growth chart.
- Feature
Toggle transaction costs on the backtest chart
- An 'Apply transaction costs' checkbox on a strategy's growth chart lets you see the curve with or without the slippage-and-spread drag we model on each rebalance.
- Defaults to on (the realistic, net-of-cost view); unchecking shows the gross, pre-cost curve for comparison.
- Feature
Overlay multiple strategy variants on one backtest chart
- On a strategy page you can now overlay its other variants (for example the leveraged or SmartStack flavours) on the same growth-of-$100 chart to compare them side by side.
- Use the 'Overlay on chart' chips below the variant selector; each picked variant gets its own coloured line.
- Fix
Drawdown chart now matches the Max Drawdown summary
- The drawdown chart on a strategy page now reads the same backtest data as the Max Drawdown figure in the summary table, so the two always agree.
- Previously the chart could understate the deepest drawdown for some strategies because it drew from a separate, drift-prone data series.
- Improvement
Strategy pages with many assets load much faster
- Opening a strategy that rotates across a broad universe of assets is now near-instant on the first load, instead of taking up to half a minute while the per-asset return breakdown was computed.
- The contribution breakdown is now prepared ahead of time, so the page no longer recomputes it on every visit.
- Improvement
Searchable strategy picker and linked sleeves in the portfolio builder
- Adding a strategy to a portfolio now uses a type-to-filter search box instead of a long dropdown, so you can find any of the 100-plus strategies by name.
- Strategy names in a portfolio's sleeve list now link straight to that strategy's detail page.
- Fix
Portfolio and strategy page fixes
- Adding a strategy to a portfolio no longer shows a spurious 'already in this portfolio' message after you save.
- Strategy pages now show a loading indicator instead of 'No backtest data available' while a backtest is still loading.
- Feature
New strategy: Sector Rotation (Faber QTAA-Sectors)
- A monthly sector-rotation strategy that ranks the eight US SPDR sector ETFs by blended 1, 3, 6 and 12-month momentum and holds the top three, with an optional 10-month moving-average filter that routes any failed sector to cash.
- Three variants are available: top 3 with the filter (default), top 5, and top 3 with no filter.
- Fix
Strategy share links work without a variant
- Sharing a strategy by its short link (for example /share/haa) now opens the strategy's primary variant instead of showing a not-found page.
- Data
Removed a look-ahead in the unemployment signal
- Strategies that use the US unemployment trend (LAA, RAA, and the Schwoerer unemployment signal) now read each month's figure on its real release date rather than its period date, so backtests no longer use a number that was not published yet. The effect on historical results is small, and it removes a forward-looking leak.
- Improvement
Drawdown chart follows the period selector
- On a strategy's Backtest tab, the drawdown chart now reframes to the date range you pick at the top, rebasing the peak to the start of the window, instead of always showing full history.
- Feature
Favorite strategies and a catalog hide filter
- Star any strategy to favorite it, filter the catalog and leaderboard down to your favorites, and see them ranked side by side on a new Favorites page with the usual period selectors.
- A new Strategy catalog section in Settings lets you hide categories you do not want to see (static, daily-trading, leveraged, SmartStack) across the catalog and leaderboard. Favorited strategies always stay visible.
- The Strategy-Asset and Annual Returns matrices now keep their column headers visible while you scroll and make the horizontal scrollbar easier to reach.
- The Strategy Leaderboard subtitle now reflects the selected time period instead of always saying 30-year.
- Improvement
Portfolio and strategy page refinements
- Adding strategies to a portfolio without a weight no longer drops them on save: they are equal-weighted automatically, or flagged if some are weighted and some are not.
- Strategy pages gain a BestFolio filter for our in-house strategies, an average leverage and exposure-adjusted return (EAR) metric, per-flavour rule notes, and instant switching between strategy flavours.
- Portfolio backtest charts can hide the nested sub-strategy lines for a cleaner view.
- Feature
Factor exposure on every strategy page
- Each strategy detail page now carries a Factor Exposure card: market beta, momentum, size, and value loadings from a Fama-French regression, with R-squared and alpha. A Full analysis link opens the same holdings in FactorLens.
- Improvement
FactorLens: live progress, shareable links, and example portfolios
- The free factor analyzer shows per-ticker fetch progress while it runs, fills itself in from a shared URL so a link that carries holdings analyzes on load, and adds a Share button that copies a link back to your exact portfolio.
- Improvement
Safe Withdrawal Rate now shows its full distribution
- Alongside the worst-case SAFEMAX floor, the backtest card reports the P25, median, and P75 safe withdrawal rate across every rolling 30-year window, so you see the spread and not just the single worst outcome.
- Improvement
More honest Sharpe and Sortino on long backtests
- Risk-adjusted ratios now compute from monthly returns instead of interpolated daily values. On pre-ETF history the old daily basis understated volatility and overstated Sharpe, so most strategies shift by a few percent. CAGR and max drawdown are unchanged.
- Improvement
Backtests default to full history everywhere
- Strategy, Leaderboard, and Dashboard backtests now open on the full available history by default, so the headline numbers line up across pages instead of mixing 10-year and full windows.
- Fix
Pro users no longer hit the paywall on a slow sign-in
- A stale first response during sign-in could briefly strand a paying subscriber behind the upgrade prompt on a strategy page. The page now waits for your account to resolve before deciding what to show.
- Fix
UCITS view shows the right leverage for leveraged ETFs
- The UCITS substitution view carries the 2x leverage factor for twelve leveraged US ETFs, so the European equivalent reflects the intended exposure instead of reading as unleveraged.
- Feature
Seven leveraged tactical strategies, now in the catalog
- Six leveraged plus the Carter unleveraged companion. Authors include u/RNAProf, u/Wongkok, u/Low-Initiative-1327, David Alan Carter, and two BestFolio house strategies. TQQQ/UPRO Trend SMA, Low Initiative LETF V2, A-RVol Shifter, RPEA, Buy the Dip, White Knuckle, and Cash Trigger.
- Leverage is not a free upgrade to higher returns. Five of the seven include trend filters that cut drawdowns at the cost of some upside; two (White Knuckle, RPEA) accept the deep drawdown directly. Sleeve sizing matters more than strategy selection.
- Full writeup with rules, merits, and shortcomings for each one: see the blog.
- Improvement
CAGR and turnover now on every strategy card
- The catalog shows annualized CAGR and yearly turnover percentage in one glance per strategy, so you can scan trading frequency without clicking in. Holdings-heavy strategies like Composite Momentum sit near 260%/yr, while Golden Butterfly and All Weather stay around 1-2%/yr.
- Turnover matters most if you trade on a thin exchange. Market orders on lightly-traded UCITS ETFs (XETRA small caps, for example) can bleed on the spread, and turnover is a cheap proxy for how much of that drag accumulates over a year.
- Detail-page Summary Statistics now explicitly says these metrics are pre-tax, with a link to the methodology page covering how taxes are handled separately (US Tax Impact panel, TBSZ analysis for Hungarian users).
- Data
More backtests reach further back for big workhorse ETFs
- VTI (total US market), QQQ (Nasdaq-100), the short-treasury cash sleeve (BIL, SHY), and the small-cap value family (AVUV, IWN, IJS, VIOV, VBR) all gain additional pre-listing history from a vetted monthly dataset.
- Any strategy that touches one of these tickers now has more years of backtest to compare against.
- Fix
Synthetic leverage curves now start at the right date
- Leveraged variants built on top of FRED interest-rate data (the SmartLeverage family) were silently truncating to the FRED Fed Funds start date. The curve now extends back as far as the underlying asset's history allows.
- Feature
Spread your monthly rebalance across multiple days
- Open any portfolio, expand the Tranching section, and pick 3, 5, or 10 days. Instead of one big trade on the first of the month, you'll get one alert per business day with the exact slice to trade that day.
- Each alert lists per-ticker amounts (BUY 4% TLT, SELL 3% GLDM, and so on) by Telegram and email, so you can execute without re-reading the main monthly email.
- Pro feature. Long-run total return barely moves compared to a single-day rebalance, but month-to-month NAV swings are noticeably smaller because no single day's prices dominate your entries.
- Feature
Equity leverage on walk-forward portfolios (on-demand)
- Walk-forward portfolios can run with a target leverage from 1.00 to 2.00 by substituting 2x or 3x ETFs at each rebalance. The unlevered version stays side-by-side so you can compare. A new sweep chart shows how CAGR and drawdown change across the leverage range, with the Calmar-optimal point marked.
- Activated on demand because it's a sharp instrument and we want to walk through the risk model with each user before turning it on. Use the in-app feedback button to request access.
- Feature
Annual returns matrix on Compare and Performance
- Compare variants or portfolios year-by-year in one table: rows are assets, columns are years, each cell is the total return. Best and worst per row are highlighted.
- Data
Older backtests now go back decades further
- Japan equities (EWJ) backtest from 1965 via Nikkei history. Emerging markets (VWO/EEM) and aggregate bonds (AGG/BND) gain extra pre-listing history too.
- Strategies that touch these sleeves now have meaningfully longer history to backtest against.
- Improvement
Per-asset contribution respects your selected window
- On the Allocations tab, the per-asset contribution numbers now match the time window you've selected (instead of always showing the full history).
- Improvement
UCITS toggle on the Asset Universe card
- European investors can flip a single switch on any strategy page to see the asset universe in UCITS tickers instead of US tickers.
- Feature
Monte Carlo simulation on strategy pages
- Block-bootstrap simulation runs on each strategy page so you can see a distribution of plausible future paths (not a single guarantee, but a realistic spread).
- Feature
Time-in-asset and contribution cards on strategy pages
- Two new cards on the Allocations tab. Time-in-asset shows how often each strategy held each asset; Contribution shows which assets actually drove the returns.
- Improvement
Related-strategies links on strategy pages
- Every strategy detail page now suggests a handful of related strategies at the bottom, so you can jump between similar approaches without going back to the list.
- Feature
Portfolio drift alerts
- Set a drift threshold in your portfolio settings. BestFolio sends a daily email and Telegram alert on any day a sleeve drifts past the threshold (with dollar amounts based on the holdings you entered).