Project at a Glance:

Strabil is a Monte Carlo Java library with underlying database – Neo4j – for market simulation.  Shortly said, it has Agents and Products, plus Relationships. Every Agent can use different ReactionToOffer to decide if it is going to buy a Product offered by another Agent or not.  Strabile uses Neo4j (www.neo4j) as persistence database and has borrowed a few files from JQuantLib (, mainly from the math package.

Strabil was inspired by Geant4 (, a "toolkit for the simulation of the passage of particles through matter", initially developed at the European Laboratory for Nuclear Physics (CERN). Although there is no connection between the two project (Geant4 is a C++ library of much higher complexity), like for Geant4, also in Strabil the collaboration will provide a library, a "schema", on which you can build your own application. As the Geant4 collaboration says for their product: "You can build what you want, tailor it to your requirements, but you have to build it yourself".

Below the result of a simple application based on Strabil. One single Event where 400 CustomerAgents have a Relationship of customership with a single Seller. The relationship can vary from NoStatus to Gold, depending how much the customers are spending in Goods.

There is an annual lost, ie customers tend to spend less in Goods every year. To avoid that, the Seller has implemented a Loyalty Scheme mechanism with 3+1 Levels, where a fixed (for every Level) amount of money can be spent on Services, still provided by the Seller. In these way Customers have a certain probability to either not spend less in order not to go to a lower Level or to spend more in order to upgrade.

The simulation shows one of the many possible evolutions of the market (it's a single Event of the Monte Carlo) for the next 10 years.

Market Evolution

Project Objectives

  • Provide a reliable simulation toolkit for Market simulations.
  • Strabil comes from Strategy Building. It is developed with the idea that reliable ReactionToOffer (see right) will provide good understanding of different business models. For instance, in the example above, the application can be used to optimize the amount of services that the seller must give for free to each level.
  • Strabil is still on a pre-alpha stage. We aim to provide Market (see right) interactions well founded both theoretically and experimentally. This is why the product is released Open Source: if results differ widely from observation, a developer will be able to make changes which will eventually improve the whole library.
  • Models must be subject to a continuous programme of validation.


    Agent: an object with a Name, an ID, an array of budgets and certain skills (methods) like evaluating, buying and offering a Product, creating a relationship of customership.
    Product: an object with Name, price, market value, fixed cost and variable cost. It can only have one owner.
    Market: a set of related Agents and Products. Relationships between these entities (like IS_CUSTOMER, OWNED_BY) determine the evolution of the Market.
    ReactionToOffer: the prototype of any possible reaction of a customer when a product is offered. Simple mechanism are provided by Strabil, but the Application developer is supposed to define his/her own Reactions.