ITQuants blog

Author: Created: 2/17/2012 1:03 PM RssIcon
My personal blog on ITQuants
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.

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

This week, I just wondered why the Sophis R&D didn't permit to override the CSRGlobalFunctions class in C# before the 6.3 version. If you take a look at the DotNet toolkit, you will see that a CSMGlobalFunctions is defined, but no static method Register exist as for the other classes. This point was several times scrolled up to Sophis in the toolkit forums, and I know some clients who ask Sophis to provide a toolkit permitting their own implementation. Unfortunately, they don't have the code and the interface provided in C# does not implement all virtual of CSRGlobalFunctions, for instance StartPortfolioAddition which is a callback on which we can implement the agregation of results for user columns that we want to store in a cache.

For remember, the overriding of the CSRGlobalFunctions class permits to be called when the folios are calculated (StartPortfolioCalculation, EndPortfolioCalculation).

The goal of this post is to describe how to implement a C++ implementation of the CSRGlobalFunctions that permits to implement callback in C#.

By Philippe Bonneau on 10/29/2014 11:47 PM

Working on a migration to the last version of Fusion Invest (7.1.x), and even if most Sophis developers warn me that this class will be deprecated in future versions of Sophis Risque/Value, I've discovered how deep changes were done on it.

Trying to migrate my performance tool ITQLogger in order to test the new grid cache server, I've got a lot of modifications to do and most cases are now obsolete..

For remember, for those who don't know this class, it was previously mostly used by developers in this case: 

 - changes are done on database, without using the API,

 -  other programs connected to this database have to be notified, to refresh the data.

For example, the last development I've made using a Sophis native 'AJTI' event was done when I had to insert directly in the TRS_BASKET and TRS_BASKET_ADJUSTMENT Oracle tables records, and notify other GUI clients that the instrument was modified. Such development was done due to the well-known poor performance on Sophis basket swaps, making it impossible to use the native CSRInstrument::Save method when a lot of adjustments are done (like on portfolio swaps).

The goal of this post will discuss which workarounds have to be done.
By Philippe Bonneau on 10/10/2014 8:07 AM

Using the Sophis toolkit, it is possible to display a list when typing in a edit control. For example, in the default native transaction dialog, some references of instruments appear once the first characters are filled. The class that permits to reproduce this behaviour is CSRInstrumentCode which inherits from CSRGenericAutoCompletion. According to the comments provided in the sphcode.h header, there should be a sample in a SphSrc/AutoCompletion folder... Unfortunately, I haven't found such a sample, and looking for questions/answers on the Sophis support forum, I only have found one question without answer. This post will show how to implement some code in order to get the expected result, it means giving a list of results when typing some characters as follow:

Search blog