FA Back 3.8 - Release notes
FA Back 3.8 [latest updated version FA Back 3.8.12] has been released.
FA Back 3.8
Contains: Various improvements in existing features
Released: October 13th, 2020
Improvements - see attached FA Back 3.8 Release notes for more details.
Restructured TWR calculation, including support for market-value-based and exposure-based TWR calculation and controlling on security type level how TWR is calculated
Support for defining min/max for each position in investment plans and model portfolios, providing more tools for rebalancing and limit definitions
Unified way to differentiate unit-based and trade-amount-based trade orders through a new "Execution method" field for trade orders
Improvements in accrued income management, providing additional tools to track your positions’ purchase value without accrual and your portfolios’ paid accrual
Other smaller improvements in existing features, including for example portfolio's dynamic groups visible in the Portfolio window, auditing changes made in Analytics+ custom columns, and Analytics+ custom columns supporting a description
Better support for managing profiles, or custom tabs for contacts, portfolios and securities, through Preferences
Better support for managing business rules via decision tables in Excel
In addition to the improvements highlighted in the release notes, FA Back 3.8.0 includes the following bug fixes and improvements:
Navigation in the top toolbar has been moved to the left and the old FA Solutions logo has been removed - the logo in the red toolbar was duplicate to the new application logo shown in the Global App Bar. In addition, the FA logo shown in your browser's tab (i.e. favicon) has been updated to reflect the new FA application logo.
Along with restructuring the TWR calculation logic, some specific issues with the previous calculation logic have been resolved. For example, TWR calculation now works correctly also after one-to-many exchanges, and Analytics+ now shows TWR correctly for FX Forward due to the restructured logic supporting both long and short positions correctly.
You can no longer import transactions with different currency than the security currency into the system - such transactions are invalid from FA's point of view, and transaction importer now validates that transaction's currency equals to transaction's security's currency.
You can now import bond transaction's accrued interest with the keyword "AUTO" with the transaction importer also without explicitly defining a value for "coefficient". Coefficient is only relevant for indexed linked bonds, and automatically calculating the accrued interest for other types of bonds now works without unnecessarily having to set a coefficient in the import file.
"Paid accrued interest" column in Analytics+ now correctly shows the paid accrued interest also when fully or partially closing a short position - accrued interest from the "buy" that closes the short position is now correctly recorded as paid accrued interest.
Both "absolute" and "relative" options in Rebalancing parameters for "Filter out small trade orders based on" "Minimum change %" work correctly. Before, relative approach was incorrectly used regardless of the selection.
Points field in the FX swap window now correctly reacts to the selected number formatting, showing the decimal separator according to Number formats defined in Preferences. In addition, other number fields in the FX Swap window now correctly format the values in all scenarios.
You can now manually add large investment plans to your portfolios on one go in the Portfolio window: the Investment plan tab now correctly gets a scroll bar if the content of your investment plan exceeds the space available in the window. Before, scroll bar appeared only after saving.
[Modified] indicator in Contact, Portfolio and Security windows now has correct translations in Finnish and Swedish, instead of always showing the text in English.
Texts in Transaction view's extended search criteria to search for transactions base whether they have a settlement date have been fixed. Before, the search criteria incorrectly referred to "payment date" when searching is actually done against "settlement date" - fixed options are now "Ignore settlement date", "Has settlement date" and "No settlement date".
Analytics+ now shows for example contact names properly if you have chosen to obfuscate certain sensitive client information before storing it into the database.
Fixed an occasional error in storing report data if benchmark indexed values for some reason ended up as NaN.
Along with the improved support for managing profiles (custom tabs for contacts, portfolios and securities), you can now order the custom tabs shown in the corresponding windows. Now the order the profile tabs are shown in is based on the code of the profile, providing you with tools to re-order the tabs if you'd wish. In addition, search views now show different types of profile fields correctly, the performance of determining what custom columns are available has been improved, and fields without a caption are now shown appropriately as selectable columns.
In addition, you now have an option to use a "light" mode for populating a list of contacts or securities in your profiles to prevent opening such profiles to eat up memory. In case your custom profiles have multiple fields showing lists of contacts or securities, you can now change to use the "light" mode to improve the performance of loading the data.
Processes with multiple consecutive user interfaces with different sizes are now properly placed on the screen. Before, the second UI window's top-left corner was at the same point as the first UI's top-left corner, which was very problematic if we have a small UI followed by a large one (large UI can go off-screen in the bottom-right), and a bit silly if we have a large one followed by a small one (UI goes to top left corner).
Fixed issues related to installing extensions with certain dependencies from FA AppStore sometimes failing, and increased logging level to "error" to be able to better notice if downloading artifacts for some reason fails.
You can now properly get grouped analytics hierarchy through GraphQL APIs.
In addition, FA Back has been restructured in the background for it to better fit our microservice architecture. For example, certain technologies have been upgraded to latest versions, new technologies have been introduced for improved facilities for logging, and some technologies are changed for better performance of the application.
Updates to FA Back 3.8:
FA 3.8.1 Release notes
FA 3.8.1 is an update to FA 3.8. This update includes the following bug fixes:
Fixed an issue that prevented upgrading to FA 3.8 from FA 3.4.x.
FA 3.8.2 Release notes
FA 3.8.2 is an update to FA 3.8. This update includes the following bug fixes:
Exchanges via a "temporary security" (used to maintain FIFO chain when exchanging a security to itself for example due to a spin off) now works again properly, without interfering with the report recalculation. This issue was introduced in version 3.8 when restructuring the TWR calculation logic to take into account more complex exchange scenarios.
Fixed a possible conflict in report recalculation when report data and purchase lots are updated simultaneously in a portfolio using "average" valuation method: report recalculation logic now ensures that report data and purchase lots are not recalculated at the same time in the same portfolio, ensuring there are no conflicts with "average" valuation.
Fixed an occasional issue related artifact download sometimes failing when installing processes through FA AppStore or when installing artifacts manually through Administration view.
FA 3.8.3 Release notes
FA 3.8.3 is an update to FA 3.8. This update includes the following bug fixes:
Fixed an issue related to rules not being always initialized properly due to false positive error detection. After this fix, all rules (installed through FA AppStore or uploaded through Document management) are initialized properly. In addition, all Decision table XLS files installed along with processes are now loaded correctly.
FA 3.8.4 Release notes
FA 3.8.4 is an update to FA 3.8. This update includes the following bug fixes:
Custom fields for contacts, portfolios and securities are now correctly shown as columns on the search views in FA Back and tables in FA Front even when the profile has been defined in the "old way" of indicating in the code of the profile where the profile should be shown (e.g. fields in profiles starting with "security." are shown in the security listings). This ensures the backwards-compatibility of custom fields that have been defined before the improvements in FA 3.8.
Mass-deleting market data through the "Delete all market data" or "Delete prices..." buttons or fetching market data through the "Update close X" button in the Security window now correctly recalculates affected report data when the Security window is closed. When you add / modify / delete market data observations in the Security window, the window keeps tabs on the date of the earliest observation that was modified, and when the window is closed, the relevant reports are updated from that date forward - the date of the earliest observation that was modified is now stored also when you mass-delete or mass-update observations with the available buttons.
All Analytics+ columns are now available in Limit definitions, allowing you to define a limit based on any value available in Analytics+. Before, a handful of newer figures were not analyzed within a limit analysis, but now you can define limits with values such as Exposure, Absolute Exposure, Accrual or Paid Accrual.
Version information shown when logging in to the version for the first time or through the "Show version number" icon on top-right in the toolbar has been updated with a new link to updated release notes in FA Help Desk.
In addition, deployable APIs no longer expose too much information to OPTIONS-requests. All OPTIONS-requests directed to our deployable APIs are denied based on three things: authentication is token-based, HTTP verb is "OPTIONS" and request path contains "/rs/secure/fa/api".
In addition, this version contains all fixes from versions FA 3.4.19:
When calculating security ex-post costs ("Ex-post costs (sec)", based on ex-post cost percentages stored under the security cost information), the calculation now takes into account leap years correctly, using the actual number of days in the calculations instead of always using 365 days.
Gross TWR calculation now considers the effect of ex-post costs on transactions similar to "buy" even when the costs recorded on the transaction don't have an effect on transaction's trade amount. This allows you to record costs in your transactions that are "embedded" in the price - costs without cost effect now end up as part of accrued costs and don't affect the purchase / sold costs that are taken into account for example in tax reports.
Importing transactions with an FA Format import file now correctly generates postings to the transactions also when the posting rule is based on position information (such as purchase value or profit / loss), not only information directly available in the transaction. Importing transactions with a file now makes sure purchase lots are recalculated before the postings are generated on the transactions, ensuring that all the information you can use to set up posting rules is available before the postings are generated on imported transactions.
Fixed an occasional issue related artifact download sometimes failing when installing processes through FA AppStore or when installing artifacts manually through Administration view.
FA 3.8.5 Release notes
FA 3.8.5 is an update to FA 3.8. This update includes the following bug fixes:
Running a "Coupon payment" corporate action on a bond on the bond's maturity date now results in a coupon payment transaction with a correct value. Before, running a coupon payment on the maturity date incorrectly resulted in zero-value coupon.
When opening an existing FX Contract from a transaction listing, contracts with settlement 2 days or less are now interpreted as FX Spots, and contracts with longer settlement as FX Forwards. Before, only contracts with exactly 2-day settlement were interpreted as FX Spots.
You can now generate query-based report templates in the background from the Report window. You can now use all the other output types in addition to "One report" also with your query-based report templates, for example to generate a query-based report per contact or portfolio, "via email", or "to documents".
Generating standard reports in Excel format through the Report window now formats numbers as numbers in the generated Excel file (XLS or XLSX), allowing you to use numbers as numbers for example for further calculations in your Excel.
Memory usage of Analytics+ has been optimized when analytics is run with a time series based on frequency - analysis is no longer unnecessarily run twice, first for whole period and then grouped by the selected frequency. Analytics no longer does a full period analysis if a frequency is used and a time series is requested, and time period analysis only returns the date set for the given period. These optimizations don't directly affect Analytics+ in FA Back, but improve the performance and tackle memory issues when doing a frequency-based analysis for example in FA Front, Strategy Analyzer, certain analytics-based reports or analytics API calls.
Fixed a possible error in report recalculation when there are a lot of currency crosses in the system with long price histories, and report recalculations are repeatedly started while at the same time currency crosses are updated by importing prices to them. This scenario might occasionally happen during nightly report recalculation, but no longer results in an error.
Name of a JSReport-based custom report no longer unnecessarily shows the suffix "(PDF)" at the end of the report name in the Report window - custom reports with JSReport are not restricted only to PDF, but you can develop your custom reports in other file formats as well. Best practice is to indicate in the name of the custom JSReport which file format it has been developed for.
In addition, you can now have better options to develop different kinds of custom reports with JSReport. You can now generate a JSReport-based custom report against transactions or trade orders from the Transactions or Trade orders views, you can now generate a JSReport- / GraphQL-based custom report against multiple portfolios, transactions or trade orders, and JSReport's report parameters "StartDate", "EndDate" and "ReportDate" are now properly passed to GraphQL when building the report.
Fixed an issue related not being able to save transactions in the system if the environment was upgraded from FA 3.4.5 - FA 3.4.12 to FA 3.8 - saving transactions now works correctly even when an environment is upgraded from these versions directly to FA 3.8.
In addition, this version automatically upgrades certain standard reports to their latest version, to ensure these reports still work with FA 3.8.5. This includes P/L - Performance, P/L - Performance and value history, P/L - Performance and value history with accrued interest, Monthly performance and Performance and cashflow reports - if any of these reports were installed, they will be updated to the latest version during an upgrade to FA 3.8.5 to ensure these reports still work.
In addition, this version contains all fixes from versions FA 3.4.20:
Added the support in the background to exclude transactions that have been marked as "hidden" in transaction listings in FA Front - this doesn't change anything in FA Back directly, but provided the means for transaction listings in FA Front to no longer include transactions that have been marked as "hidden".
FA 3.8.6 Release notes
FA 3.8.6 is an update to FA 3.8. This update includes the following bug fixes:
This version fixes a couple of issues in the restructured TWR calculation logic, that lead into differences in TWR figures in FA 3.8 compared to the previous versions.
First, exchanges in non-portfolio currency now adjusts unrealized profits correctly, resulting in correct daily profits and losses and TWR figures.
Second, transactions that affect portfolio's booked purchase value for accounting purposes, such as "Value adjustment" or "Deferral of bond purchase price", are no longer included in daily profits and losses, resulting in correct TWR figures also for positions with re-valuated purchase value. Before, TWR was based on net cashflows and market values so therefore purchase value changes didn't affect TWR. Now, TWR is dependent on e.g. unrealized profits which are affected by transactions with purchase value effect. The calculation logic can now differentiate the situations when the unrealized profit originates from re-valuations for accounting purposes versus e.g. buys and sells which actually change the purchase value - realized and unrealized return is now tracked accurately from TWR's point of view through tracking the original purchase value (the one not affected by re-valuations) and taking those into account when calculating TWR.
Running a "Coupon payment" corporate action on a bond on the bond's maturity date now properly results in a coupon payment transaction with a correct value, after a first attempt to fix this in FA 3.8.5. Before, running a coupon payment on the maturity date incorrectly resulted in zero-value coupon.
Fixed a possible error in report recalculation related to "Primary key already in use" when requesting to recalculate all report data. More appropriate "batch count" is now used when storing report data into the database to ensure batch size, sequence cache size and sequence size are in line with each other to avoid possible conflicts that might cause duplicate entries.
You can now run GraphQL-based JSReports also in the background from the Report window. You can now use all the other output types in addition to "One report" also with your GraphQL-based JSReports, for example to generate such reports per contact or portfolio, "via email", or "to documents".
You can now also build rules that changes tags and has the following rules react to the change - FA's rule engine can now also react to changes in tags.
In addition, fixed an issue related to new FA applications, such as FA Fund Management, using FA's business logic.
FA 3.8.7 Release notes
FA 3.8.7 is an update to FA 3.8. This update includes the following bug fixes:
Importing a new benchmark to a portfolio or updating portfolio's existing benchmark with a portfolio import now correctly initiates a relevant report recalculation, ensuring that the imported benchmark is not only visible in the Portfolio window but also takes effect in reports, Analytics+ and FA Front.
Updating portfolio's valuation method programmatically through the general importer now correctly recalculates purchase lot data (sub items), ensuring the the change in valuation method is not only visible in the Portfolio window but also takes effect in calculating portfolio's positions.
Fixed an issue related to programmatically comparing values in the new "Execution method" field (introduced in FA 3.8) for transactions - since transactions don't have an execution method, value 0 in the database for execution method is not interpreted as "not applicable" throughout the application.
GraphQL Analytics+ API now works in a backwards-compatible way after changes in FA 3.8.5 related to optimizing memory usage of Analytics+ - default value "false" is now used for the new parameter includeBothTimeSeriesAndGrouppedAnalysisLegacy to ensure API calls work the same way as before without passing new parameters.
In addition, "Running executions" tab under the Processes section in Administration view now works correctly, showing the ongoing processes for administrative purposes.
In addition, this version contains features that can be separately enabled if needed:
You can now again configure a transaction type so that it has a negative return effect on TWR but is not categorized as a cost - if transaction type has a "cost category", it is always considered as a cost, but otherwise the "return effect" controls whether transaction type is considered as a cost or a profit ("Return effect" "Adds" results in a profit, "Return effect" "Reduces" results in a cost). Such rare transaction types (with settings Cash effect = Adds, Return effect = Adds/Reduces/No, Profit effect = Realize indirectly) now produce consistent results: each setting only affects either "Other profits" or "Other costs" which thus affects TWR consistently. NOTE! This feature is not enabled by default, and will be introduced to everyone in FA 3.9 - if you want to start using this feature already now, it has to be enabled separately.
FA 3.8.8 Release notes
FA 3.8.8 is an update to FA 3.8. This update includes the following bug fixes:
Changes in "translations" through Content and Translations Preferences are now again picked up on reports generated from the system - for example, your changes in translations for your transaction types or security types are now correctly picked up on the reports you generate. In addition, changes in translations made after upgrading to FA 3.5 are now updated to be available on reports as well.
Importing transactions or trade orders with the keyword "AUTO" in the account field now correctly supports picking up a share account from the portfolio, if the portfolio doesn't have own accounts defined for it. By default, the keyword "AUTO" uses portfolio's own accounts, but if none is found, shared accounts are gone through.
"Accrual" stored on a transaction on a fund is now correctly stored and visible also if you define a booked transaction date on your transaction - accrual is correctly stored regardless of whether you have defined booked values or not.
Analytics+ API now works in a backwards-compatible way after changes in FA 3.8.5 related to optimizing memory usage of Analytics+ - when using the new parameter includeBothTimeSeriesAndGrouppedAnalysisLegacy, the analysis now again returns cumulative values to ensure API calls work the same way as before.
Custody connections depending on PGP encryption and decryption (using the gpg command) now again work correctly.
FA 3.8.9 Release notes
FA 3.8.9 is an update to FA 3.8. This update includes the following bug fixes:
This version fixes issues in the restructured TWR calculation logic, that lead into differences in TWR figures in FA 3.8.6 compared to the previous versions:
Analytics+ now shows correct "Unrealized profits" also after "Dividend as shares" transactions.
"TWR" and "Unrealized profits" / "Realized profits" are now calculated correctly in Analytics+ also for positions that are entered into the system with a "booked trade amount" that differs from the original "trade amount" (e.g. with an "Add" transaction with booked values).
"Total Net Profits (sec)" in Analytics+ now shows the profit value correctly in security currency: unrealized profits in security currency are now correctly converted to portfolio currency after they are calculated.
Exposure-based TWR calculation logic (used for example for futures) introduced in FA 3.8 now works correctly also when a position is initially opened as a short position.
Paid "Accrual" recorded on a transaction is now correctly taken into account as position's accrual and in position's market value between transaction's transaction date and settlement date. Starting from transaction's settlement date, position's accrual and market value are calculated based on "accrual" recorded in security's market data.
Logic of selecting the next available "Ext ID" for a transaction or a trade order has been improved to better avoid overlapping transaction or trade order Ext IDs in the same portfolio when transactions or trade orders are created to the portfolio concurrently by different users or processes. Now an "Ext ID" is "reserved" in the system immediately when it is requested, not only after the transaction or trade order is saved. This also means that if you reserve an "Ext ID", but end up not saving the transaction or trade order, the "Ext ID" will remain reserved and the next request will get the next available ID.
"Portfolio hierarchy" on the Overview now properly handles scenarios when you select a group, and the group contains portfolios which have sub-portfolios and the sub-portfolios are not directly part of the group but shown in the portfolio hierarchy through their main portfolio. In such a scenario, positions from the sub-portfolio are now correctly aggregated up to the group level, i.e. shown on the Overview when you select to view the group. In addition, in such a scenario, only "active" sub-portfolios are shown in the portfolio hierarchy.
Double-clicking a process button within the application no longer poses the risk of accidentally running the process twice: as a safety measure to prevent accidental duplicate process starts, you are now required to wait for two seconds before manually starting another process. If you start a consecutive process too quickly, you'll presented with a message "You tried to start a process twice within a short period of time, and the second start was prevented. Wait 2 seconds before starting another process."
In addition, there is now built-in support to over-write process configurations with values defined in preferences. This provides us with the technical facilities to in he future build separate, easy-to-use preference windows to configure setups without user having to go into the complex process configurations. In addition, if configuring a setup requires you to input a username or a password, those can now be obfuscated before storing them into preferences.
FA 3.8.10 Release notes
FA 3.8.10 is an update to FA 3.8. This update includes the following bug fixes:
Analytics+ now calculates "Daily profit and loss (sec)" and "TWR (fx)" correctly after exchanges also when the securities involved in the exchange have different currency than the portfolio the exchange happens in.
Analytics+ now correctly calculates the effect of "Dividend as shares" transactions on closed positions, calculating a return for the position. This is relevant in cases when you receive a dividend as shares on the same day you've sold away your entire position - you are still entitled to the shares based on your previous ownership.
Report window no longer unnecessarily shows "Styles" in the report listing. These are the report headers, footers and styles installed from FA AppStore used when generating reports through the Report window - the styles cannot be "generated" on their own in any way, and were accidentally visible in the listing due to changes done in FA 3.8.4 related to showing JSReport-based custom reports correctly.
In addition, the library FA uses to calculate IRR in Analytics+ has been upgraded to the latest version, a second round of explicit guess of the initial IRR has been added, and logging has been improved in order to be able to track potential errors coming from calculating the IRR. However, even after these changes, the current library cannot always calculate an IRR due to non-convergence problem with Newton-Raphson method when there are alternating positive and negative cashflows.
In addition, this version contains all fixes from versions FA 3.4.21:
FA's position calculation logic now separately follows positive and negative deducted purchase value in order to track future positions' purchase and sold values. This allows the system to determine positive and negative mark-to-markets, which in turn allows you to report these separately as required by Tax Authorities in Finland.
FA 3.8.11 Release notes
FA 3.8.11 is an update to FA 3.8. This update includes the following bug fixes:
TWR no longer shows a sudden drop after nightly report data update for positions that have an exchange transaction earlier in the position's history. Before, logic related to handling exchanges (updating the original trade amount in the purchase lot created by an exchange with the market value and market FX rate) was mistakenly not considered in the nightly report data update but only when recalculating report data through the menu or through modifying transactions within the portfolio.
Manually fetching market prices in the Security window with one of the "Update close" buttons now correctly recalculates affected portfolios' reports only for the new prices fetched through the market data connector. Before, when fetching prices with the "Update close" buttons, the logic unnecessarily always recalculated affected portfolios' reports from the earliest market date observation onward, even if only one or two new prices were filled in for recent days.
Analyzing a limit based on strategy, investment plan or model portfolio now correctly considers the date of the strategy or plan when determining what to analyze your portfolio's positions against. Analyzing limits now compares your portfolio against only the latest strategy or plan, ignoring the history of strategies or plans.
Building the transaction listings has been optimized, making it less likely to come across occasional errors when concurrently populating the transaction listings.
FA 3.8.12 Release notes
FA 3.8.12 is an update to FA 3.8. This update includes the following bug fixes:
TWR calculation no longer shows a sudden drops or jumps if the position includes two or more exchanges. TWR calculation now works correctly also if there are two or more exchange transaction in one day (resulting from exchange corporate action run against a position with multiple open purchase lots) or if there are two or more consecutive exchanges over time on the same position.