Corporate Data Architecture – Fast Data and Big Data.

July 21st, 2014 / Tales from a Trading Desk

The VoltDB blog has a number of interesting articles on Corporate Data Architecture.  The Fast Data stack is somewhat different from a lambda architecture that has been discussed on various blog in the context of real-time big data.  Clearly Fast Data is a VoltDB database based on VoltDB’s view of the world. However, summingbird and other such stacks also have merit.  As does samza and Kafka.

Lets assume I want to serve knowledge and analytics from ingesting web site click data, pricing, execution and trade data, to power a salespersons trading cockpit.  What should/could I use?

Collateral Management view of Team Resourcing – Part 6

July 20th, 2014 / Tales from a Trading Desk

I’m back to coding, but this time in native Neo4j.  The aim to modelling teams, and time lines of teams, is wanting the ability to ask the system “What is the best team for x?”.  Which leads to a recent article on Moneyball.

Billy Beane analyzed the data on players’ performance and used the models’ outputs to select players

Food for thought

TDD Resistence

July 20th, 2014 / Tales from a Trading Desk

Ian’s talk on TDD: Where Did It All Go Wrong? is worth a watch.  The problem Ian outlines is known by I suspect a large percentage of development teams.

Avoid testing implementation details, test behaviors
– A test-case per class approach fails to capture the ethos for TDD. Adding a new class is not the trigger for writing tests. The trigger is implementing a requirement.
– Test outside-in, (though I would recommend using ports and adapters and making the ‘outside’ the port), writing tests to cover then use cases (scenarios, examples, GWTs etc.)
– Only writing tests to cover the implementation details when you need to better understand the refactoring of the simple implementation we start with.endencies

XP – Software Development Best practices

July 20th, 2014 / Tales from a Trading Desk

iMogital states quite simply that Scrum/Kanban will not tell your developers how to develop.  XP has 12 practices derived from software engineering best practices – TDD, Paired Programming, Coding Standards being a few.  CodeCentric touch on the same issue.  I suspect continuous integration, should really be continuous delivery these days.  Net out, if your development teams are not familiar with XP, maybe its finally time to help them get educated, and move down the XP road.

InfoQ has a recent article on engineering practices, offering the following equation:

Scrum + Extreme Programming (XP) = Agile

Agile Release Train

July 16th, 2014 / Tales from a Trading Desk

SAFe’s overview of the agile release train is worth reading.  Release trains aren’t new, they been around for years in both agile and non-agile organisations. Release trains aid in a consistent push to production, and work around certain black-out dates when production can’t be touched e.g. Christmas, end of month etc.  Sometimes certain train dates are also aligned to key business deliverables which although maybe anti-agile is some ways, are from a commercial perspective relevant.

FX Agency Model and FlowMonsters

July 14th, 2014 / Tales from a Trading Desk

Interesting read in Financial New this week on Faros Trading, and the agency intermediary model.  Even with the flowmonsters, there is opportunity for regional banks to specialise in home currency pairs. Breaking into the flowmonster space is costly from a technology perspective – problematic in post Basel III era.  The top four banks have a combined share of 53.5% of the FX market.

Bank Optimisation

July 8th, 2014 / Tales from a Trading Desk

Morgan Stanley/Oliver Wyman has an interesting read on Mis-allocated Resources: Why Banks Need to Optimise Now.  Decreased margins require banks to understand their advantage, and leverage it to clients.  Optimisation is strongest in Fixed Income – no surprise.

About equities:

Distribution and research are two of the biggest challenges.Investors we met highlighted that quality content and senior coverage were amongst the top differentiators between banks or boutiques that they used.

Other interesting commentary:

Rider, Elephants and The Path – Script the Critical Moves

July 7th, 2014 / Tales from a Trading Desk

I’ve finally finished Switch – How to change things when change is hard.  Well worth the read.  There are already quite a few articles on the book calling out the key points/sections.  However, to remain consistent, I’ll provide my view of the key points, although Lean Thinker does a pretty good job :)

  • Page 16, “If you want people to change, you must provide crystal-clear direction” – ambiguity is never good, and leads to frustration on both sides
  • Page 17, Three-part framework: Direct the rider, Motivate the Elephant, Shape the Path

Directly Responsible Individual

June 28th, 2014 / Tales from a Trading Desk

How To Run Your Meetings Like Apple and Google offers some sensible advice.  Agenda are so often missing from so many meetings :( DRI and actions – agree.  Bring solutions :)

Camel in a Vertx Web Application

June 25th, 2014 / Tales from a Trading Desk

Mixing interesting technologies to PoC possible solution is always interesting.  I’ve become a lot more interested in Apache Camel over the last time period.  When I realised there was a Camel Vertx component, and had time to open IntelliJ, I thought I’d build a quick and dirty application to look at using Apache Camel from an up-stream integration workflow, and websocket’s for down-stream browsers.  Although the code is ropy, it hopefully provide some food for thought.

Easiest way to being with Vertx maybe to generate a project with Maven.

Smartjava, Pretech and hasCode provides a few interesting articles to assist:

Wolfram Programming Cloud – Thoughts

June 23rd, 2014 / Tales from a Trading Desk

Wolfram Programming Cloud is now live.  There is a cloud gallery providing a range of simple samples which is a good start.  There is quite a lot of documentation which is a good start.  Having not spend enough time on Wolfram or read enough documentation, I’m wondering how best to leverage its feature set in both the buy and sell space:

  • Universal Database Connectivity (UDC) – assume I can leverage this to connect to a risk/position data repository?
  • Import and Export function are provide which is helpful

Collateral Management Resourcing with Datomic – Part 5

June 18th, 2014 / Tales from a Trading Desk

After the interesting experience with Spring Data :( I decide to have a quick look at Datomic, even though the original plan was to use Neo4j from a repository perspective.  Datomic has for all intents and purposes a bi-temporal view of the world as I’ve previous blogged.  For the exercise at hand, I went with the free download, since this is very much a proof of concept (PoC).

Initial schema:

Skill Cloud – Part 4 – Spring Data and Neo4j

June 13th, 2014 / Tales from a Trading Desk

Spent the last flight banging my head against Spring Data and Neo4j.  I was hoping Spring Data would save me some code writing, but the pain of Maven dependency hell, coupled with exceptions that are meaningless in many way, has almost driven the will to live out of me.  At the moment I’m in the world of:

Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityFetchHandler’ defined in class path resource [org/springframework/data/neo4j/aspects/config/Neo4jAspectConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.data.neo4j.support.mapping.Neo4jEntityFetchHandler org.springframework.data.neo4j.config.Neo4jConfiguration.entityFetchHandler() throws java.lang.Exception] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘nodeStateTransmitter’ defined in class path resource [org/springframework/data/neo4j/aspects/config/Neo4jAspectConfiguration.class]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException

Clojure: Om and Datomic

June 5th, 2014 / Tales from a Trading Desk

Since Om‘s release there have been a number of interesting GitHub projects, and postings. Below is a list of possibly relevant reading for anyone interested in Om.  It’s probably also working looking at Datomic ;)

 

Given my previous posting on Clojure, I wonder how far any of the sell-side are willing to go today with Om?

Skill Cloud – Part 4 – A Collateral Management View

June 5th, 2014 / Tales from a Trading Desk

Given the last few postings on Skill Cloud, or more so, Team Cloud, its possible to consider the data modelling in terms of collateral management ;) from an asset management perspective ;)

Lets dig into the collateral management view of team data modelling:

  • Agreements exist in the collateral management world that need to be satisfied.  This is many ways could be consider the same as projects within an organisation
  • Liquidity could be viewed as the people (resources) within an organisation.  Cash could be the star perfomers, with grading of asset quality attributed to skillset etc.  Liquidity being skillset

Skill Cloud – Part 3

June 3rd, 2014 / Tales from a Trading Desk

One of the obvious way to store a skill cloud is through a graph database.  Neo4j or Titan are two possible choices.  For no reason in particular, I’ll go with Neo4j, and use the embedded version with Java simple for a way to get up and running quickly.  Adding the Maven dependencies into my pom.xml is the easiest way to get started.  The Neo4j HelloWorld sample is probably the easiest thing to borrow as a skeleton for a quick start.

Skill Cloud – Part 2

June 2nd, 2014 / Tales from a Trading Desk

Continuing on from a previous posting.  There are a number of sources that discuss team interactions, more specifically keeping teams that work well together, together.  Of interest are the following comments:

At a software services firm, a 50% increase in team familiarity was followed by a 19% decrease in defects and a 30% decrease in deviations from budget. On audit and consulting teams, high familiarity yielded a 10% improvement in performance, as judged by clients.

Members new to one another simply don’t understand when and how to communicate. Some groups never master this; and even in groups that do, the pro- cess takes time, slowing progress toward team goals.

Lessons on Automated Browser Testing

June 2nd, 2014 / Tales from a Trading Desk

Socket.io provides some thoughts around browser testing in this age of n browsers all with slightly different issues:

Every commit to the Socket.IO codebase now triggers a testing matrix totaling to 25 browsers, including Android and iOS.

We accomplish this by having make test seamlessly set up a reverse tunnel to ephemeral ports in your computer (thus making it accessible from the outside world), and have them execute on the Sauce Labs cloud, which is in charge of virtualizing and executing browsers on all the environments we care about.

Electronic Trading Integration – Camel

May 27th, 2014 / Tales from a Trading Desk

I recently ordered this book on Apache Camel as this Fuse example on GitHub around websockets and ActiveMQ got me thinking about why there isn’t often tech stack discussions that include Apache Camel.  Further, as pointed to by a colleague, the old world of Apache Tomcat as a container being replaced by the likes of Apache ServiceMix or Fabric8 – nice to see their is a docker for Fabric8 ;)   The age old issue of partitioning the code based may also benefit from bundles/features via KarafiPaaS.

Sample cookbook Camel code here.

Random Reading on Java, Docker and UI’s

May 27th, 2014 / Tales from a Trading Desk

Interesting reading on Java:

Docker:

  • Manage Docker Containers using CoreOS – Part 1, 2, 3, 4

UI’s: