ITQuants blog

Author: Created: 2/17/2012 1:03 PM RssIcon
My personal blog on ITQuants
By Philippe Bonneau on 3/8/2016 6:20 PM

Testing recently the calculations of some instruments (Convertible bonds) on the calculation servers, I've discovered that very old instruments which are not anymore in position were sent to calculation servers. By the way, these instruments are not valid too, and trying to calculate them today will generate some check error messages. These instruments were stored in position in some folios several years ago (trade date far away from the well-known REPORTING.DATE_DEB date), but are still loaded in memory and sent to calculation servers. The problem does not appear when calculating the folio locally, only when calculated by calculation servers, and the whole calculation of the folio is then rejected. The goal of this post is to propose a workaround that permits to calculate the folios which contain such instruments.

By Philippe Bonneau on 2/2/2016 1:49 PM

Some days ago, I talked about the possibility to use the Sophis.Core.Data, Sophis.Event.Core and Sophis.Event.Risque assemblies, in order to listen to specific events for toolkit columns performance optimizations. I've tried to use the same mechanism in a batch, using the following code :

class Program
{
    static void ProcessEvent(Sophis.Event.IEvent myEvent, ref bool bProcess)
    {
    }
    static void Main(string[] args)
    {
        CSMApi _api = new CSMApi();
        try
        {
            _api.Initialise();
        }
        catch (Exception e)
        {
            return;
        }
        Sophis.Event.SophisEventHandler _handler = new Sophis.Event.SophisEventHandler(ProcessEvent);
        Sophis.Event.SophisEventManager.Instance.AddHandler(_handler, Sophis.Event.Thread.MainProcess, Sophis.Event.Layer.Model);
        bool _stop = false;
        while (!_stop)
        {
            Sophis.Event.SophisEventManager.Instance.Dispatch();
            System.Threading.Thread.Sleep(500);
        }

Unfortunately, this code does not work as is. Putting a break point in the ProcessEvents method shows that it is never called, even if messages are received and processed. The goal of this post is to explain how it works and what it is missing.

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.

Search blog