Changelog: every Foliograph version

Every new feature and fix since the first version. In the app you open them with a click on the version number at the top left.

Current version 0.3.22 from 21 October 2026

21 October 2026

Current

Version 0.3.22

Portfolio page reworked: one list over all positions, Performance view and bound capital in percent of the NLV

Highlights

  • Portfolio: tabs Positions, Premiums & risk and Allocation below one line of key figures.
  • One list over stocks, futures and options, grouped by underlying, industry, account or strategy.
  • Performance and Tiles for your stocks and ETFs with the columns of the ETF heatmap.
  • Allocation: bound capital in percent of the NLV.

7 New 3 Improved 2 Fixed

Show all 12 changes
  • New Portfolio: the page is reorganized. At the top are the account selector and the key figures on one line (NLV, unrealized, margin reserve, sold option premiums and newly max loss), below them the tabs Positions, Premiums & risk and Allocation. A click on Max Loss opens Premiums & risk. Tab, view, chips and grouping stay as they were on your next visit and are part of the address.
  • New Portfolio, Positions: stocks, futures and options are in one list. Chips show and hide the classes, the option figures (Max Loss, Premium/Margin, remaining premium) appear while only the Options chip is on. Group by underlying, industry, asset class, account or strategy shows the count and the open P/L per currency for each group. New columns Description (name or strategy with strikes and expiry) and Held (days since opening) for every position, DTE for options only. The columns are narrower. Your previous column choice of the Stocks and Options tabs carries over.
  • New Portfolio, Performance and Tiles: your stocks and ETFs with the columns of the ETF heatmap (since entry, returns from 1 day to 3 years, EMA21, distance to the 52-week high) or as tiles sized by position value. The Columns menu shows and hides groups or single columns as in the heatmap. Foliograph loads missing price histories in the background. The Stocks & Futures journal offers the same view through the List, Performance and Tiles switch.
  • New Portfolio, Allocation: the capital your open positions bind, in percent of the NLV, by asset class, currency, industry and account. Stocks and ETFs count with the market value, options and futures with the measured margin, without a measurement options with the max loss and futures with the notional value. This replaces the former bar, which compared the market value of the stocks with the premium of the options and counted futures without the contract multiplier.
  • New Chart panel (ETF heatmap, world map, Portfolio): quantity, entry and open P/L of your position, a line at the entry plus your entries and exits for every symbol.
  • New Help: new Portfolio guide on key figures, list, grouping, Performance, Premiums & risk and Allocation. The help page and the Table columns and Margin per trade guides describe the new page.
  • New Price chart: an orange E above the candle marks the past earnings, on the trade page and in the chart of the journal list. The date is the day of the SEC filing (8-K, item 2.02). Applies to stocks and stock options, Foliograph shows no future dates.
  • Improved Industry: ETFs on European exchanges (SIX, Xetra, Euronext) stand under ETF instead of No industry. Foliograph recognizes them by the IBKR stock type or by the name (ETF, UCITS, iShares and others).
  • Improved Version history as on the website: the installed version appears as a card with highlights and all changes by type, older versions collapse and can be filtered by New, Improved and Fixed.
  • Improved System > Overview: Data freshness now lists every job with its interval and a Start button, newly also Earnings, EIA, USDA, WASDE, FAS, Auto-Backup, MAE/MFE, Margin and the update check. A failure in one of these jobs appears under Recent problems.
  • Fixed Price data: Foliograph recognizes prices of a US security with the same symbol (e.g. EXUS on the LSE or TDIV in EUR) by your executions and discards them. For such symbols Foliograph no longer asks massive.com.
  • Fixed Sign-in: Portfolio, trade page and tag management send you to the login page after an expired sign-in instead of showing an error.

More in the help center: Portfolio, Margin per trade, Customizing tables, Reviewing trades

17 October 2026 Version 0.3.21 Assignment chain from option to stock, seven new guides, Premium/Day for rolls
  • Assignment chain: option and stock trade are linked, the trade page shows the result of the whole chain.
  • Analytics: the Assignments to option toggle attributes the assignment loss to the option trade.
  • Help center: seven new guides with screenshots.
  • Rolls: Premium/Day next to Strike/Day.
  • New Help: new guides with screenshots on Getting started (installation, trial, setup wizard), Options in the journal (opening, roll, expiry, assignment, covered positions), Fixing trades (split, merge, reprocess, corporate actions), Reviewing trades (strategies, mistakes, notes, Mistake Review), Customizing tables (columns, filters, sorting), Analytics (key metrics, equity curve, cash flows) and the ETF heatmap with its chart panel. The help start page has the new sections Journal and trades plus Market and ETFs.
  • New Rolls: roll efficiency is now called Strike/Day and Premium/Day is new next to it. It is the net premium of a roll (credit positive, debit negative) divided by the added days. Both values appear as columns in the Options Journal and the Portfolio, on the trade page and in the Rolls table. For spreads the premium of all legs of the roll counts, recognized by the shared identity of the combo order. Credit/Debit in the Rolls table is therefore correct for rolled spreads now, so far only the short leg counted there. In Analytics the Activity area shows the median of both in percent of the old strike and the Rolls table has two new columns. A saved column choice with Roll Eff. carries over as Strike/Day.
  • New Journal: with the Margin and Init. Margin columns shown, the Total row sums them up over every filtered trade, across all pages and per currency.
  • New Market overview: the rows of the Indices table now carry the chart icon as well. A click shows the history of the index over 3M to 5Y with low, high and percentile of the window.
  • New Assignment chain: Foliograph links an assigned or exercised option to the stock or futures trade that received the position (same time, strike and quantity). The page of both trades shows the chain with the result of each trade plus the total. Next to it is the split in which the move from the strike to the close of the assignment day counts for the option. If a link is missing, you set it by hand on the page of the option trade. The update links existing assignments once.
  • New Analytics: the new Assignments to option toggle in the Key Metrics header applies this split to every metric once the stock trade is closed. A spread with an assignment then shows with the assignment loss instead of as a winner, the total stays the same. The toggle is off by default and the figures follow the attribution from the IBKR data.
  • Improved Backup: the column selection of the tables, the hedge budget target and the ETF settings (HV window, monthly expiries, positions per ETF) are now part of the backup and come back on restore.
  • Improved Help: the ETF heatmap answer names around 250 ETFs in 17 categories.
  • Improved Journal: the header-row filters still show the column name when closed, opened the first entry now reads All.
  • Improved Dashboard: Expiring Soon gets more room than Recent Trades (3:2 instead of half and half). An icon in the panel header spans it across the whole width, Recent Trades then moves below. The choice is remembered.
  • Fixed Settings: the General tab saves again. Since the language moved to the top bar it silently discarded every change on save (tax domicile, notification time, hedge budget target and the ETF settings). As in the setup wizard the base currency is fixed after the initial setup and shows greyed out.
  • Fixed Edit trade: the form has a field for the planned exit at a profit again, now called Take-Profit instead of Target Price (form, trade page, chart, AI prompt). The field was missing, so every save through Edit cleared an existing value. For stocks and futures Foliograph now also checks that initial stop and take-profit sit on the right side of the entry (long: stop below, target above, short the other way round). Before, a wrong-side value produced a plausible-looking reward-to-risk ratio.
  • Fixed Analytics: when you show cash flows such as dividends or deposits on the equity curve, the stack no longer drops to 0 at the end. That happened when bookings came after the last closed trade. Every line now continues to the last booking.
  • Fixed Journal: the status filter can be reset to all again. When status was the only active filter, the remembered filter selection brought the old status straight back on reset. This applied to any filter removed last.
  • Fixed Flex: when the daily Activity query fails (for example because the network is not up yet after the computer wakes), Foliograph now retries after an hour instead of the next day. The job then shows as failed instead of done. Before, assignments and exercises stayed missing for days, since only the Activity query delivers them.
  • Fixed Import: when a closing sale (IBKR code C) opens a new stock position because its opening is still missing, the trade gets a note and Foliograph fetches the Activity query right away. When the opening arrives later (for example the assignment of a short put), Foliograph rebuilds the trade chronologically. Instead of a short position that closed before it opened, the long position from the assignment shows with its sale.
  • Fixed Covered options: spreads are no longer linked to a stock position as covered, their long leg already caps the risk. A link is only made with the stock position held while the option was open, not with whatever position is open today. The update corrects existing wrong links once.

More in the help center: Getting started, Options in the journal, Fixing trades, Reviewing trades, Customizing tables, Analytics: performance and cash flows, ETF heatmap and chart panel

13 October 2026 Version 0.3.20 Help center with guides, margin reserve in the portfolio, one chart panel for ETF heatmap and world map
  • Help center with detailed guides and screenshots.
  • Portfolio: margin reserve (excess liquidity) next to the NLV.
  • ETF heatmap and world map share one chart panel that can be pinned.
  • Help: new step-by-step guides with screenshots, starting with margin per trade, security and privacy, backup, AI analysis and setting up TWS, Flex and the CSV import. The margin per trade guide answers first what switching off the read-only API in TWS means for security. A search field at the top of the help page searches guides and questions at once (key /). The ⓘ icon next to margin per trade, TWS, Flex, backups and AI in the settings leads straight to the matching section and the version history links the guide of a new feature.
  • Language: the switch in the top right now changes the language reliably. Once the language had been switched before, picking English or German jumped back to the previous language. After moving between pages inside the app the switch also led to the first page opened instead of the current one.
  • Top bar: below 1440px window width the menu items move closer together, the user name is hidden and New Trade shows as a + button. Until now Settings was cut off on the journal pages up to about 1370px, now the bar fits from 1100px in the browser and from 1160px in the desktop window.
  • Margin per trade: the line about the last run in the settings (measured, rejected and trades without contract) is now translated.
  • Flex: When the Activity Flex Query lacks a section (such as Transfers), the dashboard message now disappears as soon as you test the query with Verify under Settings > Connections. Until now it stayed until the next automatic sync. That sync only ran once Foliograph had been open for 24 hours in a row and now catches up at launch when the last one is more than 20 hours old. The message links a new guide that also explains the mix-up between Transfers and Trade Transfers.
  • Portfolio: next to the NLV the margin reserve appears, the Excess Liquidity from the TWS account summary (loan value of the account minus the maintenance margin of all positions), with its share of the NLV, which IBKR calls the cushion. The tooltip names the maintenance margin of the whole account. If the reserve falls below zero, Interactive Brokers can close positions. The figure needs a TWS connection, with a Flex Query alone it stays empty.
  • Portfolio: the Sold Option Premiums panel and the allocation bar legend show translated category names in German. The assignment amount, the category totals and the amounts per symbol carry thousands separators.
  • Portfolio: the assignment amount now counts only short puts (strike x open contracts x multiplier). Before, it summed the strikes of every leg, long puts and short calls included: a 207/210 bull put spread showed 41'700 instead of 21'000, an iron condor its call side as well. An assigned short call delivers shares and takes no cash, so categories with short calls only show no amount.
  • Portfolio: the Option Max Loss figure and panel are now called Max Loss (limited). The sum only includes positions with a loss bound, net short calls still appear next to it as unlimited. The tooltip says so explicitly.
  • Portfolio: the Remaining Yield p.a. column is now called Remaining/Margin p.a., as is the threshold in the settings. It annualizes Remaining/Margin and is a theoretical rate assuming worthless expiry and unchanged margin, not a return. The tooltip and the help say so explicitly.
  • Tables: header filters are at least as wide as their column name, "Symbol" no longer clips to "Symbo".
  • ETF Heatmap and ETF World Map: one shared chart panel. Its header carries the star (favorites and lists), the position dot and the AI menu, the ETF's top holdings sit next to the charts, as many as fit the height of the panel. The World Map now shows your entries and exits, the expected-move cone and the IV/HV row like the Heatmap.
  • Chart panel: the pin button in the header docks the panel below the table, the tiles or the map. There it stays open while you click through the ETFs, the table and the tiles get shorter to make room. Unpinned it floats at the ETF as before. The choice applies to both tabs and is remembered per browser.
  • ETF Heatmap, tiles: dot for held ETFs and star for favorites and lists like in the table. Hovering a tile reveals the chart, holdings and AI icons, tiles too small for them show the dot or star in a corner.
  • ETF World Map: star and position dot in the ranking and in front of the label on the map, plus the Positions and Favorites chips. They fade the other countries on the map and drop them from the ranking and the Top 5 / Bottom 5 strip. Shift+click still compares countries below the map.

More in the help center: Flex Query: missing sections

8 October 2026 Version 0.3.19 Own entries and exits on the ETF chart, margin per trade, premium against margin
  • ETF heatmap: the chart panel of an ETF shows your own fills on that ETF, stocks as arrows and options as dots, entries below the bar and exits above it. Hovering a bar with markers shows quantity and average price in a tooltip, for options also the right and the strike. A roll appears as an exit plus an entry on the same day. Four toggles in the panel header show or hide stock entries, stock exits, option entries and option exits one by one. Older fills appear on the weekly chart, which reaches back two years.
  • Margin per trade (optional): Foliograph measures how much margin each open trade binds and tracks the value over time. Four times a day TWS evaluates a what-if order that would close the trade but does not execute it. A spread is measured as one combo, a stock and the option it covers together. The Portfolio shows the newest value in the Margin column, the trade page the history. Because TWS evaluates what-if orders only with "Read-Only API" switched off, the measurement is off by default. Turn it on under Settings > Connections, the setup guide names the exception.
  • Premium and margin: new columns relate the sold premium of option trades to the maintenance margin. Premium/Margin shows the ratio at opening, Remaining/Margin next to it how much of it the same margin still holds (e.g. 20% at opening, 4% now). The Portfolio also shows the remaining premium (buyback value of the open contracts) and the remaining yield per year to expiry, the Journal the highest measured margin and initial margin of each trade. Under Settings > Connections you can set your own thresholds, rows that reach one are marked in the Portfolio. All columns are off by default, the thresholds empty.
  • Journal: the status filter has a new value "Open + partial" that shows every trade still fully or partly open.
  • Unrealized P&L: for futures, the Portfolio and the Dashboard now apply the contract multiplier. Two MES from 5000 to 5010 come to 100 USD instead of 20. On the Dashboard, short positions now count with the right sign in Today and Unrealized, a rising price is a loss there.

More in the help center: Margin per trade, Security and privacy

6 October 2026 Version 0.3.18 New thematic ETFs for medical technology, neuroscience and genomics, custom ETF lists
  • ETF heatmap: five new ETFs in the Thematic category cover medical technology, neuroscience and genomics. IBRN (iShares Neuroscience and Healthcare) is the only ETF focused purely on neuroscience and the closest match for brain-computer interfaces, since no BCI ETF exists yet. HTEC (ROBO Global Healthcare Technology and Innovation) spans surgical robotics, AI diagnostics and genomics. GNOM (Global X Genomics & Biotechnology) covers gene therapy and gene editing, HEAL (Global X HealthTech, formerly EDOC) AI drug discovery, connected medical devices and health software.
  • ETF heatmap: CYBO (VanEck Bionic Engineering UCITS) is the first ETF listed outside the US in the heatmap. It trades on SIX in CHF and spans medical robotics, implants and exoskeletons. Its daily price is the bid/ask midpoint because the fund trades on SIX on only a few days a month. The table shows the price with its currency and the CSV file gains a Currency column for it. IV, option data, fund assets and holdings stay empty because it has no US option chain and files no holdings report with the SEC. The tooltip of the empty cells states that reason.
  • ETF heatmap: next to the favorites you can keep your own ETF lists. A click on the star in front of a symbol opens a menu with a checkbox for Favorites and one per list, an ETF can sit in several lists. The dropdown in the toolbar shows one list on its own, the Lists menu next to it creates, renames and deletes lists. Compare list draws up to twelve ETFs of the picked list as lines starting at 100, up from three. Shared holdings then cover the whole list and state in front of the chips how many of the ETFs hold a title. ETFs without position data such as CYBO or GLD are named below. A new Overlap by weight matrix shows per pair of ETFs how much of one fund the other holds too (the summed smaller weight of their common positions), so duplicates like XBI and IBB stand out at once. For a list the compare looks 50 positions deep into every ETF. Saved screens remember the picked list and the backup carries the lists. On first use Foliograph sets up ten starter lists by theme: AI and Robotics, Established Healthcare, Future Medicine, Semiconductors and Data Centers, Software and Cloud, Defense and Space, Energy Transition, Precious Metals and Miners, Internet and Consumer plus Crypto and Blockchain. They can be changed or deleted like your own lists.
  • Analytics: Without losing trades the profit factor of a group now shows "-" instead of 0.00. Until now a strategy or symbol without any loss looked like the worst possible value. Sorting by PF puts such rows below the calculated values.
  • Analytics: The Performance by Category cards are now translated into German as well. The key metrics panel consistently uses Ø Gewinn, Ø Verlust and Mit Stop in German, the Mistake Review Ø GuV instead of Ø PnL.
  • Analytics: After switching the language the page showed cash-flow kinds and trade highlights in the previous language for up to five minutes because the cache did not distinguish languages. Each language now has its own entry.
  • Analytics: Sharpe and Sortino now use every trading day of the period, days without a closed trade count as 0. Before, only days with closes entered the series while the annualization still assumed 252 days. Anyone who does not close trades daily therefore sees lower values, the previous ones were too high. Below 20 trading days a dash replaces the number.
  • Analytics: CAGR and Calmar now use the account value from your statements. The CSV import now reads the start and end value of the period (section Change in NAV), the Flex query the account value per day (Equity Summary). The start capital is the value closest to the start of the period, before it was always backed out of today's account value. Deposits and withdrawals within the period now count toward the capital for the share of the period they were in the account. Before, the P&L was measured against the start capital alone, so a large deposit after the start inflated CAGR. All accounts now uses the value of every account instead of a single one. The Flex import also stored the highest account value of the whole query period as the current value, it is now the value of the last day. For older periods it pays to import the statements again. In the key metrics the figure is now called CAGR (realized), because it measures realized P&L and is not a classic CAGR from start and end value. A tooltip explains the calculation.
30 September 2026 Version 0.3.17 Shared holdings in ETF compare, ETF list as CSV, MAE, MFE and TradingView links per trade
  • ETF heatmap: two defects in the cached positions. First, every position whose company SEC lists with its state of incorporation carried no symbol, "APPLIED MATERIALS INC /DE" against "Applied Materials, Inc." in the filing. That hit some eleven positions per ETF worth about 7% of the fund, none of which could ever show up as a shared holding. Second, several rows of the same company within one ETF counted once only, so Alphabet, held in two share classes by QQQ, read 3.3% instead of 6.3%. Such rows are summed now and the share class leaves the name, in the holdings list of a single ETF as well, where a company used to appear several times.
  • ETF heatmap: funds that hold their positions through total return swaps are stated correctly. MAGS for instance holds 55% US treasury bills and builds the seven stocks mostly synthetically. The table used to show only the small directly held rest, 3.5% for NVIDIA instead of the actual 15% or so. A swap is now booked on its underlying and sized by its notional against the fund's net assets. The table names both parts separately, 3.5% stock plus 11.2% swap, and ranks by the sum. The holdings list of a single ETF names a company once as well and states both parts behind the name. MAGS files one swap per counterparty, which is why Apple and Alphabet sat in the list twice.
  • ETF heatmap: the compare view now names the shared holdings. Under the chart of the up to three ticked ETFs sits a table of the positions that two or more of them hold, each with the weight it carries in every single ETF. The list is sorted by the number of holding ETFs and then by the summed weight. This table used to live in the ETF world map tab, where the selected country ETFs hardly ever hold the same position and it therefore stayed empty almost always. The positions come from the NPORT-P filings at SEC EDGAR, same as the holdings list per ETF. For it, Foliograph now keeps the 100 largest positions of every NPORT-P filing instead of only the ten. The filing was downloaded in full and then cut anyway, so the depth costs no additional request. How many positions the holdings list shows is Positions per ETF under Settings > General, 10 to 100 in steps of ten and ten by default as before. The same dropdown sits above the shared-holdings table itself, preset from the settings and remembered per browser. Comparing two ETFs makes the depth part of the question, ten positions often do not overlap at all. Existing installations fill the deeper lists in the background through the hourly run of the ETF Vol Sync job.
  • ETF heatmap: the ETFs shown can be downloaded as a CSV file. The CSV menu in the toolbar offers three variants: Symbols only (symbol, name, category, e.g. for a watchlist import in TradingView), As displayed (the visible columns) and All columns. Filters, search and sort carry over. Values are written as plain numbers with the unit in the column header, so a spreadsheet can calculate with them directly.
  • Analysis: MAE and MFE per trade. MAE is the largest move against a position between entry and exit, MFE the largest move in its favour. Both are measured on the cached daily bars of the symbol and shown in percent of the entry price, in the currency of the trade and, where an initial stop is recorded, in units of the risk taken at entry (R). They appear on the trade detail page, as the optional columns MAE and MFE in the Stocks & Futures journal and the Portfolio stock tab, and as averages in the Analytics scorecard, there joined by Kept of MFE: the realized result as a percentage of the sum of all MFEs. Only stock trades are measured, because futures bars are stored as the continuous series whose level does not match the contract a trade was in, and option contracts have no daily bar history at all. The new daily Excursion job fills the values and fetches missing bars in the background, existing trades are measured once on the first start after the update.
  • Trade detail: a trade can hold TradingView links. In TradingView pick the camera icon and Copy link, then paste the link under Notes & Screenshots. The chart snapshot appears as a preview in the timeline and opens on TradingView with one click. Several links per trade are possible, for example at the entry and at the exit. The links are part of the backup and move along when trades are merged.
  • Trade detail: Notes & Screenshots is reworked. Notes, images and TradingView links share one layout with pencil and trash icons inside the entry and can be edited afterwards, before only the image title could. Images show as a preview right away, a click enlarges them. A switch above the input field replaces the three forms side by side, a screenshot can be pasted straight from the clipboard with Cmd+V / Ctrl+V. After saving the page jumps to the affected entry.
  • ETF heatmap: the expected-move cone in the chart panel used the at-the-money straddle price directly as the move. A straddle prices the expected absolute move, which is about 0.8 standard deviations, while the EM column, its filter and the cone's IV fallback all state one standard deviation. The cone therefore sat some 20% inside the column whose tooltip explicitly claimed the same range. The straddle price is now converted with the square root of pi/2 to one standard deviation, so cone and column state the same measure. The observed straddle price is kept in the tooltip of the expiry markers.
  • Analytics-not-advice statement: the short form now sits at the top of the help page and under Settings > About. Until now the only place in the whole app was the tooltip of the stock fundamentals, there in the long form citing FIDLEG / FINSA. The reference to the statute is gone, as on the website.
  • Market Overview: the chart icon behind a row of the Volatility and US Treasuries tables opened an empty panel reading No chart data. All 16 rows were affected (VIX, VXN, RVX, SKEW, VIX/VIX3M, VVIX, P/C Index, P/C Equity plus the maturities 1M to 30Y and the spreads 10Y-2Y and 10Y-3M). The data was there, the panel stopped while drawing because the chart's colour settings moved to another file in 0.2.47. The charts draw again, with the windows 3M to 5Y, percentile and range.
  • ETF heatmap: opening the holdings of an ETF occasionally ended in an error when the hourly ETF Vol Sync job topped up the fund size of the same symbol at that moment. Both created the cache entry and the second one ran into the uniqueness check on the symbol. The fetch now notices the other entry and merges into it instead of failing.
  • Help: the Market Overview and Futures sections describe what the app shows again. Corrected are the list of the 34 futures (energy only crude oil and natural gas, plus lumber, oats and feeder cattle), the instruments in the EMA21 grid, the streaks as signed numbers instead of letters, the colours (backwardation, IVR and IVP amber instead of green), the CoT report (Legacy, futures only, not Disaggregated) and the open interest column as a position within the three-year range instead of a percentile. Newly explained are the range, change and percentile columns, the VIX futures curve, the IBKR Data Subscriptions bar and the blue dots for macro releases. The Refresh button loads the data of the current tab, not everything. Two tooltips on the Market Overview were outdated as well.
  • Analytics: The R-multiple of futures trades was too large by the contract multiplier. The P&L from IBKR already contains the multiplier, but the risk at entry (distance from entry to initial stop times quantity) did not. An ES trade at 2R therefore showed 100R. This affected the R-Multiple column (formerly CRV) in the journal, the trade detail page and Avg R-Multiple in Analytics. Foliograph now uses the multiplier IBKR delivers with the execution and, for manually entered trades, the known value of the contract. Stock trades are not affected. Option trades no longer show an R-multiple, even with a stop entered, because a stop on a premium or a spread has no clear risk base.
  • Help: The Analytics section describes the drawdown chart correctly again. It shows the decline as an amount in the base currency, not in percent.
  • Journal and Analytics: The CRV column is now called R-Multiple and the Avg CRV metric Avg R-Multiple. Both show the result actually achieved in units of the risk at entry, for example +1.80R instead of 1 / 1.8. CRV remains the planned reward-to-risk ratio from target and stop that the trade chart shows in its legend. Tooltip and help explain the difference, saved column choices are kept.
  • Analytics: CAGR and Calmar ratio came out too low for a grown account, because today's net liquidation value served as the start capital and the gains of the period were counted twice. Foliograph now backs the start capital out of the current value, minus the realized P&L, dividends, interest, fees, deposits and withdrawals since then. The comparison with SPY uses the same base.
27 September 2026 Version 0.3.16 ETF heatmap becomes a screener: options and volatility data, tiles view, favorites, saved screens and compare
  • ETF heatmap, ETF world map and stock fundamentals: when a background job writes new data (market data every 10 minutes, ETF Vol Sync hourly, EDGAR), the page re-fetches only the affected data and redraws table, tiles, map colours, ranking, correlation matrix and figures in place. Scroll position, filters, sort order, search, zoom, open chart panels and the compare selection stay as they are. The previous easy-to-miss reload hint in the bottom-right corner is gone and the Prices stamp in the tab bar follows along.
  • Refresh button on these three tabs: after the run the page no longer reloads completely, the new data appears directly in the fields.
  • ETF heatmap: the columns P/C Vol, P/C OI, OI, Opt Vol and Ex-Div stayed empty for almost every ETF after the ETF Vol Sync job ran on a weekend (11 of 248 filled). The job requested the option ticks with IBKR's frozen market data type, which delivers these values only during and shortly after a trading session. The option stats are now requested with the live data type, which delivers them within seconds on weekends too.
23 September 2026 Version 0.3.15 ETF heatmap becomes a screener: options and volatility data, tiles view, favorites, saved screens and compare
  • ETF heatmap: new Options / Volatility column group (one entry of the new Columns menu above the table): IV (IBKR's 30-day implied volatility of the option chain, in percent, date in the tooltip), HV (realised volatility from the last 30 daily returns, computed locally from the cached bars), IV/HV, IVR (IV Rank within the 52-week range, same filter pipeline as the Futures tab) and IVP (IV Percentile). All columns sort, the IVR at least box filters the table to ETFs at or above a threshold.
  • ETF heatmap: plus the option statistics P/C Vol (put/call ratio of today's option volume), P/C OI (put/call ratio of open interest), Opt Vol (average daily option volume) and Ex-Div (next projected ex-dividend date, amount in the tooltip), fetched via TWS market-data ticks in batches. ETFs without a listed option chain leave the cells empty.
  • New background job ETF Vol Sync (System > Jobs, hourly while TWS is running or Start it there on demand): loads a year of IV history on the first run and only the missing days afterwards, fetches the option statistics and refreshes the heatmap afterwards (a reload hint appears on the page).
  • Flex Web Service setup guide: the English help now shows screenshots of the English Client Portal (Flex Web Service, Activity and Trade Confirmation query), the German help keeps the German ones.
  • ETF heatmap: new Option volume at least filter box next to IVR at least. Both thresholds start from your saved defaults on every page load (0 = no filter).
  • ETF heatmap: new Columns menu above the table shows or hides column groups: Price, EMA21 D, EMA21 W, 1D, 1-3W, 1-6M, YTD, 1-3Y and Options / Volatility. The nine options and volatility columns can also be ticked one by one under their group entry. The selection is saved with the account (applies in every browser), Reset to default shows everything again. New Price column: close of the most recent cached daily bar in USD, date in the tooltip, sortable.
  • ETF heatmap: while scrolling, a strip of another column (e.g. EMA21 W) showed through between the pinned Symbol and Name columns. The Name column was pinned at a fixed 150 pixel offset while the Symbol column is wider or narrower depending on font and symbols. The offset now follows the actual width of the Symbol column.
  • ETF heatmap: new AUM column (net assets of the fund in USD from its latest NPORT-P filing at SEC EDGAR, quarterly, period date in the tooltip). The ETF Vol Sync job tops the values up in the background, so the column fills within a few hours.
  • ETF heatmap: expected move. New EM 30D column (one standard deviation over 30 days from the implied volatility, in percent, USD in the tooltip) and a cone on the daily chart of the chart panel: while TWS is running it fetches the at-the-money call and put of the next three monthly expiries (six market-data lines per ETF, cached 15 minutes) and uses the straddle price per expiry, without TWS the IV-based range at 30, 60 and 90 days. Markers on the cone show the expiry date and the move in percent, below them the lower/upper price, the legend carries only the two-tone Expected move swatch.
  • ETF heatmap: selectable HV window. Under Settings > General choose 20, 30 or 60 trading days for the realised volatility. The column header shows the window (HV20, HV30, HV60), the IV/HV column and the HV line in the chart panel follow it.
  • ETF heatmap: three more filter boxes above the table: IV/HV ≥, EM 30D ≥ and Ex-div ≥ days (hides ETFs whose next projected ex-dividend date lies within N days, ETFs without a known date stay visible). Their defaults are stored with Save as default, like IVR and option volume.
  • ETF heatmap chart panel: new volatility row below the daily and weekly charts with the IV of the last 52 weeks (blue), the HV over the chosen window (orange) and the 52-week high and low of the IV as dashed lines, latest values in the legend.
  • ETF heatmap chart panel: IV term structure next to the volatility chart. The six straddle contracts of the expected-move cone also deliver the model IV per expiry. A small curve shows the IV over days to expiry (one point per expiry, date and days underneath). Without TWS it says that no greeks were received.
  • ETF heatmap chart panel: the next projected ex-dividend date shows as a marker with the amount on the daily chart, on the bar of that date or at its real distance ahead of the last bar.
  • ETF heatmap: AUM fills faster. The top-up first takes the already known ETFs without net assets, ETFs without an NPORT-P filing (grantor trusts such as GLD or IBIT) are skipped for five days instead of being retried on every run and the heatmap is rebuilt right after the top-up rather than after the TWS part of the job.
  • ETF heatmap: own positions. ETFs you hold (open stock trades and underlyings of open option legs in the journal) carry a blue dot in front of the symbol, the Positions chip above the table filters to them.
  • ETF heatmap: new IV 1W column (change of the implied volatility over the last five stored trading days in volatility points, green when IV rose, red when it fell) and new OI column (total open interest, puts plus calls). The Ex-Div column now shows the days until the projected ex-dividend date, with date, amount and amount in percent of the price in the tooltip.
  • ETF heatmap: counter of shown / listed ETFs next to the filter boxes, a Reset button (clears thresholds, search, positions filter and shows every category) and a Save as default button that stores the current thresholds as the defaults for every page load.
  • ETF heatmap: new Tiles view (Table / Tiles switch at the right of the toolbar): a treemap with one block per category, tile area by AUM (square-root scale), colour by the return of the chosen period. Every filter applies to both views, a click on a tile opens the chart panel, the last used view is remembered per browser.
  • ETF heatmap: calmer table. The column explanations now live as a tooltip on the column header itself instead of an info badge per column, the chart, holdings and AI icons appear only while hovering the row and the hovered row is highlighted. The toolbar has two fixed rows: categories, search, columns, positions, counter and view on top, the thresholds with Reset and Save as default below.
  • ETF heatmap: New columns. Category (hideable, hidden by default, sortable, useful with All) and the Distance group with 52WH % (distance of the last close to its highest close of the last 52 weeks) and EMA21 % (distance to the daily EMA21), both in percent and coloured. The EMA21 columns count how long, the new columns say how far.
  • ETF heatmap: Empty cells explain themselves in the tooltip (no option chain, IV history too short, no bars, no NPORT-P filing or the ETF Vol Sync job has not run yet). The tab bar reads Last update: with the dates of IV, option data and AUM before the Prices stamp, the option ticks and the AUM last arrived, an amber dot at the IV header appears while the IV history is older than the newest price bar.
  • ETF heatmap: Favorites (star in front of the symbol, the Favorites chip filters to them) and saved screens (a named combination of thresholds, categories, search, chips, sort and grouping, applied from a dropdown, up to twenty per account). Both are saved with the account.
  • ETF heatmap: Grouped view (Group button: a heading per category with the count and the median of the sorted column) and compare mode (Compare button: tick up to three ETFs, a chart above the table draws their closes of the last year as lines starting at 100 on the first common date).
  • ETF heatmap: Unified alignment (plain numbers right-aligned with tabular digits, coloured cells centred), IV/HV on a two-tone scale around 1.0 (blue below, amber above), column headers without units (EM instead of EM 30D, HV instead of HV30, the window is in the tooltip) and active filters as chips in a third toolbar row, the x on a chip clears that filter alone.
  • ETF heatmap: The Columns menu lets you tick the return periods of the 1-3W, 1-6M and 1-3Y groups and the two distance columns one by one, as the options and volatility columns already allowed. The group checkbox still switches all of them at once.
  • ETF heatmap: The Positions and Favorites chips combine as either-or. Both ticked show every ETF that is held or starred instead of only the overlap.
  • ETF heatmap: New default of 21 columns that fits a notebook screen: Symbol, Name, Price, AUM, EMA21 D, EMA21 W, 52WH %, 1d, 1w, 1m, 3m, YTD, 1Y, IV, HV, IV/HV, IVR, IVP, P/C OI, OI and Opt Vol. The other columns (Category, EMA21 %, 2w, 3w, 6m, 2Y, 3Y, IV 1W, EM, P/C Vol, Ex-Div) start unticked and can be ticked in the Columns menu, Reset to default restores the set. YTD now sits chronologically between 6m and 1Y, the cells are slightly tighter.
  • ETF heatmap chart panel: The expected-move cone and the IV term structure showed only the front expiry for some ETFs (CIBR: October lists $1 strikes, November and February only $5 steps). The at-the-money strike is now chosen per expiry from that expiry's own strike listing, so all three monthly expiries appear again.
  • ETF heatmap chart panel: Selectable number of monthly expiries for the expected-move cone and the IV term structure. Settings > General offers 3 (default), 4 or 6, each expiry takes two market-data lines with the same wait. The IV fallback without TWS draws the same number of 30-day steps.
  • Consistent date: every day-based calculation (days to expiry, YTD, trading days, ex-div days, bar top-up) now uses the date of the app time zone Europe/Zurich. On Windows part of them took the system clock's date, so day counts could differ by one day when the computer runs in another time zone.
20 September 2026 Version 0.3.14 Fixes for rolls, transfers and option premiums, new thematic ETFs for robotics and physical AI
  • A roll was not recognised as one trade when the target contract (same underlying, strike and expiry) was already open as its own trade in the same account or when the contract being rolled away sat in two trades: each leg of the roll order landed in "its" old trade by contract id and the order never linked them. The legs of one IBKR combination order now always belong to one trade: when a leg hits a different existing trade than its sibling leg, the two trades are merged (the earliest trade remains, with a comment). On the first start of this version existing cases of this kind are merged once; spreads you split by hand (no closing legs) are left alone.
  • Rolls that version 0.3.13 reunited automatically did not receive the "Rolled" tag (nor, where applicable, "Assigned"/"Expired" and the link to the stock position). Cause: the merge path recomputed status and metrics but never ran the tag detection, which so far only ran after an import with new executions. Merging option trades by hand now runs the tag detection as well.
  • A spread rolled as a whole (e.g. a bull put spread: both legs closed, two new legs opened) now receives the "Rolled" tag too. Previously only single-leg rolls were detected because the legs of a spread overlap in time; the roll efficiency already recognised such rolls and now feeds the tag as well.
  • On the first start of this version the tags of all option trades are re-derived once; existing tags are kept.
  • A roll that IBKR executed in several partial fills (e.g. three fills within a few seconds) was labelled "Call Spread" or "Put Spread" instead of "Short Call" or "Short Put": the new leg was already open before the last partial fill fully closed the old leg and that overlap counted as a concurrently held spread. An overlap now counts as a roll when the new leg was opened only after the old leg had started to unwind and the old leg was fully closed on the same day. Legs added while the other leg is merely held (hedge, calendar, spread opened as one order) stay spreads. Existing strategy labels are refreshed once on first start.
  • ETF heatmap: two new thematic ETFs on humanoid robotics and physical AI: KOID (KraneShares Global Humanoid and Embodied Intelligence, Nasdaq) and WDRN (WisdomTree Physical AI, Humanoids and Drones, Cboe BZX). WDRN is the US listing of the UCITS fund WPAI (Xetra/SIX/LSE), which, as with earlier additions, does not fit the SMART/USD price-data pipeline. The price history of both ETFs is backfilled on the next market-data refresh.
  • Dashboard "Expiring Soon": for spreads the Premium column did not show the collected premium but quantity x average opening price of all legs x multiplier - for a bull put spread roughly the gross premium of both legs (e.g. 3,871 instead of 1,037 USD). It now shows the net opening premium of the still-open legs (credit positive, debit negative), the same figure as in the Sold Option Premiums panel and the Max Loss column; rolled-out legs no longer count.
  • Dashboard "Open Options" pie: the slices were weighted with the same formula (quantity x average opening price of all legs x multiplier) and therefore too large for spreads and rolled trades. They now use the net opening premium of the still-open legs (absolute; debit structures with the paid premium), the same basis as the Premium column in the "Expiring Soon" panel.
  • A position transfer between two accounts (Flex "Transfers" section) was booked incorrectly when the sells of the transferred shares had been imported before the transfer itself: the sells built a phantom short, the transfer-in was booked as its closing fill and the trade read "short, closed before it opened" with a wrong loss, while the later re-entry buys sat inside that closed trade and the open position carried the transfer basis instead of the real purchase price. Likewise, in the source account a late-imported transfer-out could combine the buys before and after it into one trade with a blended entry price. The import now rebuilds such trades chronologically: side from the earliest fill, one trade per position episode (a new one starts at every zero crossing), split-off transfer remainders folded back in, with a comment on the trade. Existing cases are repaired once on the first start of this version. A history whose sign flips inside a single fill (duplicate or missing fill) is left unchanged and noted in the log.
  • Price chart on the trade detail page: the expiry of an open option was drawn right after the last candle, however far away it was (e.g. a 20 Nov expiry immediately after 18 Sep). Cause: the chart's time axis counts candles, not calendar days, and the expiry was the only point after the last candle. The axis is now padded with every weekday up to the expiry, so the marker sits at its real distance and moves closer with every trading day. When the nearest expiry is within 90 days the default view includes it; near the right edge the expiry label sits left of its line instead of over the price scale.
16 September 2026 Version 0.3.13 Fix: combo trades and rolls are recognised as one trade again
  • Since version 0.3.9 the legs of an IBKR combination order (spreads, calendars, rolls) were imported as separate trades instead of one trade. Cause: the same-second combo separation by IBKR order id introduced in 0.3.9 assumed all legs of a combo share one order id - Flex however assigns each leg its own. Combo legs are now recognised by the shared root of the IBKR execution id; two independent combos filled in the same second still stay apart.
  • Combos and rolls already split by versions 0.3.9 to 0.3.12 are reunited automatically on the first start of this version; the affected trade receives a comment about it. Trades you already merged by hand are left unchanged.
14 September 2026 Version 0.3.12 Fix: error when updating from older versions resolved
  • Updating from an older version could crash the app on first start with an error like "no such column: journal_tradeexecution.underlying_price_state". The cause was a bug in the database upgrade; your data is not affected and remains fully intact.
  • The database upgrade is now fundamentally more robust: repair and recomputation steps only run after the database schema is fully updated - each step exactly once per installation, with an automatic retry on the next start if a step fails.
  • If this crash hit you: simply install this version and start normally - the upgrade resumes cleanly.
10 September 2026 Version 0.3.11 DAX, Euro Stoxx 50 and SMI: charts now show the correct index
  • The price chart of option trades on DAX, Euro Stoxx 50 and SMI now shows the index itself. Previously, the symbol "DAX" wrongly displayed the same-named US ETF (Global X DAX Germany ETF).
  • Existing trades on these indices are automatically classified as index options during the update - nothing to configure on your side.
  • Price charts added for many more futures: micro index futures (MES, MNQ, M2K, MYM), US treasuries (ZT, ZF, ZN, TN, UB), energy (incl. Brent, RBOB, heating oil, micro crude), micro metals (gold, silver, copper), Eurex fixed-income futures (Schatz, Bobl, Buxl), Eurex index futures (DAX, Euro Stoxx 50, SMI) and VIX futures. These trades previously showed an empty chart once the contract expired.
9 September 2026 Version 0.3.10 macOS: window dragging via the navigation bar fixed
  • Dragging the window by its navigation bar now goes through native macOS window management: the window follows the mouse smoothly, no longer jumps and no longer resizes unintentionally while being moved.
  • Clicks on links and buttons in the navigation bar keep working as before.
9 September 2026 Version 0.3.9 Stripe integration with fully automatic license delivery and a fixed menu bar
  • After purchase your license key is generated fully automatically and usually arrives by email within a few minutes - no more waiting for manual delivery.
  • The setup wizard now asks for your tax domicile (Switzerland/Liechtenstein or another country) and then shows the matching buy button; the answer can be changed any time under Settings > General and is included in backups.
  • The navigation bar now stays pinned to the top while scrolling on Windows too (it already did on macOS).
  • Trade detection: two independent option combinations on the same underlying that filled in the same second are no longer wrongly merged into a single trade - they are now kept apart by their IBKR order identity (e.g. two DAX bear call spreads with different expiries). Trades that were already merged incorrectly can be separated with the Split function on the trade detail page.
7 September 2026 Version 0.3.7 Stripe integration with fully automatic license generation and delivery
  • After purchase your license key is generated fully automatically and usually arrives by email within a few minutes - no more waiting for manual delivery.
  • The setup wizard now asks for your tax domicile (Switzerland/Liechtenstein or another country). Existing installations answer the question once after the update.
  • The license page then shows exactly one 'Buy license' button with the checkout that applies to you - the other route stays reachable as a subdued correction line.
  • The answer can be changed any time under Settings > General and is included in backups.
4 September 2026 Version 0.3.6 Stripe integration for license purchase
  • The license page now has a 'Buy license - Switzerland (TWINT & card)' button for secure payment (processed via Stripe). Your license key then arrives by email - your instance ID and email address are passed along automatically, nothing to copy by hand.
  • Purchasing outside Switzerland is now possible too: a separate international checkout link (card payment, incl. local VAT) sits right below the Swiss button.
  • Tidier trial notice: a single 'Manage license' link takes you to the license page with all options (purchase and activation).
3 September 2026 Version 0.3.5 Foliograph now runs in its own app window - no more browser tab
  • Foliograph now opens as a standalone desktop app in its own window instead of a tab in your web browser - with the usual window controls and the header bar plus menu tucked right at the top edge. Downloads (such as backups) and external links like foliograph.ch or the AI buttons keep working and open in your system browser. The classic browser mode remains available if you prefer it.
2 September 2026 Version 0.3.4 Frameless macOS window and Windows update fix
  • macOS: the app window drops the separate native title bar - the app header with the menu now sits right at the top edge of the window (PyCharm/Parallels style), reclaiming the ~28px the old black bar took. The window buttons (red/yellow/green) stay top-left and the window is still draggable by the header (a click activates menu items as usual, only dragging moves the window). Windows keeps its native title bar unchanged.
  • Windows update: clicking 'Install' in the setup could close the app and the installer without updating - the old version kept running. Cause: the setup terminated the running Foliograph.exe with a process-tree kill (taskkill /T); when Foliograph was running with administrator rights the installer itself was a child process and was killed mid-install. The tree kill is gone now (it was redundant anyway - the scheduler process shares the same name and is terminated directly).
  • App window (webview): external links reliably open in the system browser or mail app - AI buttons (ChatGPT/Claude/Perplexity/Grok), foliograph.ch and the license email with the Instance ID. A link on the activation page used to navigate the whole window away with no way back; external anchors now consistently carry target="_blank", locked by a ratchet test.
1 September 2026 Version 0.3.3 Journal: leaner default columns and tidier list actions
  • Journal: default columns are trimmed to the essentials. The Options journal now shows Symbol, Option Strategy, Strike, Expiry, Tags, Strategy, Status, Last Execution, DTE, PnL and PnL (Base). Stocks & Futures shows Symbol, Type, Intent, Side, Strategy, Status, Quantity, Currency, Last Execution, PnL and PnL (Base). Every other column (e.g. Codes, Mistakes, Opened, Roll Eff., CRV) stays available via the Columns picker.
  • Your own column customizations are preserved: only columns you never toggled yourself follow the new defaults - deliberate choices are left unchanged.
  • Journal selection bar: the duplicate gear icon has been removed. The 'Strategies & Mistakes' catalog is still reachable via the toolbar link of the same name.
  • Strategies & Mistakes: a 'Back to list' link returns you to the last filtered and sorted journal list - just like the trade detail view.
  • Settings > Data & Backup: in the automatic-backups table the 'Download', 'Lock' and 'Delete' controls in each row were not the same height - 'Download' (a link) sat slightly lower than the two buttons beside it. All three now line up at one height.
30 August 2026 Version 0.3.2 Journal: calendar spreads now show correctly as open
  • Journal: calendar spreads (same strike, two expiries - e.g. Long Calendar or Double Calendar) were wrongly shown as 'Closed' while still open. Cause: the status calculation collapsed the two legs sharing a strike and right, so they cancelled each other out. The expiry is now part of the calculation, keeping the near (sold) and far (bought) leg separate. Existing, wrongly closed trades are recomputed automatically on update and shown correctly again.
  • Desktop: the app database now shrinks even without a large cleanup run - once enough free pages have accumulated, an automatic VACUUM hands the space back (from about 305 MB to roughly 107 MB on an affected install).
  • Desktop: after sleep or pause (laptop standby, virtual machine) the app resumes the update check and market-data refresh immediately instead of waiting for the next interval - so the update notice reliably appears after waking and market data is current again.
  • Windows: update downloads now write their status file with short retries if an antivirus scanner briefly locks it - the previous 'access denied' error is gone.
  • Dashboard: opening it no longer writes a preference to the database; the page therefore loads more reliably without delay on the desktop while data is being refreshed in the background.
29 August 2026 Version 0.3.1 Journal: back button and saved filters
  • Journal: the trade detail view now has a 'Back to list' link that returns you exactly where you were - with all active column filters, sorting and scroll position intact. Each list (Stocks & Futures, Options) also remembers your last filters per view: reopening the list - via the top navigation or after a restart - restores them automatically. Clearing all filters keeps the list unfiltered (that choice is remembered too).
  • Trade detail: tidied header. 'Back to list' now sits on its own row above the title (instead of an easy-to-miss link next to the symbol) and the actions have a clear hierarchy: 'Edit' as the highlighted primary button, with rarely-used ones (Reprocess, Submit for support, Delete) grouped into an overflow menu behind the '...' button.
28 August 2026 Version 0.3.0 Native app window instead of a browser tab (beta)
  • Foliograph now runs in its own native window instead of a browser tab: with its own Dock/taskbar entry, no address bar and no getting lost among your other browser tabs. The window uses the operating system's built-in web view (macOS WebKit, Windows WebView2); downloads (e.g. the backup ZIP) and external links (e.g. 'Open in ChatGPT', which opens in your system browser) work as before. If the window ever fails to start, the app automatically falls back to the previous browser mode - so you are never left without a UI. A switch in config.json ('shell': 'browser') forces the old browser mode at any time. This is a beta feature on the update channel of the same name.
26 August 2026 Version 0.2.48 Windows update: setup wizard starts in the foreground
  • Windows in-app update: the setup wizard now starts in the foreground. Previously, after clicking 'Install', the setup's language selection dialog opened behind the browser window and had to be brought forward via the taskbar. The app now passes your Foliograph language to the setup directly - the language dialog is skipped and the wizard appears in front right away.
  • Backup list (Settings > Data & Backup): the 'Strategies' column mistakenly counted the unused trade-combo model and showed 0 even when the strategy catalog had entries. It now counts the catalog strategies (the 'Strategies' page). The data itself was never affected - strategies were always written to the backup; only the number in the overview was wrong.
25 August 2026 Version 0.2.47 General code review and various user-interface improvements
  • Narrow windows: the top navigation overlapped itself at about half-screen width. It now wraps onto its own second row in narrow windows (all menu items stay visible) and keyboard focus is now indicated by a visible outline everywhere in the app.
  • Empty views now link to the next step: an empty journal links to Trade Sync (connect IBKR or import a CSV), the account-value card on the dashboard leads straight to Trade Sync when no data exists yet and the market-data notice explains that data loads automatically within about 10 minutes while TWS is running - with a link to the Market view to refresh immediately.
  • Smoother long sessions: fixed a memory leak on page navigation - the chart popup's click and keyboard handlers accumulated on every navigation and gradually slowed the interface down.
  • One-time re-login required after this update: sessions now live in a browser cookie instead of the database - removing wait times when background jobs are writing data.
  • Consistent naming: Help now calls the Market tabs exactly what the UI shows ('Market Overview' instead of 'Indices & Volatility', 'Futures' instead of 'Commodities tab') and English texts gloss the IBKR term 'Kontoauszug' as 'Kontoauszug (Account Statement)' throughout - so searching Help finds the labels you actually see on screen.
  • Faster page switches on the Market and Analytics pages: the page code of the four largest views (Market Overview, Futures, ETF World Map, Analytics) now loads once per tab and is cached by the browser instead of being re-sent and re-parsed on every navigation. The hover chart panel (Market Overview, Futures, ETF Heatmap) is now one shared component - identical behavior on all three tabs, including dark-mode switching and translated loading texts.
  • Chart polish: the trade-chart popup markers are now translated (Einstieg/Ausstieg/Verf. instead of Entry/Exit/Exp in the German UI), their label boxes follow dark mode and the date axis labels on the Macro and Fundamentals charts are slightly larger and easier to read. The app also reliably remembers your scroll position when navigating back - including on pages whose content renders after the page loads.
  • Journal tables: the header filter dropdowns now show their column name when unset (e.g. 'Strike', 'Ccy', 'PnL') instead of a clipped 'All ...' text - in narrow columns only the caret was left, making the filter row hard to scan. A minimum width keeps the name readable; the full 'All ...' text appears as a tooltip.
  • UI polish: analytics tiles now show an explanatory note instead of an empty card or a degenerate chart when there is little data. The ETF heatmap's 16 category checkboxes are tucked behind a collapsible 'Categories' control with an active-filter counter. The Help page lazy-loads its screenshot guides. The trial banner links straight to the license purchase page (when configured). Settings and System now mention the active daily auto-backup.
  • Better discoverability: the Strategies & Mistakes catalog now has a visible, labeled entry in the journal toolbar (previously only reachable via the gear icon after checking rows). Backup is consolidated onto a single surface under Settings > Data & Backup - the Backup button in System > Overview jumps straight there. The version number in the top bar now always links to the version history.
  • Analytics responds faster after trade changes: the hedge-budget panel remembers each trade's premium flows and, after a sync or an edit, only re-reads the trades that actually changed instead of recomputing the entire options history (with about 1,200 option trades: down from roughly 340 ms to just over 90 ms).
  • ETF heatmap: the filter bar takes less space - the search field now sits right next to the categories dropdown on one line and when expanded the category chips flow on the same line after the dropdown instead of on separate lines below.
  • Backup management in Settings: Data & Backup now lists the automatic backups with date, size and trade count - each one can be downloaded, deleted or locked individually. Locked backups are never removed by the automatic cleanup and don't count toward the limit; how many backups are kept is now configurable (default 14).
  • Settings reorganized into five tabs: General (preferences, license, updates), Connections (TWS, IBKR Flex, optional data feeds), AI (connections and prompts), Data & Backup and User Accounts. Each page now only loads its own content; existing links and bookmarks to Settings keep working.
  • Backup list refined: compact table instead of full page width, uniformly sized action buttons and new columns showing executions, comments, attachments, strategies and the app version that wrote the backup (older backups show '-').
  • Backup on demand: 'Create backup now' in Settings > Data & Backup instantly writes a backup into the data folder, visible in the list. A new Source column shows whether a backup came from the daily background job or was created manually; retention applies to both - a locked backup is always kept. The list also states that a backup is taken automatically once a day and shows the filesystem folder the files live in (click to copy).
20 August 2026 Version 0.2.46 Row charts in the market overview, reliable 'As of' timestamp
  • Windows installer: the setup window now stays in the foreground. Previously it could disappear behind the browser after clicking 'Install', because closing the running app handed the window focus back to Windows.
  • Market pages: the 'As of' timestamp now shows the last successful data sync with TWS instead of the last refresh attempt. When TWS is not running, the timestamp simply stays put - an older stamp by itself signals that the tables have not received new index data since then. Previously it advanced on every run, even when TWS was unreachable.
  • More compact Futures tab: the IBKR Data Subscriptions panel now collapses to a single row - title, six small per-exchange status labels (e.g. CBOT Live, CME Frozen) and an expand arrow. Explanation, legend and the detail cards with Open-Interest coverage only appear when expanded; the expand state survives automatic refreshes.
  • Hedge figures always visible: the 'Open hedges' line in the Sold Option Premiums panel and the Hedge Budget panel in Analytics now render even without hedge-flagged strategies - as a zero state (0, 0% of open short premium) with a hint pointing to the strategy catalog, instead of disappearing entirely.
  • Market overview: every row of the Volatility and US-Treasury tables now carries a chart icon that opens a line chart of its history - with a window toggle (3M-5Y, defaulting to the selected percentile window) and the window low/high as dashed context lines. The redundant hover overlays of the two tables are gone. The enlarged curve charts (VIX futures curve, yield curve) now open pinned via a magnifier icon in the header instead of transient hover; the yield curve overlay additionally shows the curves from 1 week and 1 month ago for comparison.
15 August 2026 Version 0.2.45 Hedge budget: option premium collected vs. premium invested in hedges
  • New: Hedge Budget panel in Analytics. It compares the option premium you collected (net opening credits of your non-hedge option trades) with the premium invested in your hedging strategies - as an overall share, per month (chart with your personal target line, e.g. 10%) and split by hedge strategy including realized PnL. Rolls count in the month of the new opening; all amounts are converted to your base currency at the fill date.
  • New: 'Open now' row in the Hedge Budget panel - the current-protection snapshot, independent of the date filter: open short premium still exposed to risk (identical to the Sold Option Premiums figure on the Portfolio page), open hedge premium, current cover ratio and the number of open hedge positions with their nearest expiry (DTE). The By Hedge Strategy table additionally shows Open (N) and open premium per strategy. The Portfolio Sold Option Premiums panel carries the same information as an 'Open hedges' line right next to the exposure.
  • New: strategies in the catalog (Journal > Strategies & Mistakes) can be flagged as hedge-budget strategies. Only flagged strategies count toward the budget - an FX-hedging strategy, for example, deliberately stays out of the ratio. Your target is configurable under Settings (default 10%).
  • Help page: a new section explains the difference between Intent (Trade/Investment), the auto-detected option strategy and your personal strategy - plus the hedge-budget definitions.
  • Fixed: renaming a strategy under Journal > Strategies & Mistakes now also relabels all trades it is assigned to. Previously they kept the old name, so the strategy picker showed both variants. The success message now reports how many trades were relabeled.
  • Fixed: switching to the Dashboard and Market pages could take up to 20 seconds. The market snapshot table had grown to 346 MB (77% of the database) and had to be read in full on every page load because it lacked an index. The date column is now indexed and pages that only show the timestamp no longer load the large snapshot blob at all.
  • New: the EMA-21 table on the Market dashboard now shows 365 instead of 65 trading days - a good 17 months of market history to scroll back through. The rows are recomputed from the stored daily closes, so the history stays complete.
  • Cleanup: market snapshots are no longer duplicated on every refresh. The pre-rendered EMA grid only changes when new daily closes arrive, yet it was rewritten every 10 minutes - 1547 rows held just 49 distinct contents. An unchanged grid now updates the existing row and a daily cleanup job keeps the table small. Your price data (daily bars) is untouched.
  • Fixed: the market snapshot recorded with every trade (VIX and EMA-21 breadth) read the EMA counts from the oldest instead of the newest row of the market table, so the breadth values came from the start of the display window rather than the trading day itself. Affects the 'Daily > EMA21' and 'Weekly > EMA21' fields of the market snapshot on new trades; already stored trades are unchanged.
  • Market Overview: in the EMA21 table, rows from an earlier year now carry a two-digit year (e.g. "Tue 4.3.25") and the change of year is marked by a thicker separator. With 365 trading days the table spans a year boundary - scrolling back used to leave the year of a row unclear.
  • Fixed: the Portfolio Sold Option Premiums panel (and with it the open short premium in the Hedge Budget) now computes outstanding premium per leg quantity instead of leg price sum x trade quantity. For unbalanced credit structures (e.g. 1x2 ratio spreads) the amount was wrong or the trade was incorrectly dropped as a debit position; balanced structures (short puts, verticals, iron condors) are unchanged.
  • Trade detail view: mistake assignment is now a regular field in the header grid (after Source) - the assignment form opens from a compact plus popover instead of permanently occupying two rows. The note placeholder now reads 'What went wrong? (optional)' to distinguish the mistake note from the journal notes below.
  • macOS updates now install themselves with one click: after the verified download the banner button reads 'Install and restart' - Foliograph quits, replaces the app in the Applications folder and relaunches automatically. Finder's replace/in-use dialogs and the drag to Applications are gone. If automatic installation is not possible (e.g. installed outside /Applications), the DMG window opens as before.
15 August 2026 Version 0.2.44 Assign strategies & mistakes with a mistake review, internal cash transfers in capital flows and smoother macOS updates
  • New: Strategies & Mistakes. Under Journal > Strategies & Mistakes (gear icon in the journal toolbar) you maintain your own catalog of strategies (e.g. Short Put, Breakout, Hedging) and typical mistakes (e.g. FOMO entry, position too large). In the journal, select several trades via checkbox and assign a strategy or mistake to all of them from the new bar above the table; mistakes can also be added individually (with an optional note) on the trade detail page. Catalog entries carry a color and description and can be archived instead of deleted - already-tagged trades and the analytics are kept. Your existing strategy labels were adopted into the catalog automatically; backups include the catalog and assignments.
  • New: Mistake review in the analytics overview. It shows, per mistake, the number of affected trades, total and average PnL, plus tagged-vs-untagged comparison and a monthly breakdown - making visible which mistakes cost you how much. The journal tables gain a toggleable, filterable mistakes column to match.
  • Journal: The two confusingly similar merge actions have been cleaned up - merging several partial trades into one is now unambiguously called 'Merge into one trade' and the bar above the table groups selection, assigning and merging clearly on a single line.
  • Internal cash transfers between your IBKR accounts now show up under Analytics > Capital flows: IBKR reports them in the Flex report only in the 'Transfers' section (not among the cash transactions), which was previously only read for position transfers. The next Flex sync backfills missing transfers from the last 365 days automatically; each account gets its own entry (incoming positive, outgoing negative) and transfers already imported via statement CSV are not double-counted.
  • macOS update: After clicking 'Run installer', the window with the Foliograph icon to drag onto 'Applications' now opens in the foreground automatically - previously the disk image was only mounted in the background and had to be opened manually from the Downloads folder.
  • Market-data refresh starts faster: IBKR contract details (~300 tickers), once resolved, are now kept across app restarts. The 'Resolving contract details' step is skipped almost entirely; only new tickers and futures past their expiry are resolved again.
  • Trade detail chart: exit markers landed on the wrong day when the cached price history was out of date (the marker silently snapped onto the last available bar, e.g. an Aug 4 exit drawn on Jul 31). Stale histories are now topped up automatically in the background when the chart opens; if no data source is reachable, markers outside the available history are hidden and a notice explains why.
  • The blue update notice now also appears in a long-lived browser tab: navigating within the app did not refresh the notice bar (since 0.2.43), so a tab loaded before the update was detected only showed it after a manual reload.
11 August 2026 Version 0.2.43 Import repair: duplicate and wrongly open trades are cleaned up automatically
  • The update runs a one-time automatic repair of the trade journal: duplicates from the interplay of CSV imports and Flex syncs are removed and positions that a retroactive import had split across two trades (one trade wrongly stayed open, the other was closed with too many sells) are reunited. Every merge is documented as a trade comment; the repair can be previewed with 'python manage.py repair_import_history --dry-run'.
  • Execution times from CSV imports (account statement/activity statement) are now correct: IBKR delivers the timestamps in US Eastern time, but they were stored as UTC - all CSV executions appeared 4-5 hours early. Existing rows are adjusted automatically during the update (Flex times were already fixed in 0.2.42).
  • Repeated imports now recognize already-known executions even when their stored timestamps still come from the old clock (4-5 hour offset) - a full Flex re-import therefore no longer creates duplicate trades.
  • Retroactively delivered executions (e.g. on the first Flex sync after a long CSV-only history) now land in the correct, already-closed trade instead of spawning a new open ghost trade.
  • Backfilled opening executions find their trade: when a faster import source delivered the buy-back of a position first and the activity sync supplied the opening only days later, both halves remained as separate, permanently open trades (this also affected options, e.g. sold puts). Such pairs are now merged directly at import time and the one-time repair during the update also cleans up existing option pairs (previously stocks/futures only).
  • Rolled futures positions: closing executions of an older contract month now find their trade even when they come from a different import source - previously e.g. a Flex sell could not close the CSV-imported, rolled trade and remained as its own open trade.
  • When a trade's sells exceed its buys (a sign of missing executions from another import source), the trade now receives a visible data-quality comment instead of silently counting as cleanly closed; the note disappears by itself once the missing executions arrive.
  • Internal position transfers between your IBKR accounts are now imported from the Flex report ('Transfers' section): the transfer closes the position in the source account at book value (no artificial profit/loss) and continues it in the target account with the same cost basis - options included. Previously the source trade stayed open forever and the sells in the target account appeared as a short sale. This requires the Flex query at IBKR to include the 'Transfers' section (the setup guide has recommended it for a while); if it is missing, the sync diagnostics now point it out.
  • Noticeably smoother to use: background jobs (market data, sync, reports) now run in their own process and no longer compete with page loads for CPU time and database access - previously pages could hang 10-40 seconds while a job was running, especially around the 10-minute refresh intervals.
  • Switching tabs now feels instant: clicking a navigation link loads the next page in the background and swaps the content in place instead of rebuilding the whole page - no more white flash, the live-data connection stays up and browser back/forward keep working as usual.
  • PnL correction for late-arriving commissions: when IBKR delivers a fill's commission only after the initial import (e.g. Flex trade confirm first, activity report overnight), the trade PnL is now recomputed instead of keeping the old value without closing commissions. Option spread legs from Flex imports also keep their commission from the start. On update, a one-time repair fixes affected option trades automatically (unambiguous cases only; manually edited PnL values are left untouched).
7 August 2026 Version 0.2.42 Underlying prices for index options self-heal, correct codes and times from Flex imports
  • Underlying price, Dist. %, Delta and IV now also appear for closing executions of index options (SPX, RUT, XSP): the indices' daily bars had stalled because TWS answers the one-time 4-year backfill request for these indices with nothing - the fetch now automatically retries with a shorter span and an empty result shows up as a warning in the log instead of vanishing silently.
  • A closed option trade no longer drops out of the market data refresh while some of its executions still wait for their underlying price - previously exactly the closing execution could never receive its price because the trade disappeared from the fetch list the moment it closed.
  • Trade codes (O/C, assignment, expiry) now also arrive from the 10-minute Flex sync: trade confirmation reports deliver the codes in a different XML field than activity reports, which was not read before - the Codes column stayed empty for these executions.
  • Execution times from Flex imports are now correct: IBKR delivers the timestamps in US Eastern time, but they were stored as UTC - all Flex executions appeared 4-6 hours early. In addition, fills from the overnight session (from 20:00 ET, e.g. SPX GTH on Sunday evening) are now assigned to the next trading day, so they too receive a daily closing price.
  • Tidier update banners: all actions (What's new?, Download and verify, Run installer, Open Downloads folder) stay on one line instead of each on its own; the X button in the installer banner is gone and the 'Foliograph was updated' notice is dismissed via a Close link. The browser also always loads the fresh stylesheet after an update - previously banner elements could appear as oversized teal buttons with a stale cached CSS.
  • Analytics filter chips redesigned: a subtle outlined pill with a short label (Symbol: USO) and a small remove button instead of the solid teal pill with the wrapping 'By Symbol' caption.
  • Analytics: rolled trades carry a small 'Rolled' badge in the expanded trade list - so an interim realized loss is recognizable as part of a still-running roll chain.
  • Clearer message when a data refresh fails: fully translated (the technical error text now lives on the details page only), with a hint at the next automatic attempt and the manual refresh. The notice clears itself as soon as a refresh succeeds again - without reloading the page. The market overview also no longer shows a futures failure when the overview data itself is current.
  • Manual market refresh now runs in the background: the Refresh button starts a background job and shows a short hint line instead of the blocking progress bar - you can keep working and navigating, the views update themselves once the data is in.
  • Manual refresh is much faster: the button loads only the active tab's data (futures data on the Futures tab, prices and indicators elsewhere) instead of always both; already-current price series are skipped (now also on weekends) and the live indicators (VIX/VXX/VXV) appear within seconds on larger backfills instead of at the end.
  • Dashboard panels (KPIs, indices, earnings, expiring soon, recent trades) update themselves in place when new data arrives - the previous 'New data - reload' button in the bottom-right corner is gone on the dashboard.
  • Analytics: new symbol search box in the filter bar - with autocomplete across all traded symbols; a selection filters key metrics, charts, breakdowns and the trade list just like clicking a row in the symbol table and can be removed via the filter chip.
  • The manual market refresh hints ('Refresh running in the background...', 'Data updated.', failure hint) now fade out after the notification display time configured in Settings - previously the running hint stayed until the job finished and the completion message disappeared after a fixed 5 seconds.
5 August 2026 Version 0.2.41 Reliable base-currency conversion and tidier notification banners
  • Missing base-currency conversion (e.g. CHF PnL) now self-heals: if fetching the ECB exchange rate fails when a trade closes (e.g. a network timeout), the 10-minute sync automatically retries the historical rate; the Reprocess button on the trade detail page also fills in a missing rate immediately. Previously the base PnL of such trades stayed empty for good - the journal total left them out and analytics fell back to an approximate rate.
  • The notification banners at the top of the window (update installed, installer ready, download failed) have a new close button: a round icon at the right edge of the banner instead of a loose X below the text.
  • ETF heatmap extended by two funds: IWC (iShares Russell Microcap) extends the size ladder in Size & Style below small cap, IGF (iShares Global Infrastructure) adds the global infrastructure view next to the US-focused PAVE.
  • Cashflow import is reliable again: the daily Flex fetch (dividends, interest, deposits/withdrawals) fired at the exact same instant as the 10-minute trade sync on the same IBKR token and was therefore rejected daily with 'Too many requests' - new cashflows (e.g. deposits into a new account) did not appear in analytics for weeks. The fetch is now staggered and automatically retries with a backoff when rejected.
5 August 2026 Version 0.2.40 Faster desktop app and license purchase right from the app
  • Faster page switches in the desktop app: background jobs are throttled (at most two at a time) and the one-shot startup jobs are staggered over time instead of all firing at once - page loads right after launch no longer stall for seconds.
  • New loading bar at the top of the window: when switching tabs, a slim progress bar immediately shows that the next page is loading.
  • Dashboard and Market pages stay fast permanently: the market computations (overview, ETF heatmap, world map, commodity table) are rebuilt in the background after each data refresh and pre-warmed at app launch, instead of on the next page visit - the occasional 2-second stall when switching tabs is gone.
  • Buy a license right from the app: the expired, activation and license pages now show buy buttons (Switzerland and international) that open Stripe checkout with the Instance ID prefilled - the license key arrives by email afterwards. The buttons only appear once the purchase links are configured.
  • License pages readable in dark mode: info boxes and titles now use the theme colors instead of hardcoded light colors.
  • Index options show all option elements on the trade detail page again: the executions table gets the Right/Strike/Expiry columns plus underlying price, Dist. %, Delta and IV, along with the Legs panel and the Reprocess button - after the introduction of the index option asset type these were only visible for stock and future options.
  • Market overview on laptop displays: the three panels Volatility, Indices and US-Treasury now always stay side by side in one row from 1400px window width and shrink to fit (narrower range and percentile bars), instead of wrapping the Treasury panel to a second row and clipping charts.
  • Market overview: the labels at the right edge of the VIX futures and yield curve charts (last value, month/maturity label, difference line) are no longer cut off.
  • The market data refresh now shows the progress message 'Rebuilding market caches...' (also in the system activity panel) for the previously silent phase after 'Building dashboard...' - the refresh used to look stuck at that point.
  • The market caches are now also pre-warmed in the background at startup in development mode (runserver) - previously the first dashboard or heatmap visit after every (auto-reload) restart paid the ~2s build inside the request.
27 July 2026 Version 0.2.39 Nicer release notes and an in-app version history
  • Compact update banner: just the version and a short title on one line; the full release notes open via "What's new?" as a popover.
  • New in-app version history: all versions with their changes under Help > What's new - linked from the update banner, from Settings > About / Updates and from the App panel under System > Overview.
  • A one-time notice after each installed update that points directly to what changed.
  • More reliable update check after an update: the first check on the new version fetches the update manifest in full once, so the installed version is recorded correctly on the server side.
  • Option executions table: the underlying price shown for each fill is now exactly the official close of that day or a live intraday price while the day is still open. Delta and implied volatility are recalculated from it.
  • Missing underlying prices fill themselves in: a fill whose daily bar isn't cached yet shows "no data yet" and is fetched in the background (the same source the price chart uses), then resolves automatically - so option trades no longer stay without a price.
  • Existing option trades are re-checked once after this update, so previously wrong or missing underlying prices are corrected automatically.
  • Option strategy detection now recognises calendar and diagonal spreads: Long/Short Calendar Call and Put Spread, Long/Short Diagonal Call and Put Spread, plus Double Calendar and Double Diagonal Spread. Previously such trades (same/different strikes across two expiries) were mislabelled as Bull/Bear spreads or Iron Condors. Existing trades are re-classified once after the update.
  • Unified account selector for Portfolio and Analytics: up to four accounts as one-click tabs (with "All"), five or more as a dropdown. The list always shows every known account - including accounts without open positions - and the selection is remembered while switching between the pages.
  • Account selection is now app-wide: the Dashboard and both Journal tabs follow the selected account too (position and P&L panels follow the selection, market panels stay market-wide). In the Journal the toolbar selector replaces the previous account filter in the table header row. The account column is now hidden by default in the tables and can be re-enabled via the Columns picker.
  • DTE fix for rolled option trades: remaining runtime and the dashboard "Expiring soon" panel now only consider open legs - rolled-away (bought-back) legs no longer count as the next expiry. Affects journal options, portfolio and dashboard.
  • Screenshots and attachments now display in the installed desktop app: media files (/media/) are served by the app itself (login-protected); previously they were only visible in development mode.
  • New Option Max Loss panel on the Portfolio page: computes the worst-case value at expiry of every open option position payoff-based (spreads, iron condors, butterflies, short puts, naked calls) and sums it per account in the base currency and as a percent of NLV - split into a down tail (put side) and an up tail (call side), since a market shock can hit both at once. Net short calls are marked as unlimited, covered positions are listed separately. Plus a sortable Max Loss column on the Portfolio Options tab and a KPI in the header strip.
  • New Index Option asset type: cash-settled index options (SPX, SPXW, NDX, RUT, VIX, XSP, etc.) are no longer filed as stock or future options but recognised as their own type - across all import paths (TWS sync, Flex, statement CSV; the Flex import used to classify every index option as a stock option and SPX weeklys with trading class SPXW were missed by the TWS sync too). Existing trades are reclassified once after the update. The Sold Premium panel gains its own Index Options category (without an assignment value, since no shares can be assigned) and the underlying price of index options now resolves from the cash index series (^SPX instead of the futures series).
23 July 2026 Version 0.2.38 Live dashboards, chart upgrades, roll efficiency
  • Live dashboard updates: open pages receive data updates automatically - the Market, Futures, Macro and Commodity tabs refresh their panels silently in place, while the Heatmap, World Map, Stock Fundamentals and Home Dashboard show a subtle "new data available" hint.
  • TradingView-style chart crosshair: all line, band and bar charts on the Macro and Commodity Fundamentals tabs show date and value at the nearest data point on hover; seasonal band charts additionally show the prior years' min-max range.
  • Configurable table columns in the journals, the Portfolio (now with Stocks/Futures and Options tabs) and the "Expiring soon" panel - including new columns for the open date and days to expiry (DTE).
  • Roll efficiency for rolled options: a new metric in the options journal and on the trade detail page, plus a Rolls tab in Analytics charting efficiency and moneyness of every roll.
  • Option greeks per execution: underlying price, distance to strike, delta and IV directly on the trade detail page - live from TWS and additionally derived from the fill price, retroactively for existing trades too.
  • Upgraded charts everywhere: symbol watermarks and 52-week distances (52WH/52WL) in all price charts, interactive daily/weekly charts now also on the Futures tab, sortable EMA21 trend columns in the ETF Heatmap, new ratio and volatility charts (XLY/XLP, TLT/SPY, VIX, VVIX, VIX/VIX3M) - and all market charts are now scrollable and zoomable like the journal charts.
  • Convenience: sticky table headers while scrolling and instant switching between the Portfolio tabs without a page reload.
18 July 2026 Version 0.2.37 Automatic backups and account recovery
  • Automatic daily journal backup as a ZIP in the data directory (the newest 14 are kept) with a freshness card under System.
  • Account recovery from a backup file directly on the login page.
  • Automatic trade sync can be enabled/disabled per user.
14 July 2026 Version 0.2.36 P/L fix for rolled spreads, setup assistant
  • P/L fix for rolled option spreads: exact calculation from all executions instead of the incomplete IBKR value.
  • Fixed commission calculation for trade-confirmation Flex queries.
  • Reworked setup assistant, fixes for the trade export/support function and the installer launch on macOS.
8 July 2026 Version 0.2.35 Three new dashboards, TWS backup data source
  • Three new dashboards: Macro, Stock Fundamentals with earnings and Commodity Fundamentals.
  • Massive.com as a backup data source when TWS is not running.
  • Improved option strategy detection with a "Reprocess" button and an updated setup guide.
30 June 2026 Version 0.2.34 German statements, download progress
  • Visible download progress during updates.
  • Support for German CSV account statements including currency conversion fees.
  • Trade duration in days for analytics, a total row in the P/L overview and various display fixes.
24 June 2026 Version 0.2.32 System tab and configurable AI prompts
  • Improved System tab and configurable AI prompts.

Test it with your own data

Try Foliograph free for 30 days with your IBKR account, no credit card.

Try for Free

Click the image for full size