[This message was posted by Mahesh Kumaraguru of  <[email protected]> to the 
"Algorithmic Trading" discussion forum at http://fixprotocol.org/discuss/31. 
You can reply to it on-line at http://fixprotocol.org/discuss/read/bc034502 - 
PLEASE DO NOT REPLY BY MAIL.]

Last weekend was a major software release at BuySide MAX. Monday Market open 
started with live tests using ZVZZT on Acct 0000000000 and "all hands on deck" 
with no incidents. On Thursday morning, within a few minutes of trading, alarm 
bells started going off in the MAX organization's CEO's office because of the 
huge loss in milliseconds of trading when large buying of GE to cover short 
positions pushed up GE prices and selling large volume of GM pushed down GM 
prices.

Now a senior management committee in incident review meeting with trader, 
developer, tester, FIX analyst etc.

[Snip of chat Transcript from Tuesday evening USA EST electronic chat session 
between BuySide trader=MAX & SellSide Broker=NATX]

MAX (4:08 PM): Hi GM
NATX (4:09 PM): Hi GE
                At your order sir.

[End Tuesday snip]

[Snip Thursday morning USA EST]

MAX (9:04 AM): Hi GE
NATX (9:04 AM): Hi GM
                At your order sir.

[End snip]

Dev : See the chat texts have GM and GE Ticker symbols and FIX keyword Order. 
This gives OneTriggersOther FIX Order for Buy GM by using money thats received 
by Selling / short selling / naked short selling GE.

Trader: B*****IT, GM means "Good morning" and GE means "Good Evening". You know 
where Broker NATX is located ? In Asia. Look at the timestamp 4 PM, its evening 
for me and morning for him.

Dev : But how come you are trading a US security using a broker in Asia?

Trader : Its their operations which are run from offshore, its a NY-US 
brokerage firm. I did not want to Trade in GM or GE at the close of market.

Dev : OK. Sorry.

Trader: B*****IT FIX keyword Order, I wish NATX had said "at your service".

Dev : Then InterpretChatSignalsAsDayTradingOrders.java would have called a POJO 
Web service to trigger portfolio(s) rebalancing using these ticker symbols.

CIO to Dev: You wrote this "Interpret Chat Signals as Day Trading Orders" 
routine ?
Dev : Acually many MultiThreaded overloaded and overridden methods in 
InterpretChatSignalsAsDayTradingOrders.java non abstract class.

CIO : May I ask why you wrote it?

Dev : Managers kept asking me to appy Artificial intelligence in trading 
systems functionality / Algorithimic trading, a senior manager commented "To 
apply artificial intelligence, natural intelligence is needed, Haa Haaa". My 
design was "If chat text has FIX Keywords and / or values, it indicates the 
chatters are interested in those FIX / trading actions, use information from 
dynamic market data feed & RIXML / New feeds, do Complex-Event-processing which 
would lead to a partial rebalance that can be triggered on available 
portfolio(s) and or position closing can be done and present the CEP results of 
analysis (of data from feeds into the REBAL routines) to the Trader(s) so 
(t)(s)he(y) can make an "intelligent" choice of trading using that result set 
or manually adjust the New Order List quantities / prices / order type(s) / 
TIFs etc to own preferences or discard the list of generated orders 
altogether.Anyway they have manual order entry screen and XML data upload."

CIO : How does your program decide Order quantity, Market or Limit order, Limit 
price etc.?
Dev : As per FIX.4.2 spec, for a New Order Single ^35=D^, OrderQty 38 is a 
Req'd=N ie its an optional field. 

CIO : So ?
Dev : The program looked up its AI dictionary of action to be taken when a 
piece of information is absent and implemented the solution to defer assigning 
a concrete value to the missing field to a later component using 
ChainOfResponsebility GOF design pattern.

CIO : Keep going.
Dev : Absence of Quantity was interpretted as Buy or sell / shortSell as many 
shares as available in the market by the front end trading engine FANTOMS FIX 
Automated Neural Trading & Order Management System. Its runs a background 
Thread and uses method generateBuySell to keep creating the actual orders using 
small quantities of MaxFloor and keeps scrapping the market. It also listens to 
IOIs from Market and triggers rebalances to generate orders. Broker is setup to 
not send these auto orders into the market as IOIs.

CIO : May we ask what your program uses to decide OrderType 40?
Dev : I analyzed the FIX / electronic trading logs for the last many years 
since we started using electronic trading and found that 

      1. More than 95% of the orders were market orders which came from 
automated rebalancing portfolio management engines which did Cost basis 
analysis. 

      2. The remaining less than 5% of Limit orders were manually created by 
traders without using an electronic rebalance. Since I was only trigerring an 
partial rebalance using an existing tested module, I let the rebalancing module 
assign the order type. Order Type market did not require Price tag and one 
lesser tag in the FIX message improved performance. Also market orders trade 
faster than limit orders, so I thought traders would like it better.

CIO Nods his head in sign of hopelessness of situation.

Trader: {Keeps fuming} This is why I say these dangerous tools should NOT be 
made available to all people.
CIO : And what may I ask is a dangerous tool ? A weapon of Mass desctruction. 
Haa Haaa.
Trader: Complex Event processing and Algorithmic trading, Background 
multithreading in Java (I dont like anything behind my back), Class heirarchies 
etc. Did you read the recent "Time to Reign in Algorithims" news article ? and 
the post "Dark Liquidity Pools — Friend or Foe?" ? I do not like dark liquid 
pools, reminds me of blobs from crude oil spills. or "Algos Gone Wild on the 
OSE" ? Its a Wild Wide World :-( www.*.*/

CIO : Yes I read them. I had also read an article in the past about class 
hierarchies dividing ancient Indian society into 4 classes and how that was bad 
for that society as a whole. I dont know how we the people would clean up this 
dark liquidity pool's mess or tame the wild Electronic financial monsters.

CCO: Now Dev, explain to me why you think your automated trading program is not 
in violation of this organization's policies regarding automated software 
systems.

CLO : To quote this organization's policy "Human action would always be the 
final step before any electronic trade communication is done and details 
regarding all compliance overriding / human actions shall be sent 
electronically to legal department for acceptance."

CTO : Dev, has this rule be adhered to ?
Dev : Yes, the GM and GE orders were presented to the Trader and logs prove he 
overrode compliance and sent those trades to FANTOMS which released orders for 
these securities into the markets in waves. 
FIX Analyst : Tag 105 Wave No String Deprecated in FIX.4.2 Are we actually 
using Wave trading given that its not "in the latest waves"? Thats why I keep 
reccomending that we upgrade to latest FIX version.

CEO : Trader, is it true that you over-rode compliance and sent the orders to 
FIX broker ?
Trader : What have I done different / new compared to what I have been doing 
since I joined this trading post as an apprentice trader fresh out of college 
with an MBA degree in finance with specialization in modern electronic trading 
? Every time the portfolio management system rebalances to create buy / sell 
orders, there will always be some compliance failures, senior traders have 
advised me "the idea is to keep the ball rolling by doing trading, don't get 
stuck up in some silly compliance rules. Get the big picture, look at the 
dollars, not the fractions of cents."

CEO : Just doing something u r told to do without fully understanding the 
implications of what u r doing is simply unforgivable. Period.
Trader : Sorry but this is life.

CEO : Messaging support has provided the FIXML sent to LEGACA (Legal Committee 
Approval) application and logs indicate these compliance checks overriding was 
approved by Legal.
CCO : Its true that the Legal Committee gave approval for these orders.
Chief Systems architect : All electronic orders comming out of REBAL and having 
compliance failures overridden by trades are automatically marked approved 
because the cost basis calculation would have passed before REBAL generates 
orders.

CCO : Is this scenario "Interpret chat message contents as FIX keywords / 
values to generate FIX actions" in the testcases suite?
Tester: Yes, we have test cases, but in last release this was untested because 
we testers are not given access to chat applications.

CEO : Why were u not given access to chat applications when traders have access 
to it ?
CTO : Due to organization's "Need to have & use" policy. I believe everybody 
should have access to everything, but this organization's IT policies were 
written much before I took office here and I am only implementing the policies.

Dev : Actually all of us in technology do not have access to chat applications. 
I wrote the auto trader code and since I did not have access to chat 
applications, it was tested using stubs and skeletons.
Trader : Could you not find any real human testers, u had to use skeletons ? So 
disgusting to imagine using a program tested by a skeleton...
Dev : Tested by a human using a skeleton.
Trader : Skeleton wherever, whenever doing whatever...
CIO : Thats why I keep saying lets outsource / offshore and use real humans 
sitting somewhere else instead of skeletons here.

Trader : There is beauty in symmetry but there is no beauty in cemetery.

[Pause]

The CEO concluded that global action is required to stop these weapons of mass 
destruction with various bogus names like Artificial intelligence, Expert 
systems, Complex event processing, Dynamic heuristics, Background 
MutiThreading, Class hierarchy, C, MVC, C#, Java, Phython, Jython etc. are the 
real culprits. All should be done to stop the spread of these dangerous tools 
to inexperienced users who could create a global financial catastrophe and 
destroy the worldly way of life as we know of it presently by destroying the 
financial structures of the world. 

CIO : Somebody had rightly said - To err is human, but to really foul up large 
numbers, you need computers ;-(

Implemented improperly, Agile model became Fragile model.

Note :- All names of people / companies, ids, places, incidents, etc bear no 
relationship any entity living or dead. All softwares are real and copyright 
owned by their respective organizations / companies.


[You can unsubscribe from this discussion group by sending a message to 
mailto:[email protected]]

-- 
You received this message because you are subscribed to the Google Groups 
"Financial Information eXchange" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/fix-protocol?hl=en.

Reply via email to