About the author
Some thoughts on the infrastructure, and what's needed to implement a software application that can perform HFT on SGX (or on any other stock market).
For each stock market, a table/database is needed to store a list of all stocks, its BVS (book value per share), market capitalisation, EPS (earnings per share), PE ratio, dividend yield, margin of safety. Another table needs to hold a list of trades performed by the company, so that current holdings and costs of investment can be calculated. In addition, for each market, maintain a table of trading fees for each transaction, whether trading fees are fixed, or dependent on size of trade. For each market, or vendor, create an algorithm that calculates how much it costs to perform a single transaction, and execute this algorithm whenever a trading is performed, to calculate and store the transaction into the table. Yet another table is needed to track the amount of money to be allocated to each stock, and at what price level.
One trading algorithm is to drive down the price of a stock, by selling it down, then buying it (at the lower price) to create the illusion of a stock that is losing value. For this algorithm, the desired ending price, the starting stock price, the start date, and end date needs to be kept (so that the algorithm can keep track how many days/months you can execute this algorithm for), in addition to the amount of money to be allocated to this execution, the amount of money to be allocated to each stock price level.
Yet another trading algorithm is to drive up the price of a stock, by buying it at progressively higher prices, to create the illusion of a stock that is gaining value.
You'll also need a monitoring routine, that checks
It is rather relatively easy to spot whether trading algorithms are performing transactions. At the time of writing, on SGX, it appears that there are trading algorithms that are programmed to trade in 1 lot (1000 shares). For share prices that are less than 10 cents, this does not make sense for humans to trade, because, assuming the share price is 9 cents ($0.09), trading in 1 lot would costs $90 (not including trading fees, etc). Including trading fees, the trade would be about $120. In order to recover the investment, the stock would need to go up/down by over 60% in order to recover the trading costs for 2 transactions (buy and sell, or sell and buy)!
Such a flaw (trading in 1 lot) shouldn't exist, because it allows people to detect algorithmic trading. So, you'll need a routine that can analyze the costs in performing 1 or 2 transactions, and adjust the volume of the transaction so that the cost of the trade is significantly lower than that of the cost of the stock involved in the trade.
Targets of such trading algorithms in the past few weeks, I believe, are LionGold, Asiasons, Sky One, Viking, etc.
So, what is the infrastructure needed? You'll need some
Continued discussion of undocumented Delphi 8 Property Access Specifiers, and other ways of adding and removing delegates / events handlers, including clearing the list of all the delegates / event handlers.
This article discusses the new Delphi 8 property access specifiers.
A method pointer is now the same as a global procedure, ie, procedure of object = procedure.