Interest in a FIX Protocol Library?
Hello Boost, I have been following the boost email lists for a while now and would like to contribute to Boost too. Since it matches at best my experience it would be probably most beneficial if I contribute to a BOOST/FIX library. FIX comes from the "Financial Information eXchange" Protocol and it represents a standard that is used a lot in the Financial Industry. For more information see the related Web Site: http://www.fixtradingcommunity.org. Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that. Secondly I would like to receive feedback on what functionality would be interesting to be part of this library. For instance it could contain: - basic components that can be used to build bigger blocks: e.g.: raw data iterators, message components, field types; - conversion functions from FIX to C++ types and vice versa; - code generators for Messages, Enums, Constants based on XML specification files; - implementations for various FIX Session types: Tag-Value, FAST, FIXP, user defined messages, etc; - transformers which based on some configuration could convert messages automatically between various FIX versions; - message persistence, etc. FIX is very well documented and as such various functionality could be probably easily split into interesting projects that are to be part of the GSoC. Let me know what you think. Thanks, Marius Dobrea
On 12/01/2015 23:55, Marius Dobrea wrote:
Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that.
QuickFIX and fix8 (first results on Google) are open-source. What would be the advantage of your library compared to them?
Mathias Gaunard
On 12/01/2015 23:55, Marius Dobrea wrote:
Firstly I would like to ask the community if there is interest in such a
library and if anyone is doing any work on it. It seems to me that
although there are a lot of firms and institutions in the world
providing software or using FIX there are too few open source C++
libraries for that.
QuickFIX and fix8 (first results on Google) are open-source.
What would be the advantage of your library compared to them?
It is perhaps not fair to point out weaknesses in the other libraries without being able to show alternative approaches. So I will just list here some potential features I would love to see in a FIX library. It should: - Contain messages or business objects agnostic to the serialization or protocol session implementation. The protocol and its versions should be just an implementation detail and not shine through the higher lever interfaces. - Be extensible: the user should be able to provide his implementation of messages, field types, protocol, and session implementations; Note that by doing this the library will gain a bigger scope than a simple FIX implementation because users will not limited to FIX messages only. Basically two firms could: - Agree on the messages and the fields they want to send; - Create the corresponding xml file and run the message code generator; - Start sending messages over the wire using a simple Tag=Value protocol; - Once the number of messages increases and a simple protocol underperforms they could instantiate in their application a binary protocol session and start transmitting binary messages. Their business code would not need to change at all. - Have BOOST, C++ >= 11 orientation; This library has for me an important learning role. So I do not plan to reinvent the wheel but to (re)use: BOOST libraries, new C++>=11 features, STL, etc. - Provide a place where general and reusable concepts can be discovered, implemented, tried, unittested, their performance measured. As Niall mentioned in another reply a FIX library with significant added value is too huge as scope. So I am inclining more in the direction research, bachelor thesis than a final product that can be simply picked up and used by a hedge fund.
On 12 Jan 2015 at 23:55, Marius Dobrea wrote:
Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that.
I did a lot of work with FIX during one of my Masters degrees. To write a FIX library which significantly added value over other open source FIX libraries is a highly challenging technical endeavour. Sufficiently so I wouldn't recommend it, its cost benefit is lousy as if it were really good enough the hedge funds would simply lift your work and pay you nothing for it. Instead I'd consider something newer like OUCH. Even implementing OUCH in a value adding way over other implementations is highly challenging. And again, where is the benefit to you or others over the very significant costs of implementation? Our backup GSoC admin Boris works in this area as his day job, and there are people from the core Bloomberg C++ team watching this list. If there were an appetite for contributing financial trading libraries beyond the maths ones, I think it would have happened already. Perhaps think more generically, something much more general and reusable? Even fast XML processing we lack in Boost, and that is very generic and reusable. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/
The only competitive dimension I can think of is speed, but for that a generic boost library is not the easiest road: I've seen people implement the the whole stack including TCP/IP on FPGA, the reason is that they can afford custom development and don't need to rely on elegant open source libraries. A good question is: will you have customers?
On Mon, Jan 12, 2015 at 5:55 PM, Marius Dobrea
Hello Boost,
I have been following the boost email lists for a while now and would like to contribute to Boost too.
Since it matches at best my experience it would be probably most beneficial if I contribute to a BOOST/FIX library. FIX comes from the "Financial Information eXchange" Protocol and it represents a standard that is used a lot in the Financial Industry. For more information see the related Web Site: http://www.fixtradingcommunity.org.
Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that.
My gut instinct is that FIX is too domain-specific, whereas Boost is typically domain-agnostic libraries. Nut maybe I'm wrong about that? Tony
On 15 Jan 2015 02:58, "Gottlob Frege"
On Mon, Jan 12, 2015 at 5:55 PM, Marius Dobrea
Hello Boost,
I have been following the boost email lists for a while now and would
wrote: like
to contribute to Boost too.
Since it matches at best my experience it would be probably most beneficial if I contribute to a BOOST/FIX library. FIX comes from the "Financial Information eXchange" Protocol and it represents a standard that is used a lot in the Financial Industry. For more information see the related Web Site: http://www.fixtradingcommunity.org.
Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that.
My gut instinct is that FIX is too domain-specific, whereas Boost is typically domain-agnostic libraries. Nut maybe I'm wrong about that?
No you're not. I use fix at work and that's the last thing we'd expect from boost. Julien
On Wed, Jan 14, 2015 at 10:07 PM, Julien Nitard
On 15 Jan 2015 02:58, "Gottlob Frege"
wrote:
[snip]
My gut instinct is that FIX is too domain-specific, whereas Boost is typically domain-agnostic libraries. Nut maybe I'm wrong about that?
No you're not. I use fix at work and that's the last thing we'd expect from boost.
I don't feel the same way. I have been thinking of writing a FIX protocol parser based on boost.spirit for boost for a while already.
Julien
Regards, -- Felipe Magno de Almeida
Felipe Magno de Almeida wrote:
I don't feel the same way. I have been thinking of writing a FIX protocol parser based on boost.spirit for boost for a while already.
My friend wrote some benchmarks for csv parsing in many languages [1]. Many of them use specialised libraries but Lua and C++ code is based on general purpose parsing libraries. Boost.Spirit isn't much faster than Lua LPEG. [1] https://bitbucket.org/ewanhiggs/csv-game/ Alex
I've looked at all the responses here which suggest that such a library wouldn't be a great idea. None of them convince me. Every boost library has competition - this is not a bad thing. Boost libraries tend to work better with other boost libraries and the standard library. Boost library tend to be of higher quality than other libraries In the future we will see more libraries of narrower application - because we've already made libraries for the wider applications. If you make such a library, and it's of high quality, I see no reason why boost wouldn't accept it. Robert Ramey -- View this message in context: http://boost.2283326.n4.nabble.com/Interest-in-a-FIX-Protocol-Library-tp4670... Sent from the Boost - Dev mailing list archive at Nabble.com.
On Wed, Jan 14, 2015 at 10:15 PM, Robert Ramey
In the future we will see more libraries of narrower application - because we've already made libraries for the wider applications.
Even when I wrote that FIX seemed to domain specific, I was thinking the same thing - if we've tackled the wide stuff, only the narrow stuff is left. I just wasn't sure if we were at that point yet, and whether we wanted to go in that direction. If/When Boost is really modular, then I think narrow stuff is easier to accept. (ie once half of Boost is narrow, it better be easy (ie the *default*) to get just the parts of Boost I want) Tony
15.01.2015 20:14, Gottlob Frege пишет: >> In the future we will see more libraries of narrower application - because >> we've already made libraries for the wider applications. > Even when I wrote that FIX seemed to domain specific, I was thinking > the same thing - if we've tackled the wide stuff, only the narrow > stuff is left. There are many general-purpose standards that are not supported by the C++ standard library yet: - Unicode - XML - JSON - HTTP - Cryptography - (you can look at the standard libraries of other languages for a more complete list) I think that it is a good idea to support these standards in the Boost. Unfortunately, I think that FIX is far too domain-specific. As a boost user, I'm not against mentioning boost-licensed domain-specific libraries somewhere at the Boost web site but I don't think that these libraries should be included into the default boost distribution. The reasons are: 1. The library size does matter. 2. The boost community has to support everything that is included into the boost library. What if a maintainer of some library abandons it? For a general-purpose library, there are chances that someone will take responsibility for it. For a domain-specific library, such chances seem to be negligible. -- Best regards, Sergey Cheban
Sergey Cheban-2 wrote
I think that it is a good idea to support these standards in the Boost. Unfortunately, I think that FIX is far too domain-specific. As a boost user, I'm not against mentioning boost-licensed domain-specific libraries somewhere at the Boost web site but I don't think that these libraries should be included into the default boost distribution. The reasons are:
1. The library size does matter.
The above is predicated that Distribution of Boost Libraries will continue indefinately to be distributed as a complete package. Our recent efforts including modularization, reduction of dependencies, etc. will eventually result in a deployment model in which acceptance into boost and deployment will be decoupled. Users will install subsets of boost that they actually use. This might result in distributions with names like: Boost.Core - iterators, ranges, etc... Boost.Legacy - stuff which is obsolete for modern compilers but is still needed by some people - BOOST_FOREACH, BOOST_TYPEOF, etc. Boost.Math - Boost.Security Boost.Finance etc. So I think that trying too keep boost small - though attractive - doesn't look forward to the future. I think the main challenge to Boost and C++ in the future is to find a way to produce better quality libraries.
2. The boost community has to support everything that is included into the boost library. What if a maintainer of some library abandons it? For a general-purpose library, there are chances that someone will take responsibility for it. For a domain-specific library, such chances seem to be negligible.
True - and we need to find a way to address that. But that's no reason for keeping the library small or letting it grow - it's a different question. Robert Ramey -- View this message in context: http://boost.2283326.n4.nabble.com/Interest-in-a-FIX-Protocol-Library-tp4670... Sent from the Boost - Dev mailing list archive at Nabble.com.
16.01.2015 0:10, Robert Ramey wrote:
1. The library size does matter. The above is predicated that Distribution of Boost Libraries will continue indefinately to be distributed as a complete package. Our recent efforts including modularization, reduction of dependencies, etc. will eventually result in a deployment model in which acceptance into boost and deployment will be decoupled. Users will install subsets of boost that they actually use. Well, we can invite some libraries into Boost after modularization. Or, someone could try to implement the boost.finance as a module for the modularized Boost.
So I think that trying too keep boost small - though attractive - doesn't look forward to the future. I think the main challenge to Boost and C++ in the future is to find a way to produce better quality libraries. It's not about keeping the library small. It's about benefits and costs of the decision to include a library into the Boost. Even after modularization, the costs will not completely disappear.
For those who wants just a set of independently maintained modules, we already have Github.
2. The boost community has to support everything that is included into the boost library. What if a maintainer of some library abandons it? For a general-purpose library, there are chances that someone will take responsibility for it. For a domain-specific library, such chances seem to be negligible.
True - and we need to find a way to address that. But that's no reason for keeping the library small or letting it grow - it's a different question. Good, big, cheap. Choose 2 of 3. Boost is cheap. I'd like it to be rather good than big.
-- Best regards, Sergey Cheban
How would this be different from the quickfix library?
On Jan 12, 2015 10:55 PM, "Marius Dobrea"
Hello Boost,
I have been following the boost email lists for a while now and would like to contribute to Boost too.
Since it matches at best my experience it would be probably most beneficial if I contribute to a BOOST/FIX library. FIX comes from the "Financial Information eXchange" Protocol and it represents a standard that is used a lot in the Financial Industry. For more information see the related Web Site: http://www.fixtradingcommunity.org.
Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that.
Secondly I would like to receive feedback on what functionality would be interesting to be part of this library. For instance it could contain: - basic components that can be used to build bigger blocks: e.g.: raw data iterators, message components, field types; - conversion functions from FIX to C++ types and vice versa; - code generators for Messages, Enums, Constants based on XML specification files; - implementations for various FIX Session types: Tag-Value, FAST, FIXP, user defined messages, etc; - transformers which based on some configuration could convert messages automatically between various FIX versions; - message persistence, etc.
FIX is very well documented and as such various functionality could be probably easily split into interesting projects that are to be part of the GSoC.
Let me know what you think.
Thanks, Marius Dobrea
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/ mailman/listinfo.cgi/boost
Let me give you one example I was thinking of recently.
Let's assume that you decide you want to use these fields types in your
application: char, int, unsigned, double, std::chrono::time_point,
boost::container::string.
You could define a basic 'component' class as a mapping between the tag
and a recursive variant of the types you chose and the 'component' itself.
class component : public boost::container::flat_map
How would this be different from the quickfix library? On Jan 12, 2015 10:55 PM, "Marius Dobrea"
wrote: Hello Boost,
I have been following the boost email lists for a while now and would like to contribute to Boost too.
Since it matches at best my experience it would be probably most beneficial if I contribute to a BOOST/FIX library. FIX comes from the "Financial Information eXchange" Protocol and it represents a standard that is used a lot in the Financial Industry. For more information see the related Web Site: http://www.fixtradingcommunity.org.
Firstly I would like to ask the community if there is interest in such a library and if anyone is doing any work on it. It seems to me that although there are a lot of firms and institutions in the world providing software or using FIX there are too few open source C++ libraries for that.
Secondly I would like to receive feedback on what functionality would be interesting to be part of this library. For instance it could contain: - basic components that can be used to build bigger blocks: e.g.: raw data iterators, message components, field types; - conversion functions from FIX to C++ types and vice versa; - code generators for Messages, Enums, Constants based on XML specification files; - implementations for various FIX Session types: Tag-Value, FAST, FIXP, user defined messages, etc; - transformers which based on some configuration could convert messages automatically between various FIX versions; - message persistence, etc.
FIX is very well documented and as such various functionality could be probably easily split into interesting projects that are to be part of the GSoC.
Let me know what you think.
Thanks, Marius Dobrea
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/ mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 2015-01-12 23:55, Marius Dobrea wrote:
Let me know what you think.
It is very unlikely that a Boost FIX library would make the specific combination of interface/efficiency/complexity/configurability/extensibility compromises/tradeoffs/choices that suit the specific requirements we have for a FIX library at the trading company I work for. Nor would we benefit from integration with our other libraries and conventions. So a Boost FIX library would probably not be of much use to us.
On 15 January 2015 at 20:33, Eelis
On 2015-01-12 23:55, Marius Dobrea wrote:
Let me know what you think.
It is very unlikely that a Boost FIX library would make the specific combination of interface/efficiency/complexity/configurability/extensibility compromises/tradeoffs/choices that suit the specific requirements we have for a FIX library at the trading company I work for. Nor would we benefit from integration with our other libraries and conventions. So a Boost FIX library would probably not be of much use to us.
I suspect that the above comment is true of most of the target audience. The deficiencies in the existing open-source libraries would be of significance primarily to those seeking to have edge in their implementation. It additionally would have the effect of making it harder for some of us to work on Boost. I have been able to get IP amendments to employment contracts because I have been able to show that Boost is not in competition with my employer. If Boost contained solutions to problems in the financial domain I would have been forced to decide between resigning from my job or continuing with Boost. I don't think I am alone in having had difficulty convincing my employer to make IP alterations to allow me to work on Boost. I am grateful that my recent employers (Aris, GETCO, and Tibra) have been prepared to go through the time and expense to provide accommodation to allow me to continue to contribute. I worry that if we start to include libraries that are for specific business domains that we would create barriers for programmers that want to work on Boost. I'm all for the development of a better open-source FIX library, but not as part of Boost. Regards, Neil Groves
participants (13)
-
Alexander Nasonov
-
Andrew Marlow
-
Eelis
-
Felipe Magno de Almeida
-
Gottlob Frege
-
Julien Nitard
-
Marius Dobrea
-
Mathias Gaunard
-
Neil Groves
-
Niall Douglas
-
Robert Ramey
-
Sergey Cheban
-
Thijs (M.A.) van den Berg