An interesting feature of the markets functionality of the
Open Transactions server is its lack of support for commission (percentage) based fees.
Instead, it can be configured to charge each "nym" (pseudonym, a pseudonymous identity) usage points. It is quite primitive currently, charging one usage point per underlying API (Application Progam Interface) call performed on behalf of that nym.
Possibly this structure might discourage bots from doing pathetically trivial-value trades by making each trade cost a minimum amount, while only minimally discouraging trades valuable enough that the usage points cost is trivial compared to the value traded.
It also however means that asking over and over again what is currently happening also has a cost, since that also uses API calls. Actual trades might well end up costing much less than the cost of polling the server as to how the markets are faring.
This state of affairs seems to me to be quite good for a Battle of the Bots scenario that I would like to run, because I am thinking of running bots under a shared environment in which I will run, at regular intervals, first a data acquisition and formatting routine and then a population of bots. The usage points cost of acquiring the market data will thus be shared across a whole population of bots who share that environment.
This seems quite advantageous for the bots who get to be part of that environment, however there is likely to be a trade-off in the actual computation(s) available to the bots. Basically I do not want to run a whole bunch of very CPU-intensive bots, rather I want to pre-compute a whole bunch of indicators so that each bot can be pretty much just a few if-then statements or a case-statement that ends up issuing and/or cancelling some offers on one or more markets based on the values of the provided indicators.
To do this nicely of course means first deciding what indicators to initially provide. Anyone wanting to use others can run scripts themselves on their own machines and use simple Open Transactions client scripts at their end to get the raw market data and place their trades.
I would like to keep the bot scripts as simple as possible. I am even thinking of having each bot be just a snippet of bash script, or maybe a bash function. But that is mostly because to me it is nice and simple to use bash scripts to determine what commands to run, which leads to thinking it might be simpler to import a bot's code directly into my script than to fire up some external interpreter to run it. I certainly want to be able to very easily see "at a glance" that a given bot does not do any looping (or does very minimal, non-recursive looping) and that it does not execute any suspicious, dangerous, or very resource-consuming commands.
I would like to start off with a few very simple very classic strategies, tried and true strategies people are willing to bet on, because I would like these bots to be able to themselves serve as stocks/shares in which they and others can invest.
Thus the more bots in the population, the more assets there will be for them to exercise their strategies upon.
That is the basic concept. The rest will likely just be details of implementation...
-MarkM-