luigi sgro

software architect


Developing a software application means building new ways for humans to interact productively with a computer.

Like a specialised language, an application enables two-ways communication with a counterparty — the computing machine — for a specific goal.

When the machine is driven by the user to perform a task, it relays back some notion of its inner workings.

The fidelity of this feedback loop is essential to the quality of user experience: as with any sophisticated instrument, by using a computer we iteratively learn what it enables us to do, and we adjust, in response to that, the realm of our creative possibilities.

Arbitrary limitations, poor performance, lack of self-consistency, rather than being simply annoying traits of software applications, which make our work more difficult than it needs to be, are in fact hampering our ability to reason in innovative ways: like an out-of-tune piano, a poorly developed application affects creativity at its source, impeding an ideal user performance with its own idiosyncrasies and impossibilities.

Developing applications in a way that enables an empowering level of interaction is only possible by carefully and professionally mediating between the client's applicative domain and a properly selected stack of technologies.

Minimum viable products, early and frequent releases are vital practices for success, but they must be accompanied by a speculative activity, continuously challenging the current domain model, ready to revise and rework architecture and code when hypotheses are falsified.

Technical skills must not be a barrier to erect as a protection from the world, but the means for a developer to display and let others experiment with a novel view of the world: a living thing that is destined to be tested, criticised, recast, amended, redone, improved perpetually, precisely because there is value in it.


Data analysis and scientific computing

Low latency / Efficiency

High throughput


Sample of past projects where I contributed substantially to design and implementation:

    Risk analytics for equity trading

    Python, Pandas, Jupyter, Docker, Postgres, REST, Bloomberg API

    Risk and pricing application for volatility trading

    Scala, AWS Lambda, Redis, Microsoft SQL, REST, Bloomberg API

    Open-source framework for algo-trading

    Java, Eclipse IDE, SWT

    Order management system for flow bond trading

    Java, Spring, Bloomberg API, Reuters API, FIX

    Web application for cruise booking

    PHP, Perl


Born in 1970 in an industrial city in northern Italy, my dad working in automation, I was going to become an electronic engineer.

But an unexpected event occurred when I turned 12: a Commodore VIC-20 home computer entered my house.

This was my first contact with programming, and it definitely captivated me: few months later, tired of BASIC, I was writing machine code, encoding opcodes by hand.

In my 20s, while I was studying Electronic Engineering at the University of Genoa, I learned about Linux.

The World Wide Web was gaining popularity, and with it Open Source — the ability for anybody to read and compile the programs they used, down to the operating system.

With access to the high-speed network of the faculty, having time to study UNIX, browsing Linux source code, learning C and x86 assembly, this is when I decided I did not want to be electronic engineer after all, but rather a programmer.

Immediately after graduating, I landed my first job as a C developer, and since then I have been writing software for most of my career.

After C, Java became my default programming language, and years later Scala. These were the main trends in backend programming: the big push for OOP in the nineties, then the popularisation of functional languages thanks to Scala, Clojure and F#.

The finance industry was becoming one of the biggest drivers of software innovation, providing increasing opportunities for experienced technical staff. I moved to London in 2010, to work in a financial institution, while at the same time studying at Paul Wilmott's quantitative finance school in the evenings.

It wasn't always easy to reconcile working abroad with my family life, but eventually my wife and I managed to find an optimal compromise by both of us relocating to Zurich, Switzerland.

Leveraging the knowledge of derivative pricing acquired with my studies in London, I moved to the hedge fund industry, where I started building quantitative tools for risk management and trading algorithms in Scala and Python.

A small developer team, sharing office with traders, that was a congenial working environment for me. I find it natural to delve in other disciplines deep enough to find an angle from which users and code align in the most effective way.

After several years of experience in this field and two successful green-field projects, I realised that I should take some time off, away from all the necessary schedules and routine activities of company work, to let the latest experiences sediment, and get ready to start a new productive phase.


  • Consultancy and software architecture design.
  • Startup co-founder/head of software engineering.
  • Custom application development and integration in the fields:
    • risk analytics
    • equity derivative pricing
    • trading strategies
    • market data
  • Interested in any innovative software project with room for autonomy and independent decision making.



Telegram: @lsgro

In person: let's meet in my Lugano office, or in another location at your convenience.