Author: Jorrit de Jong

Making Charts using Octave's Financial Package

In a previous blog we showed how to visualise stock prices for Deutsch Bank using core graphics functionalities of Octave. In this blog we will take a look at some finance-specific plot types available in the Financial Package on Octave Forge. This blog will show how to fetch some price data for Apple and use the data to make a:

  • High Low plot
  • Bolling Bands plot
  • Point Figure plot
  • Renko plot

First we will consider snippets of code to download data and create each type of plot. In the appendix a complete listing of code is given so you can easily reproduce the results on your own machine.

Continue reading

Using Octave For Asset Price Simulation

In this blog we want to demonstrate the power of Octave for doing simulations. Specifically we will take a look at the Black Scholes formula and how fast an option price computed using Monte Carlo simulation will converge to the actual value using the closed-form solution. The idea is to demonstrate how Octave can be used for this kind of simulations. In a previous blog we showed how to created plots, so here will will focus on the simulation only. The mantra when using Octave is "use vectors and matrices". If you can pull that off, your code will be efficient. On the other hand if you need to resort to for-loops, that will slow things down significantly.

Continue reading

Octave analysis of Deutsche Bank

In this blog the basics of generating and saving plots to file using Octave will be demonstrated. We are going to make plots and do some basic data analysis on the Deutsche Bank stock prices. Deutsche has been under pressure these last days, which rose our curiosity.

Deutsche Bank shares collapsed by nearly 7% taking it close to a 30-year low on Thursday evening following reports that hedge funds were pulling assets from it amid suggestions the German government may be forced to bail it out.

Deutsche Bank's share price approaches 30-year low -The Guardian


Continue reading


We are looking at Octave as an alternative or extension to Matlab. Octave has the major advantage of being open source allowing you to share your code with ease and no additional cost. Anybody interested in your code can simply download and install Octave and start executing and editing the code. Matlab code can also be shared, but a license fee is charged for each Matlab installation. Depending on your target audience this might significantly reduce your reach.

For those of you unfamiliar with Octave:

GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable.

GNU Octave

We will be blogging about experiences to help others in their considerations of Octave and in the hope to gather feedback from the financial engineering community.

Ugly Duckling consulting for Rabobank

We are very happy to be working with one of the leading banks in the field of food and agri worldwide. Rabobank is an international financial services provider operating on the basis of cooperative principle serving approximately 8.8 million clients around the world.

The balance sheet risk of the bank is managed by the ALM team. Ugly Duckling will be supporting this team in an automation project with the aim of increasing efficiency and reducing operational risk.

Tapestry part VII - Wrap Up


In this blog series we presented various blogs on Tapestry with the goal to show how to build a simple "Hello World" style application that gives GUI using HTML pages and presents a WEB API. By using Stream Response it's possible for Tapestry to return a stream, and with that we build a simple API. Testing this setup is a little involved and explained in detailed in the last blog of the series. We present a short overview of the blogs here. Continue reading


VIVAT Insurances, part of the Anbang Insurance Group, is the company behind brand names like: Zwitserleven, Zelf, Route Mobiel, Reaal, Proteq Dier & Zorg en ACTIAM. VIVAT is a relatively new, but its brands have been around for a long time. Ugly Duckling is happy to be chosen as a supplier of consultancy service for the VIVAT group to assist with the risk management with the goal of consolidating the solidarity that VIVAT brands have provided to their clients for over 150 years.

Tapestry part VI - Testing a WEB API


In this blog we will show how a WEB API created using Tapestry can be tested. Testing a web service is not straight forward as the PageTester, the default way of testing in Tapestry, doesn't allow for testing API. To overcome this difficulty we must start a Jetty server with custom/test web.xml. The test web.xml allows us to control the construction of objects. In this example we show how a mock service object can be inserted for testing, while using the full implementation for production.

This blog is part of a series of blogs on Tapestry that explains how to build a "simple" hello world example html page and expose the functionality of the page(s) via a WEB API. In a previous blog we showed how to setup a web API that responses in either XML or JSON. If you haven't read it yet, it's probably a good idea to have a look at this blog first before proceeding.

This blog picks things up from another previous blog in the series on testing page. The basic of testing a webpage generated with Tapestry are explained there. In this blog we will build on the code previously created.


Continue reading

Tapestry part V - Testing a page


In this blog we will demonstrate how to test a webpage within the Tapestry framework. The framework comes with a few handy testing options. Here we will consider the PageTester object, which can be used to replicate interactions between user and application. It deals with all input and output on the pages. As such it is great for User Acceptance Testing and Unit Testing. To show how to use the PageTester we will add some tests to the Hello Tapestry example of the first blog in the series.


Continue reading