The five existing answers fail to address the core reason C# is populair in the financial industry.
If there is one thing the financial industry has understood for a very long time, and is still improving, it’s:
- You better add value, reflected in profit
- You better manage your risk
- You better manage your scarce resources
It all starts with (1), if you are doing something without adding value, why do it?
And if you can’t make a fair profit with a small investment in a development stack, it’s not worth it. The costs of Microsoft development tools are not astronomic.
Then comes (2), risk management. You cannot explain to regulators why your core application just stopped because of a changed dependency in your system. It worked as a charm in 3.1.3.2.4.7, but now you’ve upgraded to 3.1.3.2.4.9 things are broken.
And unfortunately it was the component responsible for client investment risk management, not only does the regulator complain and fine you, you also face lawsuits which might put you out of business.
And if you’ve managed (1) and (2) you start to think about 3.
Because programming is not your core business. It’s finance. Your developers need to have domain knowledge of the business. If your programmer does not understand Value at Risk or Tracking Error, or being able to understand at least the basics of performance analysis, there is a fair chance the developer is not up to the job.
You need a development language which is generic, does not change every other day, and is easy to learn by both programmers who learn finance as well as economics who learn programming.
Many domains have the luxury of:
- Being able to produce value without a huge market pressure
and - No regulatory pressure on top of market pressure
and - No public pressure on top of market and regulatory pressure
and - No significant downside financial risk for clients
and - Being able to assign non-domain specialists on the problem
and - Being able to attract top developers who don’t like the restrictions which point 1–5 put on developers
The C# (and Java) choice in the financial industry is the result of decent management practices around adding value, managing scarce resources and risk management.
You will find other languages as well, specially in the prototyping domain or in domains where requirements change by minute. Yet anything that should be stable for a while should be implemented in a stable development environment where people can focus on the two necessary knowledge domains: first the financial domain and second the development domain. C# and Java provide this, as well as some “ancient” development environments (one of our systems has an APL core engine).
We don’t use the other available languages because there is plenty of money, we use C#, Java and similar languages because the other languages are far too expensive for us!
Once you realise this, you start to view programming languages and software development in an entirely different way.