Project List - A Selection

Wealth Management at Credit Suisse

Many Credit Suisse customers, ask for advice for their wealth management. To support them we have developed a portfolio optimization system, that uses mathematical optimizations with high dimensional functions to determine an optimal investment strategy.

We have developed a microservice system for reliability and scalability. I’ve been responsible for some of the more mathematically challenging quantitativer computing services, as well as for the framework, and deployment infrastructure for those service, that were written in Python.

The project was sucessfully delivered.

BI system at PPRO

PPRO had a lot of data spread over several systems, and aspired to analyse it, in order to improve it’s marketing and product development decisions.

We set up a data warehouse in PostgreSQL, because PostgreSQL allows to leverage remote tables from other database systems like e.g. Cassandara. Therefore it allowed for a smooth transition when in future PostgreSQL wasn’t sufficient any more. For scheduling we decided to use Azkaban, and the collection of data from all the systems was done with Pentahoo Kettle.

The database had three schemata: a staging area, the data warehouse itself, and several data marts. With that setup we were able to feed Tableau Dashboards for decision support, and allow the data scientists to run their data mining without disturbing the production processes.

The BI system as a data driven decission support tool, was highly regarded my the management.

Sanction management at PPRO

As financial institution, PPRO is obliged to obey the sanction regimes in all jursidictions, it is operating in. The authorities distribute the list of sanctioned people as XML files, which contain the sometimes sparse information available, to identify sanctioned persons, or organizations.

In this project I developed not only the import and updarte of theses sanction lists, but also the matching of customers requests to entries on these lists. The result was a risk score, which reflected the probability, that the customer might match an entry on one of the lists. With that risk score, the system either decided to allow, or deny the customer, or to delegate the decission to a human in unclear cases.

The system was applied to every new customer, and regularly to the whole customer base. For the customer base, we already had a list of human decission, so that we didn’t have to flag them again, and have a human staff member decide again.

With this decission support system PPRO was able to reduce the work load on the staff, while at the same time reduce the risk of failing to comply with the sanction regimes.

Direct Debit Payment System at PPRO

PPRO decided to develop a payment service for the German market to complete their portfolio. The idea was, that the user would enter his login for his online banking, and then the service would trigger a transaction to the shop. Since the service could view historical transactions, we were able to tell the shop, if he can be sure, that the money is coming, or if he should wait for it to arrive on his account.

We analysed the online banking systems of the biggest banks, banking conglomerates, and online banking providers for small banks. That was enough to cover over 90% of all German bank customers.

By implementing this system in short time, we were able to improve PPROs position in the market siginificantly.

Big Data Low Latency Complex Event Processing System at SIX Telekurs

SIX Telekurs (now SIX Financial Information) is one of only a few companies, that can provide marked data from almost every exchange around the world to customers in a standardized format with low latency. The goal of this project was, to replace the central market data processing system with a decentralised one, for even lower latency.

We were able to leverage the domain specific language for parser generators from the existing system. These parsers had to interpret the different stream formats from the different exchanges, and therefore there were several hundred of them implemented.

Based on that we developed an asynchronous system, that used a reliable multicast protocol (LBM by 29West) for hot failover as well as for delivery to the customer. We had to program very close to the bare metal, considering aspects like the NUMA structure, memory layout and cache strategies, and user space direct network card access to reduce the number of context switches. We basically took over most of the machine from the operating system with CPU binding and CPU shielding. The whole system was designed lock free to avoid any unnecessary latency, and handled issues, that were not part of the processing itself asynchronously. To give the compiler the best chances to optimize the code, we relied on modern C++ techniques, like template meta programming.

While I was on the project, we managed to successfully deploy a prototype to production.