Release notes

What changed in each build of the TestMyLogic desktop app. Versions follow the app's own numbering. The current release is open; click any other to read it.

0.38.02026-10-13The price chart now draws the sales of a position sold in parts, and the pane under it shows what was actually held. The "Data" and "Strategies" pages can show only what one sweep folder used, and their columns can be resized.
  • "Trades on the price chart": a position bought or sold in parts now shows every sale as a down arrow, sized by its share of everything sold, and the trade's line runs through every fill. Until now only the buys were drawn. The dashed average price now steps up with each buy, instead of drawing the trade's final average from its first day.
  • The pane under that chart now shows the value of what was held at each bar's close, in the account's dollars, so it never stands above the equity curve — the gap between them is cash. It used to add up the cost of every buy and keep the sum until the trade closed, so a position sold in parts looked held in full; on one result it stood above the account's own balance on 272 of 2,068 days. The backtests themselves were right — only what the screen drew was wrong.
  • The exit price of a trade sold in parts is now the price of its last sale, as the result file states it. It used to be worked back from the entry price and the return, which is right only for a trade bought and sold once, and could name a price the market never traded at that day. The "Trade list" now shows such a trade's average buy and sale price, how many fills each side took, and the fees its fills actually paid.
  • Hovering a trade bought or sold in parts now shows how many buys and sales it took and their average prices, instead of a row per fill that could run off the chart; the panel opens on the side away from the cursor. Return labels that would overlap are left off, the largest gains and losses first, and come back as you zoom in. The indicator legend moved out of the chart to a row above it.
  • "Data" and "Strategies": a "Sweep folder" control beside the search box shows only the datasets or strategies that a sweep folder's results used, its subfolders included — or, at the top of its list, the ones not used yet. Both tables' columns can be resized by dragging, as in the "Sweep list", and a cell's tooltip shows its own words.
  • A connected AI can now create, rename and move several sweep folders in one call, and the folder list tells it what each folder holds: the datasets and strategies its results used, and the period they cover.
0.37.02026-10-12Folders can now hold folders, up to three levels deep, and deleting a folder now deletes what is in it. The "Sweep list" columns can be resized by dragging, and a cell's tooltip shows its own words.
  • Folders inside folders, up to three levels. Drag a folder onto another folder to put it inside, or onto "Unfiled" to bring it back to the top level; a folder's ⋯ menu makes a folder inside it and moves it. The list draws the tree indented, with subfolders before a folder's own results, and each folder counts every result under it. The result folders on disk follow the same tree, and a result opens in analysis from any level as before.
  • Deleting a folder now deletes everything inside it — its subfolders and every result in them. The confirmation counts both, and its button reads "Delete all". Until now a folder's results moved to "Unfiled" instead. Deleted results cannot be recovered.
  • A connected AI now files a result by path — a folder and the folder inside it written as parent/child — and the missing levels are made. It is told to keep one folder for a question and a subfolder for each dataset, rather than a new top-level folder for every dataset, which is how the list grew past thirty folders. It can move folders, and it still cannot delete a folder that holds a result.
  • A folder name can no longer contain a slash, since a slash now separates the levels of a path. A name that already had one shows a hyphen in its place.
  • "Sweep list": a column can be resized by dragging the edge of its heading, double-clicking the edge brings back the default width, and the widths are remembered. A column that runs under the action buttons on the right fades into them.
  • Tooltips in the "Sweep list" now show only a cell's own text in full, or what a short mark means. What a number column means moved to its heading, and a folder's name now uses the width of its row and shows in full on hover.
0.36.32026-10-12Faster list pages on a large workspace: the "Sweep list" opens in about half the time, the lists update as work happens instead of every 2.5 seconds, and a very long label no longer pushes the sweep list's columns off the screen.
  • "Sweep list": on a workspace with about 630 results it opens in about half the time it took (1.6 s to 0.8 s measured). At start-up the daemon used to read every saved verdict just to check the format of the file that holds them; it now reads only that file's list of columns. The list also draws only the rows near the screen instead of all of them.
  • Each page now asks the daemon only for the lists it shows. The "Data" page no longer waits for the sweep list, and on that workspace its rows appear a second sooner at launch (1.6 s to 0.6 s measured). The daemon sends a list when something in it changes instead of being asked every 2.5 seconds, so a running sweep's or download's progress shows as it happens.
  • "Sweep list": a result whose combination label was one very long word pushed the columns on the right off the screen. The columns now have set widths, a long label ends in an ellipsis, and pointing at it shows it in full.
  • While a list is still loading it now shows a small spinner. It used to say for a few seconds that nothing was saved yet, and on a large workspace the "Data" page showed its getting-started card on every launch.
  • The open-source notice now lists the library that draws only the rows near the screen, and five parts of the strategy editor that the app already shipped but the notice had missed.
0.36.22026-10-07A connected AI can now read every combo's development-segment and test-segment results through SQL, and a strategy file it reads or writes may be up to 64 KiB. The Backtest tab's max drawdown is corrected for combos whose account started above its capital, and results with very many combos open faster.
  • A connected AI's SQL table of combos now carries each combo's return and max drawdown over the development segment — the same numbers the "Backtest" tab shows — and over the whole test segment, held from its first day. It is also told which segment each trade falls in. A field session had to run a second, development-only sweep to get these. The AI is told as well that ranking combos by their test-segment figures is choosing on the test days.
  • The strategy file a connected AI reads or writes may now be up to 64 KiB each way (it was 32 KiB): strategies that combine many sub-strategies ran into the old limit. The Terms (Article 15(4)) and the Privacy Policy state the new limit; nothing else in them changed.
  • "Backtest": the "Max drawdown" of a combo whose account started above its capital — a basket whose first fills came before the analysed days — was measured from the capital instead of the higher starting balance, so it read smaller than it was. It now counts from the higher of the two.
  • A connected AI is told what a trade's percent means: each trade's result over the money it put in, averaged one trade one vote. When positions differ in size, the average percent and the average dollars can differ even in sign, and that is not an error.
  • Results with very many combinations open faster: reading a result's returns no longer slows down with the square of its combination count.
0.36.12026-10-06A tidier walk-forward step: the combos chip lines up with the sentence beside it, a price label cut off at a chart's edge is no longer drawn, the table of each combo's ranks sits just below the chart's card instead of inside it, and every column of that table sorts.
  • Walk-forward, "Fold results": the "Combos analyzed" chip sat a little lower than the sentence beside it, right on top of the chart's highest price label. It is now centred on that sentence, with more room above the chart.
  • Charts no longer draw a price label that does not fit at their top or bottom edge — the walk-forward chart printed its top label half cut off. This applies to every line chart in the app; the next label in is whole.
  • The table of each combo's two ranks moved out of the chart's card to just below it, so opening it no longer stretches the card — the same arrangement as the fold table, whose toggle sits above the chart.
  • Every column of that table sorts now, the combo, each parameter and the trades included, the way the "Sweep list" does: click a heading for ascending, again for descending, a third time to return to the development-segment order. The change and fold-win columns used to start with the largest; like every other column they now start ascending. Sorted by the test-segment rank, the walk-forward and Buy & Hold rows keep the place they would take in either direction.
0.36.02026-10-06Every return the app shows is now the account's — the wallet's cash and coins at each day's close — and results made by earlier versions are converted the first time they open. The walk-forward tab draws every combo it can pick behind its curves, with a folded table of each combo's two ranks, and its two fixed combos now follow its metric; the backtest's stop-loss panel counts money.
  • Returns are the account's. Until now a day's return was the average of the open positions' own returns, which equals the account only while every position is a fixed share of the wallet — a strategy that scales in and out, or holds several coins at once, read too high or too low (the field test that found it: a split strategy's test period read +259% where its trade list added up to about +149%). Each day is now the account's change, cash plus holdings at the close, so the compounded curve ends where the trade list does. Results made by earlier versions are converted from their own trade records the first time the app opens them — nothing is re-run — and every verdict is computed again on the new figures; the "Sweep list" offers its compute button on each row until it is. A result the app cannot convert keeps working and says "Old return calculation" under its "Status".
  • Backtest, "Stop-loss": the panel's totals are money now — each trade's change weighted by what it held, in USDT and as a share of the starting equity — where they used to add the trades' percentages.
  • Walk-forward, "Fold results": every combo the walk-forward may pick is drawn faintly behind the curves, held over the same days; the "Combos analyzed" chip turns them off. Hovering a faint curve names it with its development-segment and test-segment ranks. On a result with a test segment a folded table under the results lists every combo's two ranks by the tab's metric, how far it moved, how many folds it won and its trades, with the walk-forward and Buy & Hold at the place they would take; hovering a row marks its curve. The selected fold's in-sample winner moved into the sentence above the chart.
  • On a result with a test segment the walk-forward tab's "Backtest winner" and "Most-picked combo" now follow its metric pill: switching Return, Sharpe or Sortino picks both again on the development segment. At Return the backtest winner is normally the backtest tab's star. The backtest tab's star and the sweep list's best return stay the net-profit winner.
  • A connected AI is told the same: the walk-forward summary carries how well each combo's development-segment rank predicted its test-segment rank, the two fixed combos' places, and where the walk-forward and Buy & Hold would stand, and its guide to the screen names the new curves, chip and table.
0.35.02026-10-04The cross-validation tab now shows its grade at every setting fixed in advance, as the walk-forward tab does; the sweep list opens on fewer columns with its three groups set apart; hover tooltips are drawn in the app's own theme; and one sweep may trade up to 50 coins.
  • Cross-validation, "Picks and verdict": in the "Cross-validation verdict" section, a line under the grade counts the grade at every setting the app fixes before any result is seen (each block count the span carries, then two lower trade floors) beside the same dots the sweep list draws, and "By setting" opens a row for each — its eligible combos, the picked combo's average rank among them, its grade and its PBO. The setting the list prints is marked "In the list" and the one on screen "On screen". The settings re-read the same days, so the rows are not separate confirmations: they show how close the grade sits to its boundary.
  • "Sweep list": a list whose columns were never changed now opens on the name, the period, the combo count, one number per group — the backtest's best return, the cross-validation's OOS score and the walk-forward return, each against what it is measured by — and "Status". The loss and drawdown pairs and both rows of "Verdict by setting" dots are one tick away in "Choose columns". The backtest and walk-forward groups sit on a grey band, so the three groups read apart.
  • Hover tooltips are drawn by the app now, in the theme's colours, larger, rounded and pointing at what they describe, where the operating system drew a small white box.
  • One sweep may trade up to 50 coins at once, where it could trade 8. The 8 came from the colour-by-coin choice on the backtest's "Stop-loss" scatter, which had eight colours; that choice is gone, the dots keep their exit-reason colours, and a dot's coin is in its hover. A connected AI is now told that a strategy holding only a few of its coins at a time should size its own entries, since by default each entry is given one coin's share of the wallet.
0.34.02026-10-02Both verdicts are now shown at every setting the app fixes in advance, not only the one it opens on; the cross-validation verdict step is split into four sections, and one colour rule runs across the app; a connected AI may write finer sweep grids; and the window no longer behaves like a browser.
  • "Verdict by setting": every row of the "Sweep list" now carries two rows of dots under that heading — the cross-validation grade at six settings and the walk-forward grade at seven, all fixed before any result is seen (the other block counts, shorter and longer windows, and two lower trade floors, one moved at a time). The setting the screen opens on is ringed, and a setting that admits exactly the same combos as an earlier one is left out. The cross-validation chip that sat beside a row's name now sits under its dots. On the walk-forward "Conclusion" step one line reads the same settings, and "By setting" opens a row for each. The settings re-read the same days, so the dots are not separate confirmations: a verdict that changes from one setting to the next is sitting near its boundary, which is what they show.
  • Cross-validation, "Picks and verdict": the step is now four sections, listed under it in the sidebar the way the backtest detail step lists its six — "Picked combo", "Cross-validation verdict", "All splits" and "PBO calculation and limits". The verdict section puts the grade on top of the two checks it is made of (the out-of-sample rank, then the overfitting probability) and the loss probability apart below them, which the grade does not use. The replay moved into the calculation section, so every number in the verdict section is final.
  • One colour rule across the app: passed is amber, could-not-tell is grey, hurt is red, and green appears only beside the number it beats. The lowest PBO band and the two held grades are amber now (they were green); a walk-forward return inside its chance range, and the chance zone on every rail, are grey (they were amber); a loss probability above the random-pick line is red.
  • The minimum-trades filter is one card in the analysis top bar on Cross-validation and Walk-forward, "Combos analyzed", instead of a control inside two steps. It shows how many combos those tabs rank out of the sweep's total and opens the filter.
  • A grid a connected AI writes for a sweep is no longer limited to 8 values on one parameter; the limit of 512 combinations in total stays. Also: the window no longer acts like a browser (right-click offers editing only, and browser keys such as reload are off); the strategy editor's left button reads "Close" once an edit is saved, where it read "Cancel editing" even after saving; the licence banner no longer warns on launch while a check is still within its grace period; a sweep row's ⋯ menu opens upward near the bottom of the list; and the guide a connected AI reads about the screens was checked against them again and corrected.
0.33.02026-09-29The backtest detail step's price chart can now draw the selected combo's indicator lines and the bars where its entry and exit conditions were true, each switchable from a legend on the chart; and every result the engine writes now records the exact engine build that made it.
  • Backtest, "Selected combo", "Trades on the price chart": a legend in the chart's top-left corner lists every indicator the strategy declares, named after the parameter it is bound to (for example Entry Fast EMA 4), with its value under the cursor. Click a row to draw or hide that line; everything starts hidden. Lines on the price's own scale sit over the candles, oscillators such as RSI get a pane of their own below, and two lines with identical values share a colour, the second one dashed. The last row marks every bar where an entry or exit condition was true — solid dots led to a trade, faint dots went unused because a position was already open, or none was.
  • How the lines are made: they are not stored with the sweep. When the chart opens, the engine runs that one combo again from what the result folder already holds — the strategy it ran, its settings and the very candles it read — and checks that the rerun's trades match the stored ones exactly. Lines are drawn only when they do; otherwise the legend says why (the price data changed, the engine changed, or the result keeps no copy of its strategy). Switching to another combo cancels a rerun that is still going.
  • Engine build on every result: a result's metadata used to record the engine as version 0.0.1 no matter which build made it. It now records 0.0.1 plus a fingerprint of the engine's source, which changes whenever the engine does. Results made before this release cannot say which build made them, so their chart legend carries a short note that the lines were recomputed.
0.32.02026-09-20Strategies can now sweep a protection's wait length and write re-entry rules that read the previous trade; a market-data download drops candles that fall off the timeframe's grid instead of letting one bad archive refuse a whole file; a connected AI can ask a table for its columns and says plainly when another grid over the same idea cannot sharpen a verdict; and two screens changed shape — the walk-forward step's collapsed charts are gone, and the backtest detail step has six sections, one of them a trade list.
  • Strategy documents: the whole-number keys of the protections table (stop_candles, lookback_candles, trade_limit) take a $param reference, so a cooldown or stop-guard length is one axis of the sweep rather than a copy of the strategy per value. And the entry-confirmation hook sees last_exit — how many bars ago this pair's last trade closed, its exit reason, its exit and entry prices and its net profit — so a rule such as wait three bars after a losing exit is written in the document instead of simulated outside the app.
  • Data: candles that do not sit on the timeframe's grid (one Binance Vision archive carried 43 bars stamped :28:14) are dropped when a download is stored, and the job summary says how many. Before, the engine refused the whole file and the only remedy was deleting the dataset and downloading it again; a dataset stored earlier heals on its next update.
  • Connected AI: run_query answers DESCRIBE <table> with a reserved table's or a dataset view's columns, so an AI reads a column name instead of guessing it. Its guidance now also says what would not sharpen a "Not distinguished" verdict — another grid over the same strategy family on the same data is the same five or six independent trials — and, when several variants of one entry idea have all come back the same on one market, to say how many and to name the levers left. The trades table's min_rate and max_rate are documented as including the exit candle's range, which is freqtrade's definition.
  • Walk-forward analysis, "Fold results": the collapsed block under the chart (an IS-versus-OOS scatter, a relative-performance curve, a second equity-and-drawdown chart and an up/down capture profile) is removed. The main chart already draws the walk-forward, the two fixed picks and Buy & Hold, so the block repeated it, and its axes were broken.
  • Backtest, "Selected combo": the step is six sections, each with its own title in the sidebar — "Trades on the price chart" (open by default), "Trade list", equity and P/L, stop-loss, exit reasons and trade distribution. One click on a sidebar title opens that section and scrolls to it, and the title of the section in view is highlighted. The trade list shows every trade in two rows, exit above entry — date, entry tag and exit reason, price, size, net P/L, fee and cumulative P/L — with wins and losses tinted, and it scrolls inside its own box.
0.31.22026-09-18A sweep of one combination now shows its test-segment result. The walk-forward ranks combinations against each other and cannot run on one, but how the combination built on the development segment did over the test segment it never saw is the number a person most wants — so the walk-forward tab draws that curve, and a connected AI receives the same figures. And the sweep-list rows that 0.31.1 left blank now really fill in.
  • On a one-combination result with a test segment, the walk-forward tab opens "Test segment result" instead of "Not enough combos to analyze": that combination's curve over the whole test segment beside Buy & Hold, the two final returns and the dates, and "No verdict" with its reason where the verdict would go. The days are the whole test segment, whatever the walk-forward window settings say.
  • A connected AI receives the same figures. The validation summary's refusal sentence states the combination's test-segment return, Buy & Hold over the same days and its trade count, and the view detail carries the same block. Before, neither the screen nor the AI had these numbers, and the advice to read the backtest numbers pointed at the development segment's.
  • Existing sweep rows that should have gained "No verdict" in 0.31.1 were still blank; fixed. When the meaning of a computed result changes, the app raises its calculation version so old records are recomputed, and 0.31.1 did not raise it. After this update existing result rows go dark once and offer the "Validate" button — press it and the reason and the backtest numbers fill in.
0.31.12026-09-18Sweep-list rows whose verdict cells were empty now say why they are empty. And a result holding one combination no longer receives a verdict at all — cross-validation and the walk-forward RANK combinations against each other, so with a single candidate the number that comes out is a property of the arithmetic, not a finding about the strategy. Such a result still shows its backtest numbers.
  • A row with no verdicts now carries "No verdict" under its combination count, and the hover says which of the two reasons it is: the sweep holds one combination and there is nothing to rank it against, or fewer than two combos cleared the minimum-trades threshold. Before, the row was simply blank, and a result the app could not compute looked exactly like one with nothing to show.
  • A one-combination result is no longer given a verdict on any screen. Setting the trade filter to 0 used to run the checks anyway and print a 100% overfitting probability, which at one combination is arithmetic — that combo IS the median, so the number never varies. It does not mean the strategy is bad; it means there is nothing to measure. The guard now says so, and offers the real recovery (sweep a parameter over a range) instead of a threshold that cannot help.
  • The backtest winner and its Buy & Hold comparison stay in the list even when no verdict could be computed. Those numbers do not depend on the ranking, so a refused validation is no reason to lose them.
  • Cross-validation step 3 is named the same way on screen and to a connected AI. The 0.31.0 rename had survived in eighteen sentences the AI reads, along with the period segment names in the same places — an AI naming a screen the app does not have sends its reader looking for something that is not there.
  • A connected AI is told to read one answer per execution. Printing two at once lets the client truncate the tail silently, and the AI can end up reporting from half a payload.
0.31.02026-09-16The first of the two period segments is now called the development segment, not the selection segment — what happens there is not only picking parameters but building the strategy. Cross-validation's third step is renamed too, and now reads "Picks and verdict". And a session watching a connected AI actually use the app turned up three things to fix: a new result folder for every sweep, parameter ranges carried unchanged onto a different bar interval, and no way to clear the folders its own tidying emptied.
  • On a sweep with a period plan the first segment is the DEVELOPMENT segment; the second is still the test segment. Its old name named an act without its object, and what those days carry is the parameter choice, the walk-forward's first in-sample window and the trial and error. The period bar, the sweep list's period column and the analysis screen's top strip all say it.
  • Cross-validation step 3 is "Picks and verdict". Its old name carried a word left over from when the tab was called the overfitting test — it pointed at a name the screen no longer has.
  • Hover the minimum-trades rule and it says where the number comes from: the default of 30 is our choice, not a statistical boundary. A combo with few trades can top a ranking on luck, which is why it is left out of the verdicts — but the number itself is ours.
  • A connected AI now knows how result folders group. One batch is one dataset and one period plan, not one strategy — several strategies compared on the same data belong in one folder, told apart by their sweep names. Starting a sweep that opens a new folder also reports how many results the same dataset already carries, and where they are filed.
  • A connected AI can delete an EMPTY folder, and that one runs without a confirmation — a folder holds no data of its own. A folder with even one result in it is refused and stays yours to delete in the app. Article 15 of the terms was amended in the same change (the version is unchanged).
  • The AI guidance now covers changing the bar interval. The periods in a strategy count BARS, not time, so a daily grid run on 4h candles covers a sixth of the real time. It also names what must NOT be scaled (stop-loss, fees, a threshold against an indicator's own range such as RSI, anything already in days) and the case where scaling is the wrong answer entirely — a 200-day trend filter, which should read the daily series instead.
  • The Sharpe-to-duration estimate for a forward test gained the half it was missing. That arithmetic is for a strategy fixed in advance; a combination chosen out of a sweep needs longer, or a correction the app does not compute. An AI quoting the duration now says so.
0.30.02026-09-16Sweep range suggestions now know an indicator's value range, and the cause of the occasional failure to read the Sweep list is found and fixed. A threshold compared with an indicator that only moves between 0 and 100, such as RSI, used to get a suggested range past 100. The engine now works out, as it reads a strategy, the range in which each parameter's value changes a result, and the suggestions and the screen stay inside it. In the same window an AI used the app directly the way a person would, and the defects that test found are fixed too.
  • The ranges "Sweep parameters" fills in on "New backtest sweep" stay inside an indicator's value range. An RSI overbought line of 70 used to fill 24 to 162; it now fills 10 to 100 at step 15. The engine works the range out as it reads the strategy: each indicator carries the range its formula guarantees — 0 to 100 for RSI, Stochastic, MFI and ADX, −100 to 0 for Williams %R — and a parameter gets a range only when it is compared directly with such an indicator. When that is not certain, nothing is said.
  • Type a value outside that range and it is struck through faintly in the value row; hover it for the reason — past the end of the range, moving the value further gives the same result. The sweep is not blocked.
  • A second-stage sweep opened from a result stays inside the range too. Widening stops at the end of the range, which is why the card now says the range grows by at most half as much again. When the best combo already sits at the end of the range, the card refines instead of widening.
  • A connected AI gets the same ranges. Reading a strategy's parameters returns, for each one, the values the engine accepts and the range in which the value changes a result, and starting a sweep with values outside it says which of them run the same strategy again. An AI starting the widen sweep a result proposes no longer hits the per-axis value cap.
  • The cause of an occasional error when reading the Sweep list or a validation summary after a sweep is found. The data engine inside the app (DuckDB) remembers parts of a result file it has read, and checks whether the file changed only by its modification time in whole seconds. The results ledger is rewritten several times within a second when a sweep ends, so a read ten seconds later could mix in old pieces. The app mostly re-read and moved on at once, but a test also showed that when the file size matched to the byte, an answer could come back with a row missing and no error. That memory is switched off; measured, reads are as fast as before.
  • When an AI asked about a result that was not open on the screen, it applied the combo number picked on the screen to that result and called it the combo the user picked. Fixed: another result is read on its own default selection, and a change of result resets the combo, fold and plane selection with it.
  • A sweep of an example strategy on its declared ranges no longer leaves an AI unable to tell whether the strategy shorts — every engine run now keeps the strategy document it ran with the result. Cross-validation step 1 and the walk-forward folds told an AI that a period ended on the next day; they now give the last day, as the screen does.
  • When a permission refuses an AI, it names the switch in Settings to turn on in the screen's own words. An AI also knows which page is open: Data, Strategies or Sweep list.
0.29.02026-09-15A connected AI now describes the app more accurately and reads a result starting from what held up. Using 0.28.0 with an AI showed two problems: it listed only the limits of each verdict, which made looking for a strategy sound pointless, and it believed several things about the app that were not true. This release fixes both. In the same window an AI can delete several results at once, a heatmap plane an AI sends is now drawn, and the red bars of the λ histogram now match PBO.
  • Ask an AI how to use the app and it answers with the names on the screen. Connected AIs have a new app guide tool: for every page and every step of the analysis tabs it returns what is shown and what you can press, using the app's real labels. The labels are read from the files the screen itself uses, so a renamed screen renames them too. Things AIs believed wrongly — which page the app opens on, what the grade chip in the sweep list means — are corrected.
  • An AI reads a result in a new order: what held up, the return with its risk beside it, what the verdict could tell from this data, and what to try next. Until now an instruction told it to lead with a loss to Buy & Hold, so the limits came first and the possibilities were buried. The rule against investment advice is unchanged.
  • The last sentence of the "Not distinguished" verdict text now matches the measurement: with a longer period or more folds a strategy with a real edge can leave this band, though a modest edge more often stays in it.
  • When a strategy made money over a period in which Buy & Hold lost, the walk-forward conclusion now says so. Until now it said the strategy lost less than holding.
  • An AI can delete several sweep results or strategies at once — up to 50 per request. One confirmation card lists every name, and a single "Allow" covers them all. Until now each item had its own card, and the AI also asked in the conversation first; you were answering the same question twice, and now you answer it once, on the card. If any item on the list cannot be deleted, no card appears and nothing is deleted. The card text is shorter.
  • A heatmap plane an AI sends is now applied. On a sweep of three or more parameters, an AI that changes the horizontal and vertical axes now changes the map on the Backtest tab. Until now only the AI's side changed and the screen did not, so an AI could describe a map that was not on the screen. Choosing the axes yourself in "Plane axes" works as before.
  • The red bars of the λ histogram on the cross-validation tab now equal the PBO count. PBO counts a split whose λ is exactly 0 as overfit, but the histogram painted it green, in the bin just above 0. On one real result the red bars summed to 8,569 while PBO counted 9,195. The PBO calculation was already right and has not changed.
  • The two notices in the top-right corner — the AI confirmation card and the AI report notice — now stack instead of overlapping. A confirmation card whose name wraps to two lines was already reaching the report notice.
  • Typos and stale wording fixed in the Korean interface, including a tooltip that pointed at a column that no longer exists. Article 21(7) of the Terms of Use now describes what the screen actually shows.
0.28.02026-09-15A large release. Sweeps now carry a period plan. When you create a sweep you split its data into a selection segment and a test segment; the screens that pick combos read the selection segment only, and the walk-forward tab says, for the first time, how the combos they picked did on days they had never seen. Measured first on twenty real results: the backtest winner chosen over the whole span was a different combo in eleven of nineteen once the last three years were hidden, and over those three years the whole-span picks did no better than any combo picked at random. That is what this release is for. The same window rebuilt the cross-validation tab and the sweep list, made the return metric compound, brought several screen names into line, and fixed the window caption and the taskbar icon. Existing results open as before.
  • There is a period plan. A period bar sits under the three columns of the screen that makes a sweep. Set the selection segment and the test segment with the chips (none, 1 to 5 years), the handles or the month fields; a fresh screen opens on a three-year test segment and steps down when the data is shorter. The backtest and the cross-validation read the selection segment only, and the test segment stays the days the combos those two screens picked have never seen. The minimum trade count counts selection-segment trades too. The boundary is fixed when the sweep is made and cannot be moved afterwards — on real results, moving it by one year handed the good verdict to a different sweep. A sweep can still be made without a test segment, as before.
  • The walk-forward tab spends the test segment. On a planned result the walk-forward starts its first validation window on the test segment's first day. It draws the two combos picked on the selection segment — the backtest winner and the cross-validation's most-picked combo — held unchanged as thin solid lines over the same days, and the conclusion says what share of the other eligible combos, held over the same days, each of them beat (50% is what any combo picked at random gets). The median-strategy curve, which was chosen with the whole span in view, leaves planned results — it too was a combo picked with the test segment showing.
  • The analysis screen and the list read the plan. The backtest and cross-validation tabs draw up to the selection segment's last day, and the top bar carries a period strip with the segment the current tab reads lit. Narrowing the analysis window works inside the selection segment only. The sweep list shows a period-bar column by default: every row on one calendar, the selection segment in blue and the test segment in amber, sorted by test days. The comparison board has separate selection-segment and test-segment rows. A second-stage sweep opened from a result inherits the earlier sweep's period, and says so when the new grid cannot fit those dates.
  • The sweep list's verdict columns became pairs of numbers. The verdict-word column is gone — across twenty-seven results it printed one word while the numbers behind it ran from 11.7% to 94.4%. A column whose value never varies carries no information. Every number now stands in one cell beside the thing it is read against: the backtest winner against Buy & Hold, the most-picked combo against any combo on the same splits, its loss share against a random pick's, the walk-forward against Buy & Hold over the days it traded, the drawdown against holding's. Colour comes from those two figures alone. The grade stays as a chip beside the name, and so does how many times the same setup has been run. "Rank by" reads the whole table at return, Sharpe or Sortino. The judgement-table dialog was deleted once nothing led to it; the readings table and the sentence about how often a lucky verdict would show up are now answered by the AI you connect. Existing results fill in their numbers when you press "Validate".
  • The comparison board keeps only what a column cannot do: the settings that differ, the travel from the training score to the validation score drawn as a band on one ruler (with any combo's level beside it, and the colour from that comparison rather than from the drop), and the return bars with the chance range drawn as the zone it is. On twenty real results the walk-forward return never left that range — useless as a colour rule on the table, exactly right as a picture, because you can see how wide it is. Up to eight sweeps compare at once. The toolbar was rearranged too: "Choose columns" leads, the search and the status filter sit on the right, and the new-folder button stands alone behind a divider — every other control changes how you look, and only that one makes something.
  • The three steps of the cross-validation tab (formerly the overfitting test) each ask a question. The first asks where the training-period winner ranks in the validation period, and the middle card answers; the histogram has a combo-count axis and its bars are real counts. The second asks whether that rank changes when the split changes, in the same shape, and the λ card became a line, since the rank fixes its value. The third asks which setting got picked and how it did once picked: click a cell on the IS-winner map and that combo's training and validation distributions over the splits it won appear beside it, with a third line for what any combo scored on those same splits — that line separates a gap the combo caused from one the market caused. PBO, OOS rank and the loss probability fold behind summary lines that carry their values. A rank past the halfway mark reads as bottom N% rather than top N%, and the arrow that pointed the opposite way from the cards is gone. The most-picked combo's figures are now measured on the splits it actually won.
  • The return metric compounds. It was the simple mean of daily returns, which ranked a combo alternating +50% and −40% above one gaining 1% a day; it is now the mean daily log growth. Return scores on screen are stated per year so windows of different lengths compare, while a curve's final figure stays the total over its days. One metric had five names — cumulative return, cumulative profit, annualised return, annual return, mean daily return — and now has one, return, with its scores called annual return. The metric pills read return · Sharpe · Sortino in one order everywhere, and the default stays Sharpe. On twenty real results the winner was unchanged on fifteen and no verdict band moved.
  • Names now agree across screens. The overfitting-test tab is "Cross-validation", the recombination-check axis is "Cross-validation" too, and walk-forward performance is "Walk-forward analysis". The sidebar says "Sweep list" and "Backtest", with a list icon and a line chart. In tables the held benchmark is "Buy & Hold" wherever a column names it, and the random pick is "Any combo" (the chance range keeps its name). Article 2(5) of the Terms of Use follows the axis names; the Terms' version is unchanged, so you are not asked to accept anything.
  • The AI you connect works on the plan too. start_sweep takes a period — a test length or three dates — and, when it is omitted, runs on the plan the app itself would open on. A planned result's validation summary carries a test-segment block with the two fixed picks' returns, the share each beat and Buy & Hold over the same days, and the guide has a period-plan section. The results ledger is at calc version 14, schema 9.
  • The window caption is empty — the icon and the name sat in it and again in the sidebar just below, so one thing read as two. The taskbar and Alt+Tab still name the app. The blank-page taskbar icon after an update is fixed: Windows 11 draws that button from the Start-menu shortcut, not from the window, and the shortcut still described the first install's executable. Every install now remakes the Start-menu and desktop shortcuts. A shortcut you pinned to the taskbar yourself is left alone, so if that one shows a blank page, unpin it and pin it again.
  • Smaller things. The sentence saying a finer grid does not sharpen the verdict is back, inside the cross-validation summary's fold. The backtest tab's combo-map picker is labelled as a display metric, with return, Sharpe and Sortino first. The walk-forward's second-step guidance is two sentences, and the fold-table toggle leads its line.
0.27.12026-09-10A small release. The AI indicator at the foot of the sidebar names the AI that called last and stops counting the rest. The guidance an AI you connect reads gained a line too: do not check whether the app is running before calling a tool. One AI had been doing exactly that from a command line, and in the course of it the key this app hands an AI ended up written into a conversation transcript.
  • The AI indicator in the sidebar names the AI that called last, and stops there. It used to name one and add a number for the others, and that number was something a reader had to work out for no change in what they would do. The time at the end of the line is the run's most recent activity, so the name is now that activity's own.
  • An AI you connect no longer goes looking for the app from a command line. The guidance opens with a section saying that when every tool call fails, the app is probably closed; one AI read it as a reason to check BEFORE calling and went hunting for the port in a shell. That section now says plainly that the call is the check, and that there is no port to probe, no process to look for, and no shell command anywhere in the workflow.
  • The Terms of Use no longer list release notes among what the website provides. The link into that page came off the download page, so leaving it in the list would be a promise nothing keeps. The notes themselves are unchanged and the update dialog still shows them. The version of the Terms is unchanged, so you are not asked to accept anything.
0.27.02026-09-10A strategy document became a program. Until now a document was where you picked indicators and wrote entry and exit conditions, and once a trade opened it had nothing more to say until the trade ended. From this release a document reads the other pairs of its own run, reads a longer bar of its own pair, and reads back the earlier bars of a column it just computed. And it can act in the middle of a trade — confirming its own entries and exits, setting its stop at every bar, exiting in a word of its own, locking a pair after bad trades, and trading several pairs out of one wallet. All six rounds worked the same way: measure the rule on the reference implementation first, then make the engine follow it. The reference itself moved to its current release in the same window and one rule moved with it, noted below. Existing documents keep working; everything new here has to be declared before it does anything.
  • A document reads the other pairs of its own run. You can write a rule that buys only when Bitcoin is rising, or steps aside when the whole market falls together. It can never see another pair's future — the moment it can, a backtest starts producing returns that could not have happened.
  • A document reads a longer bar of its own pair: trade on the hourly bar while reading the trend on the four-hour one. A longer bar is readable only once it has closed. Reading a four-hour bar that is still forming is the same kind of look-ahead, and the boundary was measured on the reference implementation rather than assumed.
  • A computed column reads its own earlier bars, so an indicator that looks back at itself — the highest price so far, for instance — can be written in the document. The bar being computed reads as not yet there.
  • A document confirms its own entries and exits. It can turn down an entry its own rules produced at the wrong moment, and decide how much to put in. These documents also trade several pairs out of one wallet, and whichever pair's turn it is sees every position the run holds open — so a rule can look at the whole basket before it decides.
  • A document sets its own stop and exits in its own word. It can decide the stop distance afresh at every bar — tightening as profit grows, say — and it can name the reason it closed a trade, which then appears in the trade list as written. Settings that hold an exit back until the trade is in profit came along with it.
  • A document locks a pair after bad trades: a pause after any exit, a stop after a run of losing stops, and two that watch recent results — their drawdown, and whether they add up to enough. A lock only refuses new entries; a trade already open runs on.
  • All six are opt-in. A document that declares none of them computes exactly what it computed before, and the AI you have connected can read the full list of what is now available straight from `get_strategy_spec`. Write a key the document does not know and it will tell you what exists before it saves.
  • The reference implementation moved to its current release and one rule moved with it: the fill price of an exit taken at a target return is now rounded to that pair's price tick. What decides whether the target was reached is unchanged. A strategy with trades that ended at a target return may show slightly different numbers in this release. This is not a bug being fixed — it is the reference being followed.
  • The AI indicator in the sidebar names the AI that actually called. It used to print whatever string the client introduced itself with, and one AI can send several names, some of them built out of this app's own name and your conversation titles. One was counted as three.
  • The notice screen in Settings is now called Open-source license notices — the name says what is being noticed and separates it from the Terms row above it. The contents and the file are unchanged.
0.26.12026-09-08A fix for 0.26.0, which could not install its own skill. The methodology skill ships with a description field, 0.26.0 grew that field two characters past the limit a client will accept, and the consequences were worse than the size of the mistake: Claude refused the upload and said why, while Antigravity refused it and said nothing at all — the skill simply never appeared. The app still reported the client as connected, correctly by its own definition (the configuration was in place) and unhelpfully in the moment. The description is shorter now, and a check reads it inside each of the three packaged artifacts before they ship, so the next one cannot leave here over the limit.
  • The AI client screen now tells Setup complete and Connected apart. Setup is the app’s own job and finishes when you press the button; a connection is only confirmed once the client actually calls the app. Until now one word covered both, with a line underneath explaining that it only meant the setup was in place — a word that needs an explanation is the wrong word. A row that has only reached setup now also says what to do about it: open the client and ask it for something. No record of a call does not mean the install failed; the record clears after 30 minutes, so a client you have not used in a while looks the same, and the screen says so.
  • The installer and uninstaller carry the app icon instead of the packaging tool default.
  • On the AI client screen, the button for the folder holding the two Claude files now sits beside the sentence that names it and says Copy path rather than Copy — the word beside a sentence about a folder should say what it will put on the clipboard.
  • The third-party open-source notice can be read inside the app: Settings → Open-source notices. It carries the copyright statements and full licence texts for the open-source components this app uses, and the same file is installed alongside the app. Until now it existed only in the installation folder, which is hard to find, and on the website, which is an awkward place to reach while using the app.
  • The Terms of Use and the Privacy Policy are now version 1.0.0. The number went down, and that is not a reversal — it is a decision to stop counting. Since 29 August these documents were amended four times and reached 1.0.4, and through all of it this product had no users but the person who made it. A version here is the number that says who agreed to what; with no agreement to point at, four numbers pointed at nothing. Numbering resumes with the first amendment made once there are real users. The app treats this as an amendment, so it will ask for consent once more.
0.26.02026-09-08Several coins can now go into one sweep. The engine has always been able to trade a basket — one shared wallet, positions taken across several coins — and the analysis screens have always been able to draw one, but there was no way to start one: the composer asked for a single dataset and the tools took a single pair. Now you pick several and they run together as one equal-weight basket, with one verdict over the whole thing rather than one per coin. Equal weight is also enforced now rather than announced — every coin gets a position slot it cannot lose to whichever coin happens to trade first, which is what the result file was already claiming.
  • A strategy is checked by the engine before it is saved, whether you save it in the app or an AI client saves it for you. Until now a document the engine would refuse could be saved anyway, and you found out at the next sweep. The save is now refused with the engine own sentence about what is wrong with the document.
  • The engine answers what it accepts, instead of a document answering for it. An AI client writing a strategy can now read the TOML schema, the expression language, the indicator list and the two script scopes out of the engine binary this install actually runs. A field session on 0.25.0 is why: with none of that reachable, the agent guessed, built five broken probe strategies to interrogate the engine, got a wrong answer from them, and reported that position sizing and scaled entry were impossible here. They were never impossible.
  • An AI client can delete a strategy, and you confirm it in the app. The client asks, the app asks you, and the button is in your own window — nothing is deleted without that. Sweep results the strategy produced are left alone.
  • Checking whether a result repeats on other coins now has a rule. An AI client has to name the coins before it runs them and report how many held out of how many it checked. Running markets until one passes and quoting that one is the same move as tuning parameters until the number looks good, and the app now says so rather than only asking for the check.
  • The Terms of Use and the Privacy Policy are now version 1.0.4. The AI permission list gained strategy deletion. Alongside it, every capability an AI client has was read against the published terms, and sentences that had been wrong since 1.0 were corrected — the heaviest of them said no path existed by which an entire price file could reach an AI client, and one query can do it.
0.25.02026-09-07Agents now see what the screen sees. A good many of the numbers a person reads were never reaching them — the two counts under the combo map, the radar's eight ranks, how many combinations were left out of a run, what a hatched cell means, the figures behind the next-sweep suggestion. So asked whether a sweep was any good, an agent could answer from a single combination's tiles while the screen showed that nothing in the sweep beat simply holding. Eleven screens were compared against what an agent receives, and the gaps closed.
  • Three example strategies now, and the first sweep opens at a sensible size. The new one is a Donchian breakout — the classic of trend following, and the only one of the three that is not a moving-average crossover — and the EMA example's opening grid went from 558 combinations to 64. Those old ranges existed to reproduce a reference corpus, not because anyone chose them as a first screen; all three now start at the size this app recommends.
  • A sweep that filled no trades says so. An entry condition can be written so that no bar can satisfy it, and such a run still finishes cleanly, writes its results and sits in the list like any other. That row is now marked, and the mark says every number and verdict on it was computed over an empty result — which is not the same as the strategy performing badly.
  • A sweep continued from a widened range opens on the same map as the one before it. Widening changes how many values an axis has, which changed which two parameters the map ranks first, so the follow-up opened on a different plane and there was nothing to compare it against.
  • Two lines in the criteria panel were wrong. The walk-forward grade is decided by the selection percentile rather than by comparing returns, and there is one not-judged case rather than two. What the screen says and what it computes now agree.
  • The AI client dialog hands back the location of the two Claude files again — it lost the path whenever it was opened from settings. The wording changed too: the files are saved on this computer but are not installed into Claude, which is what that screen is there to walk you through.
0.24.12026-09-07The widen card on a finished result now grows the range instead of moving it. When the best combo sat at the end of a range, the card used to slide the whole range that way until the combo was in the middle, which dropped the values at the far end. It now grows only the side the best is on and leaves the other end alone. Nothing you swept is dropped, so the two runs compare directly, and the grid grows a little on each widen instead of circling at the same size.
  • When the best combo sits at the end of two parameters, both of those axes grow on their own side. A parameter whose best is already inside its range is left untouched.
0.24.02026-09-07Warm-up candles are no longer a number a person has to keep. What you write in a strategy file is how many leading candles an indicator consumes before its first value — and how many that is depends on the sweep range, which nobody knows while writing the strategy. So the number is a floor now: when a range needs more, the engine raises it for that run and reports what it used. Until this release the same situation refused the sweep before it started, and the person had to open the strategy file and edit the number.
  • A sweep is no longer refused for having a wider range. The range the widen card proposes and one you set yourself both simply run. The warm-up actually used is recorded in the result and stated on the run — nothing changes quietly.
  • Setting up a sweep now asks the engine before you start. Three things appear under the combo count, each only when it applies: how many combos will actually run (and why fewer, if fewer), the warm-up this range needs, and — for a range that cannot run at all — the reason, with the start button disabled. A range the engine takes whole shows none of them.
  • Two guidance comments in the new-strategy file were wrong after this change. They said the warm-up number had to be at least what an indicator needs; they now say it is a floor.
  • An AI you connect gets the same fact: starting a sweep answers with a line whenever the warm-up was raised.
0.23.02026-09-06The analysis screens were rebuilt one page at a time. Until now the first thing a screen did was explain: a paragraph, a table under it, and the number the verdict rested on somewhere inside. Now the numbers come first, with the range chance alone would produce drawn beside them, and the arithmetic and the reading are folded away. Trade-level diagnostics went from seven screens to three, with the other four folded under the combo you picked. And a finished result now proposes the next sweep — moving the range when the best combo sits at its boundary, tightening it when the grid is coarse.
  • The overfitting test and the walk-forward analysis open with three numbers. Beside each one is the range chance alone would produce: inside it, the number is not evidence of skill; outside it, there is something to talk about. The loss probability gained a reference line — what picking any combo from this sweep at random would have lost. And the out-of-sample standing is written as a rank, not a percentage: 45.8% read as top 45.8%, when it meant 267th of 492.
  • Trade-level diagnostics is three screens now: every combo as a curve, the selection, and the selected combo in detail — with equity and P/L, stop-loss, exit reasons and trade distribution as four folds under the last one. They open closed, and each heading states the figure inside before you open it. The heatmap carries four layers as chips, so you light only what you need, and the selected combo is set against the rest on an eight-axis radar. An AI you connect sees the same three screens.
  • The sweep list reads in the same order as the result screens: the verdict badge leads and the numbers support it. Return and buy-and-hold return stand in their own columns, maximum drawdown joined them, and the columns you rarely read start folded away.
  • Setting up a sweep now opens with a proposed range and step. Each parameter is prefilled with seven values around its default, or with the range the strategy file declares for itself when it declares one. Every row says how many values it makes and which, and the total number of combos stands directly under the rows. An AI you connect gets the same proposal.
  • A finished result proposes the next sweep. A best combo at the boundary of its range means nothing beyond that end was ever observed, so the proposal keeps the step and moves the range until that combo sits in the middle. A best inside the range is looked at again around itself, at half the step. When both ends are bracketed and no step can get finer, the screen says there is nothing a re-sweep would add. The button only fills the composer — you start the run yourself — and it carries the earlier run dataset and fee, and files both results in one folder.
  • One word for overfitting across the app, in Korean.
0.22.02026-09-05The trade-diagnostics screen was telling you something false about combinations with few trades. It greyed them out, and a greyed cell reads as one the maths left out — but that screen leaves nothing out: every combination is drawn and every one can be clicked. The dimming is gone. Thinly-sampled cells are hatched instead, and the screen now says in words which ones they are, both for the combination you have selected and for the plane you are looking at. Your AI can also tell you how many times this data has been swept, instead of counting from memory.
  • Combinations with too few trades are hatched, not dimmed. Dimming reads as exclusion, and on this screen nothing is excluded — the trade floor applies to the overfitting check and the walk-forward analysis, not here. So the dimming was drawing something that was not true, and it also hid which cells were thin behind a plain grey. Hatching marks them without pretending they were dropped.
  • The screen says it in words, in two places. When the combination you selected is thin, the caveat sits next to its numbers. When a plane holds thin cells, a line above the map says how many and points at the hatching. If every cell in the plane is thin, it says that instead — the same fact, stated the way that plane makes it true.
  • Why this matters more than it looks. A combination measured on seven trades can show a return of +19%, a drawdown of -2% and a profit factor above six. Every one of those numbers is real and none of them means anything, because a single lucky trade moves all three. Until now that cell looked exactly like one measured on seven hundred trades.
  • Your AI can count how many times this data has been swept. Searching the same data repeatedly and keeping the best result is itself a form of overfitting, and nothing was counting it — a connected AI had to rely on its own memory of its own calls. The two verdict tools now report how many sweeps this dataset has carried, how many of those used this strategy, and how many strategies have been tried on it. It counts what the workspace still holds, so deleting a result lowers it: read it as a floor, not a total.
0.21.02026-09-04This release is about being able to write a strategy yourself. The example file a new strategy opens with was rewritten to actually show what the engine accepts, and saving now runs the engine over it: a strategy that does not parse is not saved, and the engine says where it went wrong. Until now only an AI's strategies were checked — one typed in the app became a file with nothing looking at it, and the mistake surfaced later, when a sweep tried to start. Saving also tells you it happened. And the two different returns that shared one name — the screen's and the ledger's — now say which is which.
  • Saving a strategy runs the engine over it. Until now only strategies saved by an AI were checked; one typed into the app became a file with nothing looking at it. A wrong indicator name or a malformed condition saved cleanly and failed later, when a sweep started. Both paths are now checked the same way. A strategy that does not parse is not saved, and the engine says where and why — a wrong indicator name prints every indicator there is, and referring to a multi-output indicator by its bare name prints the outputs you may choose from. Those sentences reach you in the engine's own English, untranslated.
  • The new-strategy example teaches. It used to show one kind of indicator, twice, in the same shape — enough to save, not enough to write anything else from. Each block now shows something different: how to reference one output of a multi-output indicator, how to write a period as a plain number, how to point an indicator at something other than the close, and how to write comparisons, and/or, and a look back one bar in a condition. Commented examples and a short syntax summary follow, and a resident check feeds those examples to the real engine on every run so they cannot quietly stop working.
  • Saving says so. Pressing save used to flash the screen and nothing else. Creating a strategy now takes you to the strategy list and names what you made; saving an edit keeps you in the editor and says it saved.
  • The two returns have names. The return on the analysis screen and the return an AI reads out of the SQL ledger are on different bases. The screen compounds — what the balance actually does — and the ledger adds daily returns up. Both are correct, and sharing one name was enough for an AI in real use to read the difference as a product defect and start writing a bug report. The result data now carries which basis it used, and the descriptions an AI reads name them apart. The gap grows with volatility, and it grows in the direction where the ledger looks better than the account.
  • Two wrong passages in the AI guidance are gone. It described three return-related columns as interchangeable; they are not. And a SQL recipe in it could crown a combination the analysis had already excluded for having too few trades — on two of the five results we had, it did. The recipe is deleted, and the AI now takes the best combination from a value it already receives.
0.20.02026-09-03Repairs from the second real-use test. Reading the trade ledger through an AI failed on any column that carried a date; that is fixed. A typo in an AI's SQL used to make the app rebuild its whole in-memory database; it no longer does. How the walk-forward equity curve is actually built is now stated plainly, both in the guidance the AI reads and on screen, and two outdated screen explanations now say the current rules. And when an AI reports a bug, it now shows you the report and asks first.
  • The trade ledger's date columns can be read by an AI. Reading the trade ledger through run_query failed whenever the entry and exit time columns were in the result. Values of every kind — dates, times, decimals, lists — now come through, and times are rendered with an explicit time zone. Responses to queries that already worked are unchanged, byte for byte.
  • A SQL typo no longer rebuilds the database. When an AI misspelled a column name, the app mistook that statement error for database damage, threw away its in-memory instance and rebuilt it — and for the next minute could not recover from real damage either. Statement errors now come back as errors, and recovery runs only on genuine damage signatures.
  • How the walk-forward curve is built is now written down. The walk-forward equity curve is stitched from the returns each period's newly chosen combination would have earned had it been running from the start, cut to that period. Nothing is closed, handed over or charged a fee on the day one period gives way to the next. The verdict is unaffected, but as a money curve of what re-optimizing and trading would have earned, it is an approximation. That fact appeared nowhere in the AI guidance or the screen text, and one sentence said the opposite; both surfaces now state it.
  • Outdated screen explanations corrected. The validation-chain summary on the walk-forward screen still stated an old rule — that returns below were not worth reading unless PBO passed. The current rule is that no verdict stands in for another, and the text now says so; the four criteria paragraphs in the verdict matrix were also rewritten in plain language. Every figure and fact is unchanged.
  • AI bug reports are shown to you first. When a connected AI reports a bug to the developer, the report leaves your computer, and some AI clients block that call unless the user has agreed to it. In real use the call was blocked and the AI did not say so. The guidance now tells the AI to show you the report, send it only after you agree, and tell you when it was blocked. Reports carry no local values such as sweep identifiers or file paths.
  • Two small ones. Order-quantity steps for SOL, XRP, BNB, TRX, LINK and AVAX are now pinned, so absolute profit follows the exchange's rounding for those pairs as it already did for BTC, ETH, ADA and DOGE. The first line of the app log carries the version, and a tool-error line names the tool.
0.19.02026-09-03Two pieces of guidance stopped being advice. An AI that writes an oversized parameter grid is now refused before anything is created, and the refusal computes the fix; and choosing where a result goes is now a question it has to answer rather than an option it can skip. Both were advisory in 0.18.0, and both were measured being skipped in real use. A third change repairs guidance of ours that told an agent two opposite things about widening a search range.
  • Oversized parameter grids are refused, not warned about. A grid an AI writes for a sweep is now capped at 8 values on any one axis and 512 combinations in total. Over either, the sweep does not start — no job, no result, no folder — and the refusal names each axis that is too fine and the step that covers the same range within the cap. This can change what your assistant is able to run: a sweep it started before may now come back refused with instructions. The reason is not precision. This app's own measurement puts a 30-combination sweep and a 492-combination one at the same precision, so extra points inside a range buy nothing; what they do buy is a larger search, and the larger the search, the likelier it turns up a combination that only looks good by chance. Widening a range is good practice — the refusal asks for a bigger step, never a smaller range. The caps apply to the grid the AI writes; the ranges a strategy file declares for itself are untouched.
  • Naming a folder is now an answer rather than an option. 0.18.0 let an AI name a folder as it started a sweep. Measured in use, it never did — the argument was optional, it was skipped, and results kept piling up unfiled. The AI must now either name a folder or answer that the run should not be filed. Answering that needs no extra permission, so a connection that was never granted folder rights can still run sweeps exactly as before.
  • Guidance that told an AI two opposite things. Our own documents called a follow-up sweep on the same data a selection risk, and never separated that from the case where the best value sits at the very edge of the range and the range genuinely has to be widened. A connected assistant quoted that rule back to us and declined to widen the range — correctly, by what we had written. The two are now named apart: extending a range because the optimum sat at its end is expected of you, with the step raised so the count stays inside the caps, while following the winning cell inward with ever finer grids until a verdict improves is not. The same guidance now also prescribes one coarse wide sweep followed by one denser look at the region worth it, and says plainly that choosing that region from the first result is itself a choice made from data.
  • A folder can no longer be named `none`, and the app now says why. That word is how an AI answers that a run should not be filed, so a folder carrying it would shadow the answer. Typing it used to produce an error about blank or over-long names, neither of which was true of what you typed. If you already have a folder with that name, renaming it is enough — the reservation only blocks the name being put on a folder, never taken off.
0.18.02026-09-03An AI agent can now name the folder a sweep lands in as it starts the sweep, and the validation summary reports whether the best combination sits at the end of the searched range. Both facts existed already — neither was where an agent actually makes its decision, so both were routinely missed. A related fix: picking the best combination ignored the minimum-trades filter.
  • A sweep can name its folder when it starts. Filing used to be two steps — create the folder, then move the finished result into it — and agents skipped both often enough that results simply piled up unfiled. A sweep now takes a folder NAME: an existing folder with that name is reused, a new one is created. The result moves in the moment the run finishes, and asking for the job status says where it landed. If no folder was named, the completion answer says how to file it, at the moment there is something to file. This works only when the AI connection also has the "Organise results" permission — without it the sweep is not started at all and the answer says why, so nothing runs half way.
  • The validation summary reports the edge of the searched range. When the best-performing combination sits at the very end of a swept parameter range, nothing beyond that end was ever tested, so there is no way to tell whether it is a real optimum — widening the range may well find a better one. That fact used to live only in the detail-screen description, not in the response an agent reads when it judges a strategy. The summary now carries two combinations — the best performer, and the one repeatedly chosen across splits — each with the basis it was picked on, plus the remedy when either sits at an end. When neither does, it says so in one line and moves on.
  • Fixed: picking the best combination ignored the minimum-trades filter. Validation excludes combinations with fewer than the required number of trades (30 by default), but the screen description picked its best combination without applying that same filter. A combination the analysis had already excluded could therefore be reported as the best, and four of the nine results we checked did exactly that. In one of them the excluded winner sat in the interior of the grid, which suppressed the range-edge warning entirely. Both places now use the same basis.
0.17.02026-09-02A fix for the verdict column going blank in real use. After running several sweeps back to back, the list could look as if every verdict had vanished — the records were intact; the reader had failed once and never recovered. It now recovers on its own, and the screen says so while it cannot read. The validation guidance for AI agents also moved into the tool descriptions.
  • Fixed the verdict column suddenly looking empty. After several sweeps in a row, every row in the list could fall back to the "Compute verdict matrix" button. The verdict records themselves were intact; the internal database engine reading them had hit one error during a burst of writes and never recovered. A failed read now rebuilds the engine and retries immediately, and the screen comes back on its next refresh. If you already hit this state, restarting the app also recovers it — no records were lost.
  • While records cannot be read, the screen says so. That state used to be indistinguishable from a result that simply has not been computed yet. The list now shows a warning line, and where the compute button would have been, a "Records unreadable" marker appears instead of a button that could only fail. It retries automatically, so waiting brings it back.
  • Verdict-record saves batch under load. When an AI validates several sweeps back to back, each record used to rewrite the whole record file; records arriving while a write is in progress now ride the next write together. A single record on an idle app still lands immediately, exactly as before.
  • The validation guidance for AI agents moved into the tool descriptions. How large a parameter grid should be for the validation to mean anything, that a best value pinned at the edge of the searched range calls for a wider re-run, and that a batch of results should be filed into a folder created first — guidance that lived only in a separate document, where agents kept missing it. The description of the very tool that starts a sweep now says it.
  • The terms document's addendum misstated its own version. The 1.0.3 document's addendum said 1.0.1 and its effective-date history was stale. Only the notation was corrected; no clause changed.
0.16.02026-09-02Fixes for what a first install on a new machine ran into. The ChatGPT connection guidance now says that appearing in the plugin list is not enough and where to choose the run location, and closing a dialog opened from Settings leaves Settings on screen. Reports left by an AI have a permanent way back in, and the settings screen has a real type hierarchy so you can tell what is what at a glance. The first-run guide now steps aside when an AI actually connects, and remembers it.
  • The ChatGPT guidance covers the run location. The old sentence read as if seeing TestMyLogic in the plugin list meant you were done, but a conversation running in the cloud cannot reach the app on your computer however the list looks. The guidance now says both what to check in the list and that the conversation has to start in the Work tab with its run location set to your computer.
  • Closing a dialog opened from Settings no longer closes Settings. The data storage location, the client connector, feedback and the legal documents all closed the settings screen on their way open, so finishing one and changing another meant reopening Settings. They now open on top of it, and closing one returns you to it. Escape closes only the frontmost dialog.
  • The AI report inbox has a permanent entrance. Reports could only be opened from the notice card, and once everything was read that card disappeared with no way back. Settings now carries an entrance in its AI section, grouped with the auto-send control directly below it. The permission screen also discloses that the reporting channel is part of the default grant.
  • The settings screen reads at a glance. Its section headings were the smallest and faintest text on the screen, weaker than the rows they grouped. Headings, row names and explanations are now three distinct tiers, and the heading contrast meets the accessibility threshold.
  • The first-run guide recognises a connection. The screen asks you to connect an AI client, but doing so changed nothing and restarting the app brought the screen back. Connecting one now retires the guide, and that is remembered across restarts.
  • The ChatGPT plugin list shows an icon. TestMyLogic was the only row with an empty icon slot. Update and restart ChatGPT and it appears — you do not need to reconnect in the connector.
0.15.02026-09-01A connected AI can now report the product's bugs and improvement ideas directly. Reports stay in an inbox on your computer, and by default a copy — with identifying values such as paths masked — is sent to the developer automatically; you can turn that off in settings. To put this feature in writing, the Terms of Use and Privacy Policy were amended to 1.0.3, so the app asks for your consent again on first launch after the update. Also in this release: an AI connection without the path permission no longer receives your computer's folder paths in any tool answer, and a damaged data file is now listed to the AI together with the fact that it could not be read.
  • AIs report bugs and improvements. When a connected AI client finds the product misbehaving, it can file a report with a new tool. Reports land first in an inbox on your computer, readable inside the app — a notice card appears when a new one arrives — and with the "AI report auto-send" setting on (the default), they are also sent to the developer automatically. The transmitted copy leaves only after identifying values this machine can derive on its own — such as storage paths carrying your account name — are masked, and no reply email or diagnostic log rides this channel. Turned off, reports stay on this computer only. Each report in the inbox shows whether it was sent, and if you want to send one yourself with an email or the diagnostic log attached, its "Forward as feedback" button opens the existing feedback form pre-filled.
  • The Terms of Use and Privacy Policy moved to 1.0.3. The automatic transmission above is a new communication, so Article 15 gained Clause 11 stating what is sent and when, and Section 1 of the Policy gained the matching item. On first launch after the update the app asks you to consent to the two amended documents again, and until you do, the app transmits no reports. No other clause changed in wording or number.
  • AI connections without the permission no longer see paths. An AI connection with the "Data storage location path" permission off now receives no folder path of this computer (on Windows those usually contain your account name) in any tool answer — success or error alike; a stand-in marker for the data location takes its place so the AI keeps the context. Previously, some error sentences carried paths regardless of the permission setting.
  • Damaged data files no longer stay silent. When the app cannot read a data file — a corrupted price file, for example — it used to simply drop it from the lists an AI sees, indistinguishable from having no data at all. List tools now answer with the count and names of unreadable files, so an AI can tell absent data from unreadable data — and, with the reporting feature above, let you know.
0.14.02026-09-01The app opens much faster. The time before the window appears is less than half what it was, the empty frame that used to flash on launch is gone, and the app no longer reads the disk continuously while it just sits there. And the confirmation that appears when an AI asks to overwrite a strategy or delete a result now **names the AI that actually asked** — it used to name whichever AI had connected most recently.
  • Fixed a confirmation that named the wrong AI. With several AI clients connected, the prompt asking whether to overwrite a strategy or delete a sweep result showed the name of the most recently connected client rather than the one making the request. That is the screen where a person approves a deletion, so it had to be corrected. The app now tells each request's connection apart. If an AI program does not support that, the app does not guess — it says the AI could not be identified, because no name is better than a wrong one. The same value was going into the deletion log, so a result you deleted yourself was recorded under an AI's name; that is fixed too.
  • Startup is faster. The window now appears about 0.6 seconds after launch instead of 1.6, and the app becomes usable sooner as well. The largest part was starting the background program at the same time as the window rather than after it. The brief empty frame that flashed on launch is also gone — it came from restoring the window's saved size, which momentarily showed a window that had nothing to draw yet.
  • The app stops reading the disk while idle. The management screen checks your data lists periodically, and every check was re-reading every file from scratch even when nothing had changed. It now re-reads only when a file actually changes. Memory use right after launch is much lower too, because the app no longer loads the analysis data for a screen you have not opened. That data is loaded when you open the analysis screen instead, so a large result may take a moment longer to open than before.
  • The screen speaks while the background program starts. It used to show the same thing for up to twenty seconds and then a screen written for a developer. It now says when things are taking longer than usual, and if the program still does not start, it shows something a person can read — what happened and what to do first, with the technical detail folded away until you need it for a support request. Your account name no longer appears on that screen. If the program does start late, the window moves to the app on its own.
  • The bottom of the sidebar was tidied. There were two status readouts that said different things while looking alike, and both were cut off so neither could be read. The background program's status is no longer shown while everything is fine (it speaks up when something is wrong), leaving one AI activity readout. When several AI clients are connected it names the most recent one and counts the rest, and hovering shows the full list. The ChatGPT desktop app, which used to appear under an internal name, now shows its product name.
0.13.02026-08-31Connected AI clients now need a key to reach the app, and they start with permission to read your results and nothing else. You decide what else they may do, in the settings screen. Overwriting a strategy and deleting a sweep result now ask you first, every time. The Terms of Use and the privacy policy were amended to match, so the app will ask you to accept them again.
  • AI clients now present a credential. Until this release, any program running on your computer could send commands to the app's background program while the app was open; now it refuses anything that does not carry the key the app issued. This is the narrow kind of protection: the key sits in a file under your own account, so a program running as you can still read it. That limit is stated in the Terms of Use rather than glossed over.
  • A connected AI starts with one permission: reading your results and lists. Ten more — reading strategy text, running SQL over your stored data, capturing the app window, handing over your workspace path, moving the screen, running sweeps, downloading price data, saving strategies, organising results, deleting them — are off until you turn them on in Settings, AI client connections. Each one says what is sent to your AI provider when it is on.
  • Overwriting an existing strategy and deleting a sweep result now ask, every time, even with the permission on. The question appears in the app and nothing happens until it is answered. An AI client cannot answer it through a tool call — though a program that drives your screen can press the button, which is why nothing here claims a person answered.
  • YOU WILL NEED TO RECONNECT. An AI client configured before this release holds a setup with no key in it and will be refused. Open Settings, AI client connections, press Disconnect and then Connect, and restart that program. Then turn on the permissions you want — they start read-only.
  • The Terms of Use and the privacy policy moved to 1.0.2, so the app asks you to accept them again. Three rounds of work had made the published text wrong: it said there was no login on the app's internal communication, and it said an AI client could act on certain things with no further step on your part. Both had stopped being true. The amendment narrows what an AI can do and what leaves your computer, so it is a correction in your favour.
  • Deleting a sweep result now leaves one line in the background program's log saying it happened. The deletion is still permanent with no undo; until now it left no trace at all, so a question about where a result went had no answer anywhere.
  • The AI client connections screen now names the three desktop apps it works with, puts the download addresses at the top where the question is asked, and lets you copy the folder holding the two Claude files instead of retyping it.
0.12.12026-08-30A small follow-up to 0.12.0. The update download is now reachable from the settings screen even after the notice has been dismissed, and two sentences in the English Terms of Use now describe the update setting in the words the app actually shows.
  • Settings gained a "Start download" button beside the app version, shown whenever a new version is waiting and has not been fetched yet. Previously the only way to start that download was the notice itself, so closing the notice left no way to fetch the update until the app was restarted. This could only happen under "Check only".
  • Two sentences in the English Terms of Use described the automatic-update setting using words the app does not display. They now use the labels on the settings screen: "Do not check", "Check only" and "Check and download".
  • The Korean text is the authoritative version of both documents and did not change, so this is a correction to a translation rather than an amendment. You are not asked to agree again.
  • While an amendment is waiting for your agreement, the app answers a connected AI client with a short explanation of what happens to your existing data. That sentence had not been updated with the documents; it now states what the current Terms state.
0.12.02026-08-30Whether updates are fetched ahead of time is now your choice. The Terms of Use and the Privacy Policy have also been amended to 1.0.1, correcting sentences that still described things the app no longer does. The first launch after this update will ask you to accept the two amended documents.
  • The settings screen gained "Automatic updates" — choose "Do not check", "Check only", or "Check and download". The default is "Check and download", which is exactly what the app did before, so doing nothing changes nothing.
  • Under "Check only" you are told a new version exists and the download starts when you press the button in that notice. "Do not check" turns the automatic check off entirely, and the "Check for updates" button in settings stays live even then.
  • Installing still always requires your press, and the downloaded file's signature is verified before it runs.
  • The Terms of Use and Privacy Policy are now version 1.0.1. Sentences that still described what the last two updates removed — launching at Windows sign-in, an update check that could not be turned off — were corrected to match what the software actually does.
  • What the app shows before you accept an amendment is now stated accurately too: only the consent screen opens, but the results and data you already have are neither deleted nor locked, and are usable the moment you accept. They are stored in open formats, so they can be read without the app.
  • What changed, and how, is written in the "Revision history" at the top of both documents.
0.11.02026-08-29The app no longer starts itself at Windows sign-in and keeps no tray icon. The window is the app: closing it now stops everything, the background program included — with a warning first if work is still running. Installs from earlier versions clean up the old sign-in registration on their first launch after this update.
  • Launch-at-sign-in is gone entirely — removed, not merely turned off. Nothing of this app stays resident while you are not using it, and the Windows startup list stays yours: the app never writes itself there again.
  • The tray icon is gone with it. Open the window to work; close it to stop.
  • Closing the window stops the background program and the backtest engine with it. If a download or a sweep is still running, the app asks first — cancelling keeps everything running, and cancel is the default button.
  • The first launch after this update removes the sign-in registration the old version created — only after checking the entry really points at this app, so nothing else in your startup list is ever touched. Uninstalling now cleans it up too.
  • Because the background program runs only while the app is open, an AI client's tools answer only then. If every tool call fails, launch TestMyLogic and retry — the connection guide and the agent's own guide now say exactly that.
  • This dialog's own notes are back: they had been empty since 0.9.1, and they now come straight from the release notes published on the site, so they cannot be forgotten again.
  • If you use the app with an AI client, re-download your copy — the guide (skill) release stamp moves to 0.11.0. Claude: reinstall the extension and the skill; Antigravity and the ChatGPT desktop app: Disconnect, then Connect again.
0.10.02026-08-29The app now asks you to agree to its terms and privacy notice before it will do anything — no calculations, no downloads, no AI client. You will see it on a first run, and once after updating from an earlier version. Both documents are published on this site and can be read again from Settings at any time, and the installer carries the licences of the open-source components it redistributes.
  • The agreement appears on a first run and, once, after updating from an earlier version too — nothing was ever agreed to on that installation, so there is nothing on file. Your data and results are untouched and are waiting behind it. Five points are stated in plain words above the documents, because they are the ones people are least likely to expect: when the background program runs; that a connected AI client can delete sweep results permanently, with no recycle bin and no undo; that downloading market data exposes this computer's IP address to the exchange; that nothing you store here is backed up by us; and that a verdict is not investment advice.
  • Until you agree, the background program refuses everything except the agreement itself — an AI client cannot even read from it. A later amendment asks once more too, but results and data you already have are not deleted: they stay where they are, and you can open them again as soon as you accept.
  • The terms of use and the privacy notice are published at www.testmylogic.com/terms and /privacy in Korean and English, and the app displays the same files it ships with. The Korean text is the legally authoritative one.
  • The installer now carries THIRD_PARTY_NOTICES.txt — the licences of the 561 open-source components redistributed with it, several hundred of which require exactly that. The same file is published at www.testmylogic.com/open-source.txt.
  • Connecting an AI client is explained on one screen that now covers everything the first-run guide covered, so there is no longer a short version and a long version to choose between.
  • Korean text no longer breaks in the middle of a word in narrow panes.
  • If you use the app with an AI client, re-download your copy — the guide (skill) release stamp moves to 0.10.0. Claude: reinstall the extension and the skill; Antigravity and the ChatGPT desktop app: Disconnect, then Connect again.
0.9.22026-08-28The headline fix: a sweep no longer fails as a whole when one parameter combination turns out to be an impossible request. Alongside it, the sweep list shows each result's numbers without opening it, a first run explains how to connect an AI client, and the verdict board now says how many times you have already tried on the same data.
  • A sweep used to be lost entirely if a single combination in the grid was not a legal request. Those combinations are now left out, the rest of the sweep runs, and the app reports how many were skipped and which requirement caused it.
  • The sweep list carries overfitting risk, out-of-sample loss probability and the walk-forward / Buy & Hold pair on every row — numbers that previously meant opening each result one at a time.
  • A first run with no data opens on a short guide to connecting an AI client, and the two Claude files now ship inside the installer, so there is nothing to fetch from a browser.
  • The verdict board counts how many times the same strategy has been swept on the same dataset and states the chance that a strategy with no skill at all clears the bar at least once across that many tries. When a verdict cannot tell either way, it now offers four next steps instead of leaving you there.
  • For AI clients: result lists can be filtered and trimmed rather than sent whole, results can be queried by folder, timeframe and fees, and returns are stated with their units — a figure an assistant could previously read as 8.6% was in fact +863%.
  • If you use the app with an AI client, re-download your copy — the guide (skill) release stamp moves to 0.9.2. Claude: reinstall the extension and the skill; Antigravity and the ChatGPT desktop app: Disconnect, then Connect again.
0.9.12026-08-27A maintenance release: an internal diagnostic remote-connection path is now fully disabled on standard installs. Analysis features and your saved verdicts are unchanged.
  • An internal remote-connection facility used for cross-checking during development no longer exists on standard installs — its mentions are gone from the AI tool guidance, and no such connection is ever attempted.
  • If you use the app with an AI client, re-download your copy — the guide (skill) release stamp moves to 0.9.1. Claude: reinstall the extension and the skill; Antigravity and the ChatGPT desktop app: Disconnect, then Connect again.
0.9.02026-08-25The installer is code-signed from this release on — Windows verifies the publisher as 비전측정소프트(VMSOFT), the registered business behind TestMyLogic. Analysis screens now chain backward as well as forward, and an optimum sitting on the edge of your sweep range gets called out. Nothing you stored is recomputed this time.
  • The installer and the binaries inside it (the backtest engine included) carry a digital signature with an RFC 3161 timestamp. The verified publisher reads 비전측정소프트(VMSOFT) — a product brand differing from its publisher's legal name is normal, and the footer of this site names the same company.
  • SmartScreen may still warn while a newly signed publisher builds reputation — Microsoft describes this as accumulating over weeks of clean installs. If a warning appears, the publisher name above is how to tell the file is genuine.
  • On the first screen of each validation method, Previous (or the P key) now lands on the last screen of the method before it — the screen chain runs both ways.
  • When the best combination sits on the edge of the swept range — the true optimum may lie outside it — the comparison view says so in one line, the verdict badge gains a note, and the AI surfaces advise widening the range and re-sweeping.
  • Using it with AI? Re-install your copies — the guide now carries a release stamp and the app reports its version, so an agent can tell when its copy is stale; new guidance answers profit and strategy-pick questions with computation instead of refusal, and responses carry grid-coverage facts. Claude: re-install the extension and skill; Antigravity and the ChatGPT desktop app: disconnect and reconnect.
0.8.02026-08-25Validation gains one new verdict (the recombination check) and the overfitting ladder drops to two bands. Every verdict you had stored is recomputed — the second full recompute in four days, and we know it. The same measurement effort that produced 0.7.0 produced this one; delaying it would only have added the verdicts stored in between to the recompute, so we cut now.
  • New verdict, “Cross-validation” (then named the recombination check): the same 12,870 splits the overfitting check walks now carry a finer score — the block percentile, the training winner's average rank on each held-out block, where the midpoint means chance. Crossed with the overfitting band it makes three grades: “Strongly held” (both checks pass — a confirmation grade no-skill strategies reach only ~1% of the time), “Held” (exactly one), “Not distinguished”. It shows under the analysis badge, in a new sweep-list column, and in the verdict matrix.
  • The overfitting ladder went from “Very low / Low / Not distinguished” to “Very low / Not distinguished”. Measurement settled that the block-percentile check does the 25% boundary's job (widening detection) better, so that boundary retired. The PBO numbers themselves are unchanged — a result that used to sit in “Low” now reads “Not distinguished”.
  • The criteria panel now carries measured disclosure: how often a strategy with no skill at all passes (designed at most 5%; measurements sit under it), detection of a synthetic edge, and two conditions — detection varies strongly by strategy family, and these verdicts detect edges distributed across the whole span, so an edge confined to one regime mostly stays “Not distinguished”. The no-skill table now says to read its good-band shares as upper bounds.
  • Your verdict matrix is empty again. The calculation-era number moved from 9 to 10, and exactly as in 0.7.0 the sweep list's verdict columns fall back to the “Compute verdict matrix” button. The analysis screens compute fresh on open, so their verdicts read the new ladder immediately.
  • Using it with AI? Re-install your copies — responses now carry a combination block, and the ledger gains combination_verdict_tag and grand_rank columns. Claude: re-install the extension and skill; Antigravity and the ChatGPT desktop app: disconnect and reconnect.
0.7.02026-08-20The verdicts were rebuilt. Both ladders got new words, the walk-forward is judged on a different statistic, and every verdict you had stored is recomputed — many results that read “Good” before now read “Not distinguished”.
  • The walk-forward verdict is entirely new. It used to be Good / Caution / Risk, decided by fold win rate and decay — the strategy measured against itself. It is now Selection held / Not distinguished / Selection hurt / Too few folds, and what it measures is where the re-picked combination ranked among the combinations it was chosen from, against the range luck alone produces. On this app's own corpus the old ladder handed “Good” to a skill-less selection 30.6% of the time; the new one holds “Selection held” to 3.8%. Not distinguished is now the usual answer — 87% of runs — and it means the data cannot tell, not that the strategy is bad.
  • Overfitting risk went from five bands to three: Very low / Low / Not distinguished. The 10% and 25% boundaries did not move a single point; the two above them were deleted because measurement could not tell skill from noise across them — a likelihood ratio of 1.0 to 2.4, against more than 300× at the 10% line. The PBO number itself is unchanged, so a value you wrote down still compares.
  • Verdicts you already have come back empty. The calculation generation moved from 2 to 9 — seven bumps, each changing what the numbers mean. Old rows are not deleted, they are left out so two eras cannot be read side by side: the sweep list's two verdict columns return to a Compute button, and My experiments starts empty. The analysis screen recomputes on open, so its words are new immediately.
  • The same result opens on different numbers. The default walk-forward windows went from 540 / 135 days to 270 / 30, because discrimination follows the fold count and a long training window only spends days the validation needed. Measured: a 385-day 4h result goes from 4 folds to 7, a 715-day 1h result from 3 to 14, a 3,102-day daily result from 18 to 94. Returns, drawdown and Sharpe all move with the window.
  • Split counts 6 and 8 are gone; 10, 12, 14 and 16 remain. Six splits leave only twenty ways to divide the data, so PBO can land on values five points apart against a band ten points wide — not fine enough to carry a grade. One consequence: a split needs 30 days, so 300 days of history are required for the smallest count, and the default downloads for 1-minute (90 days) and 5-minute (180 days) candles fall short. Extend the range on the data page; the screen says how many days are missing.
  • The verdict matrix is twelve settings now, not nine — four split counts by three walk-forward window sets, and the three window sets were re-spread so they no longer land on nearly the same answer.
  • The verdict is drawn, and Not distinguished comes with somewhere to go. A gauge shows where this run landed inside the chance range and how many folds drew it. Below it are four things you can do next, including a live test whose horizon is computed from this run's own performance, and a warning on re-optimising: it improves the verdict, not the strategy. The screen also counts how many settings you have read one result with, and says what having read it that many ways costs.
  • The app no longer tells you when to trade. Sentences like “clear for live review” and “allocate only when all three gates pass” are gone. A tool whose usual answer is “this data cannot tell” has no business naming the moment to put money in.
  • Every AI client needs a fresh copy of the methodology — the verdict words changed on both ladders, and a client still holding the old copy speaks words this version cannot return. In Claude, reinstall the extension (.mcpb) and the skill (.zip). In Antigravity and the ChatGPT desktop app the copy was made when you connected and updating the app does not replace it: open Settings → AI client connections → Manage connections…, press Disconnect and then Connect, and restart the client. What the model gains: it can ask the installed engine for its indicator list (one tool added, none renamed or removed), it states a result's caveats before its numbers, and it discounts a good verdict found by reading one result many ways.
  • Dragging a result folder onto the window works again in the installed build.
0.6.02026-08-12Validation now computes more conservatively: every sweep pays a fee, thinly-traded combinations leave the candidate pool, and each result gets a verdict matrix computed across nine settings.
  • Sweeps now pay the exchange fee. Sweeps started from the app were charging zero — the cost taken on every entry and exit was simply not deducted, so the returns you have seen so far are better than real, and the gap is widest on short candles that trade often. The taker fee of the exchange the data came from now applies by default, and each result states which fee it paid.
  • Thinly-traded combinations no longer compete to be the winner. A combination that traded three or four times could win on luck alone. Combinations under 30 trades over the full span are now removed before the pick, and the screen says how many survived and how many were excluded.
  • Every result gets a verdict matrix. When a sweep finishes the app validates it across nine settings on its own — three split counts by three walk-forward window sets — and the sweep list carries the overall verdict. The 2/3 beside it counts how many of the three agreed: sweeping settings and quoting the best of them is a selection, not a validation, and this grid has its settings fixed in advance so that trap is absent from it.
  • A short span now shrinks the walk-forward windows automatically, and when the folds are still too few the verdict says so.
  • Sweeps can be filed into folders, renamed, and deleted, and the folders are made on disk too. Validations you ran while changing settings are kept per result as My experiments — the ones an agent ran are marked as the agent’s.
  • The agent tool names were cleaned up (replaced outright, with no old names kept). An agent now reads the same verdict matrix you see, and is told to read it before running settings of its own. Please reinstall both the extension and the skill.
0.5.02026-08-07A backtest result writes each fact down once, so its files are about half the size and the trade screens open on less memory.
  • Result files stopped repeating themselves. Every trade row used to carry its own copy of the fill ledger, the parameter values of the combination it belongs to, its timestamps written a second way, and a fee that is the same for the whole run. Each of those was already stated elsewhere in the same result, so the trade row stopped saying them: about half of that file's contents are gone and its column count went from 31-34 down to 22.
  • The trade-diagnostics screens open on less memory. The largest single item was the fill ledger every trade carried inline — roughly 30% of the file — which now lives in one place instead of two. Nothing on screen changed: the numbers were compared row by row against what the old files said, and against results produced by the previous version.
  • Results from earlier versions still open, and nothing needs re-running. They keep the size they already have; the saving applies to sweeps you run from now on.
0.4.22026-08-04An AI agent checks again which screen you are on, and can hand you a link without moving it.
  • The agent stops describing a screen you already left. Move to another screen, ask again, and it could answer out of what it read for the previous question — right the first time and wrong from the second, which is what made it hard to notice. It is now told that you keep navigating between turns, that a value it read describes the screen as it was at that moment, and that nothing announces the change to it.
  • A link you can open, without the screen moving. The only way to get an openable address used to be asking the agent to move the view, which moves the real screen. Asking for the app state now returns a link to it as well. Opening that link in a new window does make that window the screen the agent reports, so click through on your own window to come back.
  • The ✓ icon is gone from the backtest sweep list. Since clicking a row started opening the analysis, that icon was a second button doing the same thing. Row click, ↑↓ and Enter are unchanged, and a row that is opening still shows it.
0.4.12026-08-04The step number an AI agent says now matches the one on your screen, and the agent explores validation on its own.
  • The step number agrees everywhere. The screen printed “3 / 3” while the agent called that same screen “step 2”, and the link the agent handed you carried a third number. Screen, agent, link and conversation now use one number. A link you saved earlier opens one step off — click through on screen when that happens.
  • The agent sweeps the knobs itself. Asking it to try a few settings used to get one calculation and a stop. It now runs S, the analysis window and the metric repeatedly, accumulates them in the analysis ledger and compares. It must say when a result was picked out of several settings — presenting only the good one is the overfitting this app measures.
  • The numbers an agent quotes cannot drift from the app. The verdict bands, the default download span, the indicator list and the query budget used to be typed by hand into the guidance the model reads, so changing a value in the app left the guidance confidently stating the old one. Those sentences are now composed from the values the product actually uses.
  • Re-upload the skill if you use Claude. Claude stores skills on your account, so updating the app does not change them. Antigravity and the ChatGPT app keep the copy made when you connected, and updating the app does not replace it — open Settings → AI client connections → Manage connections…, press Disconnect and then Connect, and restart the client.
0.4.02026-08-01Hourly and minute data are handled properly, and one strategy now runs at every timeframe.
  • A strategy file no longer states its timeframe. It used to carry a line naming one, so running the same strategy on hourly data meant keeping a second copy of the file. Now the dataset you pick for the sweep decides. Your existing strategy files need nothing done to them — the app quietly drops that line whenever it saves or opens one.
  • The hourly result screens work again: the Buy & Hold (B&H) curve, the IS/OOS window adjustment in the overfitting check, and the WFA summary table all render. When price data genuinely cannot be read, the screen says why instead of spinning forever.
  • The data page chart shows all of the data it received. It used to fetch 48,000 candles and draw only the most recent 20,000. A large dataset now opens on its most recent stretch at full resolution, panning left brings the past at that same resolution, and zooming all the way out fits the whole range.
  • The benchmark line and the curve under analysis are clearly separated by weight and color. The example TOML for a new strategy is a complete, working strategy you can save as-is, and describing what you want to an AI agent will write the file for you.
0.3.132026-07-29You can ask for an update check yourself, and the connection screen says what it did.
  • The app version is always visible at the bottom of Settings, with “Check for updates” beside it — no more waiting for the automatic check or restarting the app. At this release the automatic check still ran by itself, once a day.
  • The cleanup buttons on the AI client connections screen now report the outcome: cleaned up, nothing to clean up, or failed. Their labels also say what they remove.
  • When the Claude extension is older than the app, the screen explains why — extensions update separately from the app — and how to bring it up to date in one line.
  • Long file paths are collapsed by default; they open on demand, and appear immediately when something fails, which is when you need them.
0.3.122026-07-29Connect an AI client from inside the app.
  • Settings → AI client connections connects and disconnects Antigravity and the ChatGPT desktop app in one press — nothing to paste into a terminal, and no Node.js to install first.
  • Antigravity: pressing Connect puts the plugin in place, and Disconnect puts it back.
  • ChatGPT desktop app: the app finds the codex executable itself, so the path you used to type by hand is gone.
  • Claude: its extensions screen already installs, removes and shows versions, so the app reports the current state and opens the file location.
  • Each client shows its connection state and, separately, whether anything actually called this app recently — being configured and being in use are different things.
0.3.112026-07-29Added automatic updates, a tray-resident app, and a way to send feedback.
  • From this release the app checked once a day for a new version and offered “Restart and install” when one was ready. If a sweep or a download was running, the install waited until it finished.
  • Closing the window left the app in the tray so background work continued; right-clicking the tray icon and choosing Quit exited for real.
  • Send a bug, an idea or a question to the developer from Settings. Your user name and file paths are masked before anything leaves the machine.
0.3.102026-07-22The overfitting-validation workspace: Probability of Backtest Overfitting (CSCV), walk-forward analysis, and trade-level diagnostics, all computed locally by a bundled Rust engine.
  • Local data workspace — download public OHLCV and funding history into a DuckDB/Parquet workspace that feeds parameter sweeps.
  • Strategy authoring and validation loop, with results kept in a local catalog you can query with SQL.
  • MCP surface so an AI agent on your machine can read verdicts and drive the app — bulk data stays local.