ITQuants blog

Author: Created: 2/17/2012 1:03 PM RssIcon
My personal blog on ITQuants
By Philippe Bonneau on 1/25/2016 4:26 PM

One client asked me to add some very visible message in Fusion Invest that permits to warn when the pricing date is not the current date. A good sample of such a message is the native toolbar that is displayed by the application when the simulation mode is selected. The expected result should be the following one:

By the way, the core code of Fusion Invest is still written in MFC/C++. Adding such a toolbar is possible by written some C++ code that uses the MFC classes. The goal of this post is to give the code that permits to activate such a functionality.

By Philippe Bonneau on 12/30/2015 6:37 PM

When overloading Sophis dialogs with the toolkit, you need the Win32 resource IDD of the dialog in order to get the resource template somewhere in the Sophis dll's (in most cases in the SophisRiskEn.dll), and customize it by adding new controls. In previous versions of Sophis, there was an option that permitted to display this IDD, by right double-clicking on the Sophis logo in the About box, and, after, by right clicking in the dialog.

Right-clicking it in the v7 About box does not enable it anymore, even if this option is still usefull. Looking at the code of the dialog, I've found finally the way to display it. The goal of this post is to share it.

By Philippe Bonneau on 12/11/2015 11:34 AM

In most cases, when portfolio columns are toolkitted, they use an internal memory cache to avoid SQL queries on the database when the portfolio lines are displayed (on scrolling or what ever). In order to refresh this memory cache, the Sophis API provides a method, CSRPortfolioColumn::GetRefreshVersion, which is incremented on some actions, for instance when a deal is inserted. Most toolkit implémentations use only this flag to refresh the cache. Unfortunately, testing only the version flag could generate some freeze, when a lot of a deals are inserted and SEC events are received. The goal of this post is to propose a solution in v7 to optmize the refresh of the cache.

By Philippe Bonneau on 7/23/2015 1:22 PM

I've got recently a problem when I've updated and tried to install Oracle on a new desktop PC. Windows 8.1 is the OS running currently on it. Trying to connect to Enterprise Manager using the usual https://localhost:1158/em/ url connection string has failed and the following error was displayed: "The server certificate included a public key that was too weak. (Error code: ssl_error_weak_server_cert_key)". According to a post on stackoverflow, this seems to be due to an update of security on different internet browsers. By the way, the problem occurs on Firefox and Internet Explorer. The goal of this post is to explain how I've resolved it, since the indications done in other links are not sufficient.

By Philippe Bonneau on 3/12/2015 5:30 PM

In the last version provided by Misys concerning their product Fusion Invest and Fusion Banking Sophis (v7.1.3.x), new functionalities were added to the SRM module (for Sophis Risk Management, ex-VAR module), that permits to calculate asynchronously data on calculation servers, to retrieve the results and store them in a Reference Price server, and finally to display them on the client screens. 

I think that it is one of the most powerful enhancement done by Misys on this version. For clients having problems when using toolkit columns, this permits to increase the performance when, for example, aggregation is done on a very large perimeter, with lot of dependencies between columns.

The goal of this post is to explain the architecture of this component and how to use it.

By Philippe Bonneau on 3/12/2015 12:28 AM

Since one of my conversation between Alexis de Bernis, me and a Misys consultant was forwarded to several clients by Misys, the best thing I can do is perhaps to publish it. The topic was analyzed and resolved by Alexis, who I thank again for his judicious remark. The description concerns the way we have to use the CSMExtraction, and most of the class of the C# API provided by Misys for their product Fusion Capital Sophis.

By Philippe Bonneau on 2/24/2015 12:28 AM

Yes, I know, I'm just a little crazy to try to use Office 2013, and the  x64 version, but....

I've changed recently my computer, getting a new Dell Precision, delivered with a Windows 8.1 x64 OS. I bought a license of Office 2013 Pro too. No DVD was provided in the package, only the product key, and a download from the Microsoft download center has to be done. When using the retrieved setup.exe, the user does not have the hand on the way to install it: the only choices that can be done are the selection of the country and the language. For example, there is no option to install only some components and not all, this will, for instance, install Publisher and so on. The destination folder cannot be changed too. The installation using this process is done in the Program Files folder.

That's why I believed that the Office provided with my x64 OS was a x64 version. Unfortunately, that was not the case. I've spent one night with the MS support, in order to know how to download the x64 version. The guy was unable to explain it to me.

Finally, I've found the solution myself. The license paid to get the Office 2013 does not restrict to a x86 version, so there is no legal limitation to get a x64 one. This post will explain how to download the x64 version from the Microsoft download center.

By Philippe Bonneau on 2/5/2015 5:15 PM

Working on the migration from Sophis Value v4 to Fusion Invest v7 (same product by Misys, only the version is different), just by changing the access to the database, from DEV to UAT one, I got a message that I never had before:

Well, well, I thought, it should be due to the fact that Oracle scripts were not launched on the database, and there should be a mismatch between the dll's used (DEV) and the database (UAT). Unfortunately, the dump was the same one, recently loaded and updated by the same SQL script on both servers.

By Philippe Bonneau on 12/7/2014 8:01 PM

The root cause of needing this information is that we want to display user portfolio columns on which we need to calculate aggregation. I've already seen some client implementation on which the aggregation is calculated when the callback CSRPortfolioColumn::GetPositionCell is called, when detecting any change on the GetRefreshVersion of the same class.

The advantage is that this code is called only if the column is displayed, but unfortunately, that's not the right way to do it and for this reason:

 - on GetPositionCell, we don't know at which level we need to calculate the aggregation and the parsing of all folios is then needed. When many folios are already loaded, it decreases dramatically the performances and the software freezes in most cases.

- on the CSRGlobalFunctions, Misys provides a method, StartPortfolioAddition, which is called each time that the core engine needs to make an aggregation. For instance, changing the currency of a folio will call this method, with the folioId corresponding to the root folio on which the aggregation needs to be recalculated. 

In the last case, the method does not give the list of columns on which we need to aggregate. To detect it, Misys provides unfortunately no official and supported method.

The goal of this post is to give the way to get it, in all Sophis versions.

By Philippe Bonneau on 11/30/2014 9:37 PM

I've already implemented several times user columns at the clients of Misys. Each time, taking a look at the developments already done by the client or specific deliverables made by Misys, I encounter the same problems of performance, which are:

- in most cases,  no memory cache is implemented, calculations are done on the fly, with, last but not least, direct access to the database, sometimes hidden by the complexity of the Sophis API,

- if a memory cache is implemented, the refresh is not necessary very well optimized. In most cases, no SEC listener is developped and the refresh is done according to the version given by CSRPortfolioColumn::GetRefreshVersion.

- calculations of aggregations are done on CSRPortfolioColumn::GetPositionCell (or CSMPortfolioColumn.GetPositionCell in C#) instead of being implemented in the CSRGlobalFunctions::StartPortfolioAddition or EndPortfolioCalculations, with no indication on the level on which the aggregation should start. It means that for each refresh needed, the algorithm implemented will parse the whole portfolio hierarchy each time. If all folios are loaded, the parsing can freeze the whole GUI.

The goal of this post is then to give the rules for implementing user columns as it should.

Search blog