A proposal for testing black-box systems
The best method to test a black-box system seems to be
if the system is online for a registered user (the interessent),
and offers a simple API for feeding the system with tick or bar data.
The system has to send its every decision to the user,
so he/she can verify that the system did not "look forward" into the data.
The API should have these main functions:
- login
- logout
- set_system_params
- start_system
- stop_system
- abort_system
- feed_system_with_market_data
- ...
and optionally:
- get_current_summary (ie. positions list and account data)
- ...
It means that the user has to send continously _single_ tick or bar data, maybe making a small pause of some milliseconds after each package sent.
And user-side must check if any data from the system-side has arrived.
Of course the system has to send status messages if it encounters an error
(for example if it gets no data from the user anymore and a timeout happens).
For security reasons an SSL link should be used (like https).
The market data (either real or simulated) has to come from the user.
The system must collect the data and inform the user immediately after making a trading decision (ie. buy/sell).
All data must have a timestamp or a tick/bar number, and maybe even a CRC for each data package.
The user has to log all the data he/she sends to the system, as well all the data he/she receives.
Same for the system side.
This gives a very good method for testing a remote black-box system and its advertised performance.
Of course it could still be cheated if both sides conspire and have that in mind.
But otherwise it is IMO the best testing method between system developer and a potential customer.
The best method to test a black-box system seems to be
if the system is online for a registered user (the interessent),
and offers a simple API for feeding the system with tick or bar data.
The system has to send its every decision to the user,
so he/she can verify that the system did not "look forward" into the data.
The API should have these main functions:
- login
- logout
- set_system_params
- start_system
- stop_system
- abort_system
- feed_system_with_market_data
- ...
and optionally:
- get_current_summary (ie. positions list and account data)
- ...
It means that the user has to send continously _single_ tick or bar data, maybe making a small pause of some milliseconds after each package sent.
And user-side must check if any data from the system-side has arrived.
Of course the system has to send status messages if it encounters an error
(for example if it gets no data from the user anymore and a timeout happens).
For security reasons an SSL link should be used (like https).
The market data (either real or simulated) has to come from the user.
The system must collect the data and inform the user immediately after making a trading decision (ie. buy/sell).
All data must have a timestamp or a tick/bar number, and maybe even a CRC for each data package.
The user has to log all the data he/she sends to the system, as well all the data he/she receives.
Same for the system side.
This gives a very good method for testing a remote black-box system and its advertised performance.
Of course it could still be cheated if both sides conspire and have that in mind.
But otherwise it is IMO the best testing method between system developer and a potential customer.
Last edited: