[kepler-dev] Threaded actors in the DE Domain

ian.brown@hsbcib.com ian.brown at hsbcib.com
Tue Sep 11 05:43:18 PDT 2007


Hi, I have an source actor which uses a thread to read from a TCP/IP
socket. When data is received, it fires an event. The overall model
consists of two of these sources which are connected to a finite state
machine. This FSM is a modal model although none of the states actually
have any refinements.

The problem we are having is that occasionally we will get a graph
construction exception. I think the problem is that when a state transition
occurs the DAG is rebuilt. During this process a fire event can happen and
you end up with 2 threads both trying to rebuild the DAG at the same time.
This is a bit of a guess - but it certainly appears to be what is
happening.
How do I synchronise the fireAt() call so that this does not happen? I seem
to remember reading something somewhere about thread restrictions in
fireAt() but cannot find the reference any more. Can anyone help?

The exception I am getting is as follows:

ptolemy.graph.GraphConstructionException: Attempt to add a node that is
already contained in the graph.
Dumps of the offending node and graph follow.
The offending node:
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in}
The offending graph:
{ptolemy.graph.DirectedGraph
Node Set:
0: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.trigger}
1: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.output}
2: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.trigger}
3: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.output}
4: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.trigger}
5: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.output}
6: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.trigger}
7: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.output}
8: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.trigger}
9: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.output}
10: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.trigger}
11: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.output}
12: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.trigger}
13: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.output}
14: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.trigger}
15: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.output}
16: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.trigger}
17: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.output}
18: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.trigger}
19: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.output}
20: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger.trigger}
21: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger.output}
22: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger2.trigger}
23: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger2.output}
24: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.bid}
25: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask}
26: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.A}
27: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.B}
28: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Expression.output}
29: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.bid}
30: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.mid}
31: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.offer}
32: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.output}
33: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid}
34: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.ask}
35: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.A}
36: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.B}
37: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Expression2.output}
38: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.bid}
39: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.mid}
40: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.offer}
41: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.output}
42: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher.input}
43: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher.output}
44: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher2.input}
45: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher2.output}
46: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber.input}
47: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber.output}
48: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.input}
49: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid}
50: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber2.input}
51: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber2.output}
52: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.in}
53: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average}
54: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.in}
55: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.output}
56: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in}
57: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.variance}
58: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.mean}
59: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range}
60: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.volatility}
61: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy}
62: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell}
63: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.position}
64: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.mave}
65: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.midPrice}
66: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.range}
67: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy}
68: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell}
69: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input}
70: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.output}
71: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input}
72: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.output}
73: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input}
74: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.reset}
75: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output}
76: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.input}
77: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.reset}
78: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output}
79: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.input}
80: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output}
81: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.model}
82: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.buySell}
83: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.instrument}
84: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.amount}
85: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.level}
86: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.type}
87: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.timeout}
88: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output}
89: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.desiredPosition}
90: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output}
91: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.input}
92: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.output}
93: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.input}
94: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.output}
95: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.input}
96: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid}
97: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.in}
98: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average}
99: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.in}
100: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.output}
101: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in}
102: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.variance}
103: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.mean}
104: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range}
105: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.volatility}
106: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy}
107: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell}
108: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.position}
109: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.mave}
110: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.midPrice}
111: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.range}
112: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy}
113: ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell}
114: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input}
115: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.output}
116: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input}
117: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.output}
118: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input}
119: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.reset}
120: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output}
121: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.input}
122: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.reset}
123: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output}
124: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.input}
125: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output}
126: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.model}
127: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.buySell}
128: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.instrument}
129: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.amount}
130: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.level}
131: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.type}
132: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.timeout}
133: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output}
134: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.desiredPosition}
135: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output}
136: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.input}
137: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.output}
138: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.input}
139: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.output}
140: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.input}
141: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.reset}
142: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.output}
143: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.input}
144: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.reset}
145: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.output}
146: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input}
147: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model}
148: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell}
149: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument}
150: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount}
151: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level}
152: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type}
153: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout}
154: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus}
155: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.minus}
156: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.output}
157: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size}
158: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price}
159: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument}
160: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell}
161: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source}
162: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result}
163: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid}
164: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid}
165: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.result}
166: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status}
167: ptolemy.actor.TypedIOPort {.masterModel6ib.orderManager.Display.input}
168: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.MonitorValue.input}
169: ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.MonitorValue2.input}
170: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.StDev.input}
171: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Range.input}
172: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.TicCount.input}
173: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Mave.input}
174: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.mid.input}
175: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount.input}
176: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount2.input}
177: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.TicCount2.input}
178: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.StDev.input}
179: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Range.input}
180: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.TicCount.input}
181: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Mave.input}
182: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.mid.input}
183: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount.input}
184: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount2.input}
185: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.TicCount2.input}
186: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.TicCount.input}
187: ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.TicCount2.input}
188: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount.input}
189: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount2.input}
190: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount3.input}
191: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount4.input}
192: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount5.input}
193: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount6.input}
194: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount7.input}
195: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.LineWriter.input}
196: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount8.input}
197: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount9.input}
198: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount10.input}
199: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.TicCount.input}
200: ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.TicCount2.input}
Edge Set:
0: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.output})
1: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.output})
2: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.output})
3: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.output})
4: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.output})
5: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.output})
6: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.output})
7: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.output})
8: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.output})
9: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.trigger},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.output})
10: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger.trigger},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger.output})
11: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger2.trigger},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger2.output})
12: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.A},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.output})
13: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.B},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.output})
14: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.bid}, ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.output})
15: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.mid}, ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.output})
16: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.offer},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.output})
17: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.A},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.output})
18: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.B},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.output})
19: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.bid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.output})
20: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.output})
21: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.offer},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.output})
22: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher.input}, ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher.output})
23: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher2.input}, ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher2.output})
24: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber.output})
25: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid})
26: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber2.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber2.output})
27: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average})
28: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.output})
29: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.variance})
30: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.mean})
31: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range})
32: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.output})
33: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.output})
34: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output})
35: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.reset},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output})
36: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output})
37: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.reset},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output})
38: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output})
39: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.model},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
40: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.buySell},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
41: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.instrument},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
42: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.amount},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
43: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.level},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
44: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.type},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
45: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.timeout},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
46: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.desiredPosition},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output})
47: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.output})
48: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.output})
49: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid})
50: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average})
51: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.output})
52: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.variance})
53: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.mean})
54: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range})
55: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.output})
56: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.output})
57: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output})
58: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.reset},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output})
59: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output})
60: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.reset},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output})
61: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output})
62: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.model},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
63: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.buySell},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
64: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.instrument},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
65: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.amount},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
66: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.level},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
67: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.type},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
68: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.timeout},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
69: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.desiredPosition},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output})
70: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.input},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.output})
71: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.output})
72: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.output})
73: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.reset},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.output})
74: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.output})
75: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.reset},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.output})
76: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model})
77: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell})
78: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument})
79: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount})
80: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level})
81: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type})
82: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout})
83: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.output})
84: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.minus},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.output})
85: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
86: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
87: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
88: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
89: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
90: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
91: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
92: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
93: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
94: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
95: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.result})
96: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status})
97: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.bid},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.A})
98: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.bid},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.RecordAssembler.bid})
99: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.B})
100: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.offer})
101: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.MonitorValue2.input})
102: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Expression.output}, ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.mid})
103: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler.output},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher2.input})
104: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.A})
105: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.bid})
106: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.MonitorValue.input})
107: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.ask},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.B})
108: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.ask},
ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.offer})
109: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Expression2.output}, ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.mid})
110: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.RecordAssembler2.output},
ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher.input})
111: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher.output}, ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber2.input})
112: (ptolemy.actor.TypedIOPort
{.masterModel6ib.marketData.Publisher2.output}, ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber.input})
113: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.input})
114: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.in})
115: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.in})
116: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.midPrice})
117: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.trigger})
118: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.mid.input})
119: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.level})
120: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger2.trigger})
121: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Subscriber2.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.input})
122: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.mave})
123: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Mave.input})
124: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in})
125: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.variance},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.input})
126: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.range})
127: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Range.input})
128: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input})
129: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input})
130: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input})
131: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input})
132: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input})
133: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input})
134: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.position})
135: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.desiredPosition})
136: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount.input})
137: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.trigger})
138: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.trigger})
139: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.trigger})
140: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.trigger})
141: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.input})
142: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.TicCount2.input})
143: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.input})
144: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.TicCount.input})
145: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output},
 ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.volatility})
146: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.StDev.input})
147: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.input})
148: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.buySell})
149: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount2.input})
150: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.model})
151: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.instrument})
152: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.type})
153: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.timeout})
154: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.input})
155: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.amount})
156: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.in})
157: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.in})
158: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.midPrice})
159: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.trigger})
160: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.mid.input})
161: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.level})
162: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger.trigger})
163: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.mave})
164: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Mave.input})
165: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in})
166: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.variance},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.input})
167: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.range})
168: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Range.input})
169: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input})
170: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input})
171: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input})
172: (ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input})
173: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input})
174: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input})
175: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.position})
176: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.desiredPosition})
177: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount.input})
178: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.trigger})
179: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.trigger})
180: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.trigger})
181: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.trigger})
182: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.input})
183: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.TicCount2.input})
184: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.input})
185: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.TicCount.input})
186: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output},
 ptolemy.domains.fsm.modal.ModalPort
{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.volatility})
187: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.StDev.input})
188: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.input})
189: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.buySell})
190: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount2.input})
191: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.model})
192: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.instrument})
193: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.type})
194: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.timeout})
195: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.output},
 ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.amount})
196: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Merge.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input})
197: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.input})
198: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.TicCount.input})
199: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.positionTrigger2.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.input})
200: (ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.Accumulator2.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.meanReversionParent.TicCount2.input})
201: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount.input})
202: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
203: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source})
204: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount2.input})
205: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
206: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell})
207: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount3.input})
208: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
209: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument})
210: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount4.input})
211: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
212: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size})
213: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount5.input})
214: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
215: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price})
216: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount6.input})
217: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
218: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount7.input})
219: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
220: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.LineWriter.input})
221: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.AddSubtract.output},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount8.input})
222: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount9.input})
223: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid})
224: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid},
ptolemy.actor.TypedIOPort {.masterModel6ib.orderManager.Display.input})
225: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.orderManager.TicCount10.input})
226: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.result},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.TicCount.input})
227: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status},
ptolemy.actor.TypedIOPort {.masterModel6ib.orderManager.Display.input})
228: (ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status},
ptolemy.actor.TypedIOPort
{.masterModel6ib.orderManager.CompositeActor.TicCount2.input})
}


      at ptolemy.graph.Graph.addNode(Graph.java:308)
      at ptolemy.graph.Graph.addNodes(Graph.java:356)
      at ptolemy.graph.Graph.addGraph(Graph.java:284)
      at
ptolemy.actor.util.FunctionDependencyOfCompositeActor._mergeActorsGraph(FunctionDependencyOfCompositeActor.java:377)
      at
ptolemy.actor.util.FunctionDependencyOfCompositeActor._constructDetailedDependencyGraph(FunctionDependencyOfCompositeActor.java:225)
      at
ptolemy.actor.util.FunctionDependencyOfCompositeActor._constructDependencyGraph(FunctionDependencyOfCompositeActor.java:146)
      at
ptolemy.actor.util.FunctionDependency._validate(FunctionDependency.java:273)
      at
ptolemy.actor.util.FunctionDependencyOfCompositeActor.getCycleNodes(FunctionDependencyOfCompositeActor.java:116)
      at
ptolemy.domains.de.kernel.DEDirector._constructDirectedGraph(DEDirector.java:1617)
      at
ptolemy.domains.de.kernel.DEDirector._computePortDepth(DEDirector.java:1386)
      at
ptolemy.domains.de.kernel.DEDirector._getDepthOfIOPort(DEDirector.java:1691)
      at
ptolemy.domains.de.kernel.DEDirector._enqueueTriggerEvent(DEDirector.java:1260)
      at ptolemy.domains.de.kernel.DEReceiver.put(DEReceiver.java:150)
      at ptolemy.actor.AbstractReceiver.putToAll(AbstractReceiver.java:315)
      at ptolemy.actor.IOPort.broadcast(IOPort.java:279)
      at ptolemy.actor.TypedIOPort.broadcast(TypedIOPort.java:236)
      at
com.hsbc.IMTActors.CurrencyPairListener.fire(CurrencyPairListener.java:122)
      at ptolemy.domains.de.kernel.DEDirector.fire(DEDirector.java:505)
      at ptolemy.actor.CompositeActor.fire(CompositeActor.java:370)
      at ptolemy.actor.Manager.iterate(Manager.java:681)
      at ptolemy.actor.Manager.execute(Manager.java:331)
      at ptolemy.actor.Manager.run(Manager.java:1064)
      at ptolemy.actor.Manager$3.run(Manager.java:1105)



My actor source class is implemented as follows:


/* An actor that asynchronously reads currency pair updates.
 */

package com.hsbc.IMTActors;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

import ptolemy.actor.TypedAtomicActor;
import ptolemy.actor.TypedIOPort;
import ptolemy.data.ArrayToken;
import ptolemy.data.BooleanToken;
import ptolemy.data.DoubleToken;
import ptolemy.data.IntToken;
import ptolemy.data.StringToken;
import ptolemy.data.Token;
import ptolemy.data.UnsignedByteToken;
import ptolemy.data.expr.Parameter;
import ptolemy.data.type.ArrayType;
import ptolemy.data.type.BaseType;
import ptolemy.kernel.CompositeEntity;
import ptolemy.kernel.util.Attribute;
import ptolemy.kernel.util.IllegalActionException;
import ptolemy.kernel.util.InternalErrorException;
import ptolemy.kernel.util.NameDuplicationException;
import ptolemy.domains.de.kernel.DEDirector;

//////////////////////////////////////////////////////////////////////////

/**
    an actor to subscribe to the IMT data feed and provide top-of-book
    price data for a single currency-pair instrument.
      @author Ian Brown
 */
public class CurrencyPairListener extends TypedAtomicActor {
    /** Construct an actor with the given container and name.
     *  @param container The container.
     *  @param name The name of this actor.
     *  @exception IllegalActionException If the actor cannot be contained
     *   by the proposed container.
     *  @exception NameDuplicationException If the container already has an
     *   actor with this name.
     */
    public CurrencyPairListener(CompositeEntity container, String name)
            throws NameDuplicationException, IllegalActionException {
        super(container, name);

        // ports - Ordering here sets the order they show up in Vergil

        bid = new TypedIOPort(this, "bid");
        bid.setTypeEquals(BaseType.DOUBLE);
        bid.setOutput(true);

        ask = new TypedIOPort(this, "ask");
        ask.setTypeEquals(BaseType.DOUBLE);
        ask.setOutput(true);

        // parameters - Ordering here sets the order they show up in Vergil
        portNumberParam = new Parameter(this, "portNumber");
        portNumberParam.setTypeEquals(BaseType.INT);
        portNumberParam.setToken(new IntToken(12345));

        serverAddressParam = new Parameter(this, "serverAddress");
        serverAddressParam.setTypeEquals(BaseType.STRING);
        serverAddressParam.setToken(new StringToken("128.8.120.18"));

        instrumentParam = new Parameter(this, "Instrument");
        instrumentParam.setTypeEquals(BaseType.STRING);
        instrumentParam.setToken(new StringToken("EURGBP"));

    }

    ///////////////////////////////////////////////////////////////////
    ////                     ports and parameters                  ////
    // Ports and parameters are in the same order hare as in the
constructor.

    /** This port outputs the latest bid price. */
    public TypedIOPort bid;

    /** This port outputs the latest ask price. */
    public TypedIOPort ask;

    /** The port number to connect to. */
    public Parameter portNumberParam;

    /** The IP address to connect to. */
    public Parameter serverAddressParam;

      /** The instrument we're watching. */
      public Parameter instrumentParam;

    ///////////////////////////////////////////////////////////////////
    ////                         public methods                    ////

      /**
     *  @exception IllegalActionException If the data cannot be
     *  converted into a token of the same type as the configured type
     *  of the output port.
     */
    public void fire() throws IllegalActionException {
        super.fire();

        // The part dependent on the packet's contents must be synchronized
        // to ensure that the thread does not mess with it while it is in
use
        // here.
        synchronized (_syncFireAndThread) {
                  if (_cur_bid > 0.){
                        _bidToken = new DoubleToken(_cur_bid);
                  } else {
                        _bidToken = null;
                  }
                  if (_cur_ask > 0.){
                        _askToken = new DoubleToken(_cur_ask);
                  } else {
                        _askToken = null;
                  }
            _syncFireAndThread.notifyAll();


                  if (_bidToken != null) bid.broadcast(_bidToken);
                  if (_askToken != null) ask.broadcast(_askToken);
            } // sync
    }

    /** Initialize this actor, including the creation of an evaluation
     *  variable for the Ptolemy parser, a DatagramSocket for
     *  receiving datagrams, and a SocketReadingThread for blocking in
     *  the DatagramSocket.receive() method call.  This method is used
     *  as a bookend with wrapup() being the other end.  Resources
     *  created/allocated here are released in wrapup().
     *  @exception IllegalActionException If the
     *  <i>localSocketNumber</i> parameter has a value outside 0..65535
     * or a socket could not be created.  */
    public void initialize() throws IllegalActionException {
        super.initialize();

        _cur_bid = -1.0; _cur_ask = -1.0;

        int portNumber = ((IntToken)
(portNumberParam.getToken())).intValue();

        if ((portNumber < 0) || (portNumber > 65535)) {
            throw new IllegalActionException(this, portNumberParam
                    + " is outside the required 0..65535 range");
        }

        String addr =
((StringToken)(serverAddressParam.getToken())).stringValue();

        if (_debugging) {
            _debug(this + "portNumber = " + portNumber + ", Address = " +
addr);
        }


        // Allocate a new socket.
        try {
            if (_debugging) {
                _debug("Trying to create a new socket on port "
                        + portNumber);
            }

            _socket = new Socket(addr, portNumber);
            if (_debugging) {
                _debug("Socket created successfully!");
            }
        } catch (Exception ex) {
            throw new IllegalActionException(this, ex,
                    "Failed to create a new socket on port " + portNumber);
        }

        // Allocate & start a thread to read from the socket.
        _socketReadingThread = new SocketReadingThread();
        _socketReadingThread.start();
    }

    /** Override the setContainer() method to call wrapup() if the
     *  actor is deleted while the model is running.  Wrapup() then
     *  releases resources acquired by initialize().
     */
    public void setContainer(CompositeEntity container)
            throws IllegalActionException, NameDuplicationException {
        // FIXME: Is this necessary?
        if (container != getContainer()) {
            wrapup();
        }
        super.setContainer(container);
    }

    /** Release resources acquired in the initialize() method.
     */
    public void wrapup() throws IllegalActionException {
        if (_socketReadingThread != null) {
            _socketReadingThread.interrupt();
            _socketReadingThread = null;
        } else {
            if (_debugging) {
                _debug("socketReadingThread null at wrapup!?");
            }
        }

        if (_socket != null) {
            try {
                _socket.close();
                _socket = null;
            } catch (IOException ex) {
                throw new IllegalActionException(this, ex, "Failed to close
socket");
            }
        } else {
            if (_debugging) {
                _debug("Socket null at wrapup!?");
            }
        }
    }

    ///////////////////////////////////////////////////////////////////
    ////                         private variables                 ////
    // Synchronization objects.  Used for synchronization between the
fire() call and the reading thread.
    private Object _syncFireAndThread = new Object();

      // The socket we are reading from
    private Socket _socket;

    private SocketReadingThread _socketReadingThread;

    private DoubleToken _bidToken;
    private DoubleToken _askToken;

    private double _cur_bid = -1;
    private double _cur_ask = -1;

    ///////////////////////////////////////////////////////////////////
    ////                        private inner class                ////
    private class SocketReadingThread extends Thread {
        /** Constructor.  Create a new thread to listen for packets
         *  at the socket opened by the actor's [pre]initialize method.
         */
        public SocketReadingThread() {
        }

        /** Run.  Run the thread.  This begins running when .start()
         *  is called on the thread.
         */
        public void run() {
                  String instrument;
                  try {
                        instrument =
((StringToken)(instrumentParam.getToken())).stringValue();
              } catch (Exception ex) {
                  throw new RuntimeException("failed to get the currency
instrument", ex);
              }
                  InputStream _socketStream;
                  try {
                        _socketStream = _socket.getInputStream();
            } catch (IOException ex) {
                        if (_debugging){
                              _debug("IOException: " + ex);
                        }
                        return;
                  }

                  // Attempt to receive something from the socket!
                  boolean receiving = true;

                  StringBuffer sb = new StringBuffer(64);
                  try {
                        while (true) {
                              // NOTE: The following call may block.
                              int c = _socketStream.read();
//                                  if (_debugging){
//                                        _debug(Integer.toString(c));
//                                  }
                              if (c > 0x0A){
                                    sb.append((char)c);
                              } else if (0 == c){
                                    // A packet was successfully received!
                                    if (_debugging){
                                          _debug(sb.toString());
                                    }
                                    if (processInput(sb.toString(),
instrument)){
                                          try {
                                                // fireAtCurrentTime has
the result that all events are called at model
                                                // time zero with an
incrementing microstep. Whilst this will work for most
                                                // scenarios, it has the
effect that the timed plotter just displays a vertical
                                                // line. For that reason,
we need to figure out the correct time to fire the event at.

//getDirector().fireAtCurrentTime(CurrencyPairListener.this);
                                                //
                                                DEDirector director =
(DEDirector)(getDirector());
                                                long start_time =
director.getRealStartTimeMillis();
                                                long time_now =
java.lang.System.currentTimeMillis();
                                                double model_time =
(time_now - start_time) / 1000.0;

director.fireAt(CurrencyPairListener.this, new
ptolemy.actor.util.Time(director, model_time));
                                          } catch (IllegalActionException
ex) {
                                                throw new
RuntimeException("fireAtCurrentTime() "
                                                            + "threw an
exception", ex);
                                          }
                                    }
                                    sb.setLength(0);
                              }
                        }
                  } catch (IOException ex) {
                        if (_debugging){
                              _debug("IOException: " + ex);
                        }
                  } catch (NullPointerException ex) {
                        if (_debugging) {
                              _debug("--!!--" + (_socket == null));
                        }
                  }
        }

            // process the raw input from the TCP/IP stream
            // @return true if the price has changed
            //
            private boolean processInput(String in_string, String
instrument){
                  boolean retval = false;
                  String[] s = in_string.split(":");
                  if (s.length == 5 && s[0].equals("CY")){
                        if (s[1].equals(instrument)){
                              try {
                                    Double new_val = new Double(s[3]);

                                  synchronized (_syncFireAndThread) {
                                          // set the output value
                                          if(s[2].equals("S")){
                                                _cur_ask =
new_val.doubleValue();
                                          } else {
                                                _cur_bid =
new_val.doubleValue();
                                          }
                                          retval = true;
                                    }
                              } catch (NumberFormatException nfe){
                                  if (_debugging) {
                              _debug(s[3] + " is not a valid price");
                          }
                              }
                        }
                  } else {
                        if (_debugging){
                              _debug("length = " + s.length + " s[0] = " +
s[0]);
                        }
                  }
                  return retval;
            }
    }
}



Thanks,

Ian


************************************************************
HSBC Bank plc may be solicited in the course of its placement efforts for a
new issue, by investment clients of the firm for whom the Bank as a firm
already provides other services. It may equally decide to allocate to its
own proprietary book or with an associate of HSBC Group. This represents a
potential conflict of interest. HSBC Bank plc has internal arrangements
designed to ensure that the firm would give unbiased and full advice to the
corporate finance client about the valuation and pricing of the offering as
well as internal systems, controls and procedures to identify and manage
conflicts of interest.

HSBC Bank plc
Registered Office: 8 Canada Square, London E14 5HQ, United Kingdom
Registered in England - Number 14259
Authorised and regulated by the Financial Services Authority.
************************************************************

-----------------------------------------
SAVE PAPER - THINK BEFORE YOU PRINT!

This transmission has been issued by a member of the HSBC Group
"HSBC" for the information of the addressee only and should not be
reproduced and/or distributed to any other person. Each page
attached hereto must be read in conjunction with any disclaimer
which forms part of it. Unless otherwise stated, this transmission
is neither an offer nor the solicitation of an offer to sell or
purchase any investment. Its contents are based on information
obtained from sources believed to be reliable but HSBC makes no
representation and accepts no responsibility or liability as to its
completeness or accuracy.


More information about the Kepler-dev mailing list