After quite some work setting up the configurations/trade data/market data, I’m having the idea to easen this by using database structures / relational integrity, so there is ideally no/little possibilities of error in configuring (e.g. only already set-up curves can be used in todays-markets, etc.).
I’m currently working on a script to convert the xsd Schemata to SQL-DDL Statements and the XML-files to SQL-INSERT Statements to fill the created tables.
After that I’d like to just build SQLXML-Querys to build the XML-files from Database-queries and feed this into ORE in the same way as now.
In the far end, I’d like to write an extension to the OREAnalytics/Parameters.cpp, XMLSerializable and CSVLoader to allow filling parameters/XML-configurations using SQLXML Queries and Marketdata using plain SQL Queries.
The idea is reusing all XML related checks/access code with an alternative way to get this data from a database (defined in a connection string in ore.xml)
Maybe, we certainly tried to design the base classes so other types of loaders (rather than file based ones) could be added as required.
However I’d be reluctant to include any SQL in the core libraries, adding an SQL dependancy would risk making it more complicated and difficult for people to use. We used files as a first example because it is easier to look at xml files at the configuration and to exchange them rather than DB dumps.
There is a problem that oreapp does assume a file based approach, this should be factored out, but the rest of the libraries do not assume it, so in theory the xml source can come from any stream.