Enron Mail

From:david.forster@enron.com
To:john.arnold@enron.com
Subject:
Cc:savita.puthigai@enron.com
Bcc:savita.puthigai@enron.com
Date:Tue, 8 May 2001 02:55:00 -0700 (PDT)

John,

You might recall we spoke a few weeks ago about a system with more
intelligence for out-of-hours trading than just leaving the products on Last
Trade is Mid.

Attached is a suggestion for how such a system might work. It builds on
Offset to Last Trade functionality.

The simplified description is: It tracks two variables: Intensity(Speed) and
Bias (Buy or Sell emphasis). As Intensity increases, the Spread increases.
As Bias increases, the Offset increases.

I'll call later to see what you think of the idea.

Dave



Program Criteria

The formula which defines the trading decision-making program will need to
work with several criteria/inputs/definitions. These might be:

Intensity (Speed) - The average time between transaction attempts, regardless
of whether they are buys or sells. Measured as a moving average over the last
[Intensity Factor] transactions by comparing the timestamp of the transaction
Tibco messages for the Product.
Obviously, the lower the Intensity calculation, the higher the transaction
flow. Therefore a high Intensity number indicates low transaction flow.
Intensity Factor - The number of transactions to be included in the moving
average Intensity calculation. A possible value for this might be [4].
#Buys - The number of Buys which have occurred.
#Sells - The number of Sells which have occured.
Transaction Count - Could be either #Buys or #Sells (whichever last occured).}
Buy Offset - The Offset value which will be applied if a Buy occurs.
Sell Offset - The Offset value which will be applied if a Sell occurs.
Offset Reversion Ratio (ORR)- The amount by which the Buy Offset should be
reduced if a Sell occurs (or amount Sell Offset should be reduced if a Buy
occurs). A possible value for this might be [0.3]. If the application of the
ORR results in a reduction of less than 1, then the reduction shall be 1.
Transaction Reversion Ratio (TRR)- The amount by which #Buys should be
reduced if a Sell occurs (or amount #Sells should be reduced if a Buy
occurs). A possible value for this might be [0.3]. If the application of the
TRR results in a reduction of less than 1, then the reduction shall be equal
to 1.
Spread Minimum - The minimum Spread value allowed. A possible value for this
might be [0.04]
Spread Maximum - The maximum Spread value allowed. A possible value for this
might be [0.50]
Offset Minimum - The minimum Offset allowed for both Buys and Sells. A
possible value for this might be [0].
Offset Maximum -The maximum offset allowed for both Buys and Sells. A
possible value for this might be [0.50]
Initial Offset - The Buy and Sell Offset used when the program is started
Initial Spread - The Spread used when the program is started
Spread-Offset Minimum - The minimum amount by which Spread must exceed
Offset. Prevents a possible arbitrage opportunity for the customer. A
possible value for this might be [0.01]
Dead Interval - The period of time which must pass before the program will
recalculate the above Criteria, if no transactions have taken place during
the Dead Interval. A possible value for this might be [240] seconds.

Program Outputs

The program should output the following variables as a result of combining
the above Criteria in a user-defined Formula:

Spread (integer) - as per current Stack Manager
Offset (integer) - as per current Stack Manager
Suspension (boolean) - Whether or not the Product should be suspended.
Normally "False"


Program Interface and Operation Principles

The user should be provided with a GUI which will allow them to define a
relationship among the above Criteria, which will produce and apply the
Outputs to a particular Product. This relationship would be defined with
Intensity Formulas and Transaction Formulas.

Every time a Transaction occurs, or a Dead Interval passes, the Criteria will
be recalculated and the user-defined formulas will be reviewed by the
program. If a Dead Interval passes without any transactions taking place,
then Intensity = Intensity +240 and #Buys=#Buys-TRR and #Sells=#Sells-TRR and
Buy Offset = Buy Offset- ORR and Sell Offset = Sell Offset - ORR.

If the user-defined Formulas (see following) indicate that a change in spread
should occur, then if the Offset is zero (in the case of a trade occurring)
or if no trade has occured (during the passing of a Dead Interval), the
system shall perform a Last Trade is Mid calculation around the last
transaction, adjusting the buy and sell prices according to the new Spread
value.

Any adjustment to the Spread shall respect the Spread-Offset Minimum. If a
reduction in the Spread should violate the Spread-Offset Minimum, then the
Buy Offset (or Sell Offset, or both as appropriate) shall be reduced
accordingly. Similarly, if the Offset is increased by a Transaction Formula
to a level greater than the Spread, the Spread shall be increased to maintain
the Spread-Offset Minimum.

GUI/Formulas Example:

Constants
Intensity Factor: [4]
Dead Interval: [240]
Offset Reversion Ratio (ORR): [0.3]
Transaction Reversion Ratio (TRR): [0.3]
Spread Minimum [0.04]
Spread Maximum [0.50]
Offset Minimum [0]
Offset Maximum [0.49]
Spread-Offset Minimum [0.01]

INPUTS OUTPUTS
Intensity Formula
Formula # Intensity Spread Offset Suspension
S1 <220 -0.01 n/a F
S2 <30 +0.01 n/a F
S3 <10 +0.02 n/a F

Transaction Formula
Formula # # Transactions Spread Offset Suspension
V1 <4 n/a -0.01 F
V2 <3 n/a +0.01 F
V3 <5 +0.01 +0.02 F
V4 <10 +0.02 +0.04 F
V5 <15 +0.04 +0.15 F
V6 <20 n/a n/a T

Note that #Transactions would be #Buys or #Sells, as appropriate. Note also
that #Buys and #Sells are not intended to be an absolute count, but rather
are a moving measure of the number of buys or sells which have recently
occured.

In this example, all Constants and Formulae are editable by the user through
the GUI.


Simulation

Obviously, if we want to proceed, we will want to conduct several simulations
to prove concepts and evaluate responsiveness. However, to give some idea of
how the above might work when a market starts to run in a particular
direction, please see the attached:




Additional Features

System Notifications

There should be two kinds of notifications for the Robotrader, which will be
similar to Stack Manager Garbage Checks: Warning and Failure levels for both
Offset and Price. The warning levels will trigger a pager message. The
Failure levels will trigger a pager message and the product will be
automatically suspended. The Price checks will be against prices input by the
trader (not relative price movements, but actual price). There should be both
maximum and minimum price checks (e.g. gas is trading at $5.50. The
notification levels could be $8 at the top end and $2 at the bottom end).
Offset checks will only be against a maximum value.




Dave