Today we had a "pattern" a lot resembling Thursday 4: once again ERY has been loading up ("investment" phase) a lot, touching -9.4K while on the other hand GDXJ has been hedging the move, thus avoiding the PNL curve ending up "underwater" (it actually went negative during the day). Nothing to worry about, anyway: the instrument is probably near local "exhaustion" (just as GDXJ and NUGT were about the period we started this thread, or in the preceding 2 weeks). ERY (top: open players only, bottom: all orders) GDXJ (top: open players only, bottom: all orders) I also added another "protective configuration" to UCO, whose near future "looks" a lot more uncertain; same type of the preceding ones for this instrument (+3put / -1put -100).
Today, finally, the joint action of ERY, still loading up and also UNG, which surged up, loading up a good position, succeeded in pulling the PNL in the "underwater world". GDXJ hedged for a while, but bounced back in the last minutes returning to about 38.5. The "load" on ERY is pretty good, but I am feeling comfortable about it. On ERY, we had a few buy players hedging the move up, thus grabbing some extra profits, and also a few options in place. I have added a couple of instruments to the trading monitor: TLT, SVXY. (Since today TBT has not been shortable all day long, losing some scalping opportunity, I am considering to replace it with TLT.)
Today ERY was quite active. Initially spiking up, and causing more DD and the creation of new protective buy players, and then, reversing, and falling quite sharply. In this case, it seemed to me a bit too much "protection" (buy players sized too large, too much hedging): we will see how it evolves. (The relative player sizing is undoubtedly one of the most important and difficult issues to address, to deal with all possible future trajectories of the price. Currently, I am focusing and doing some refinements in this area.) Added a few more "protective option-share configurations" to various instruments: GDXJ: +3 call / -1 put -100 shares, expiration October 24 (shown in the picture) ERY: +4 call / -2 put -200 shares, expiration October 17 UCO: +6 put / -2 put -200 shares, expiration October 17 (as usual, the bottom picture represents the manual layer holding the shares for the various option configurations). Next Friday we will have a couple of options expiring (for TZA and UCO). We will let them expire without doing anything and, then, we will address what actions are necessary (if any) to re-sync the application with the account.
Today ERY did a bit of move down after an initial spike up, thus allowing the PNL to "emerge" again, towards the end of the day (touched about 13.6K). The G-L also spiked up due to the very large load we have on ERY (then dropped a bit, on close of a sell player). Today UNG made a nice spike down (picture below), which allowed the instrument to turn positive (about 3K). Currently, it is pointing slightly upward, and a new reversing buy player has triggered, locking some of the profit. TBT as a bit "slow" and weak for my personal taste as instrument: I will probably remove it when back in profit: it does not seem to add much to the folio dynamics. UCO is also not performing, but that is due to a "long downward wave" which, so far, did not help at all capturing scalps and fluctuation. We will see how it develops. TNA continues to be, at the moment, the "top performer" (over 12K scalped), with a lot of fluctuations (and reasonable DD) in a relatively small range (about 20%), which allowed to scalp well. Tomorrow some options will expiry, and I have added a few more options to TZA and ERY (usual call/-put). UNG Today, I have been doing some more small changes to the code for player spacing to (optionally) allow players "overlap" on reversing mode: a refinement which seems useful for the "biased" games (where we usually want more systematic "load" on one side).
End of the week. Today ERY has moved up again, pulling our PNL curve "underwater" (picture below). [I opted in the PNL representation to not show the "unrealized" curve by default, because I think that information is anyway contained in the G-L (gain - loss) curve and it has the undesirable effect to "squeeze" too much the chart.] The G-L curve spiked up again due to the fact that some of the previous protective buy players have been closed and, currently, there is only one open. Today, in addition to options expiring OTM, we have a few options expiring "in the money" (ITM), so, after the broker settles them (they have not yet been processed), we will see how to re-sync the application with the account. The ERY evolution, also shows that we also need to refine further our "rule of thumb" we mentioned earlier ("10% rule") for placing options, because I feel that the sizes we have been placing so far are largely insufficient. Let's use this version from now on (which we can refine later): - Spacing: Looking at the manual share layer, use a distance equal 10% of Volatility (shown on screen) - Sizing: On the "defense" side use a number of options equal to 10% of Packetsize (shown on screen) This does not aim to be "perfect" (also because the exposure will depend on the game rules which control the position), but for now will provide a rough guideline which will help not be completely out of track (we can also later refine a bit the game rules, so that the 10% works fine). Today GDXJ (10.4K) has "surpassed" TNA (9.6K), even though TNA is still the instrument which reached the highest PNL so far (12.5K). In this case GDXJ scalped "well", intuitively speaking, because when we started it was near to a local "exhaustion" situation (just like NUGT), so the scalping engine could work against a price curve somehow behaving like "a boxer on the ropes".
At this time the broker has processed the expired options. Let's look a bit into the details of the process to understand what we need to do to "re-sync" the app with the account. The options which have expired are clearly shown by the application, which also shows now the shares which are not in sync due to assignment. Code: ===================================================== FOLIO UPDATES SENT BY IB ===================================================== Symb Pos/AbsPos AvgCost Real Unr Real + Unr Curr ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ TZA [TZA] -7570 14.43 -107.48 -1928.64 -2036.12 USD ···································································································································· UCO [UCO] 2584 30.49 0 -347.81 -347.81 USD ···································································································································· [...] ============================================== NOT MATCHING PRESENT IN THIS INSTANCE =============================================== Symb This G-BOT IB Exp Avg sync order UCO [UCO] 2084 2584 - BUY 500 @ 30.49 TZA [TZA] -7670 -7570 - BUY 100 @ 14.43 ------------------------------------------------------------------------------------------------------------------------------------ Symb This G-BOT IB Exp TZA [TZA 140912C00022000] 4 0 Expired (OTM) TZA [TZA 140912C00024000] 4 0 Expired (OTM) TZA [TZA 140912P00014500] -1 0 Expired (OTM) UCO [UCO 140912P00028500] 10 0 Expired (OTM) TZA [TZA 140912P00015500] -1 0 Expired (ITM) UCO [UCO 140912P00031500] -1 0 Expired (ITM) UCO [UCO 140912P00031000] -4 0 Expired (ITM) ------------------------------------------------------------------------------------------------------------------------------------ (I will explain later the meaning of the values under the label "Avg sync") This situation is perfectly reflected in the IB report which has (I have extracted the relevant rows from the report, for more clarity): shares assigned: Options expired OTM: Options expired ITM: Now, from the previous posts, we have already know that about the options expired OTM we need to do nothing (apart obviously removing the expired layers). In fact the application is perfectly able to compute the PNL accurate to the last penny. We can verify this again, in this case. Everything is matching perfectly: So this is fine, and we need not to worry about anything. In the next post, we will see what we can do about the options expired ITM and the assigned shares.
In the case of ITM options we also have a perfect match with the broker computations. For instance: Now, if the options were "cash settled" we would need to do nothing, just as for the OTM options, because the PNL would already be accurate. However, being a "physical delivery" we have that the broker has assigned +100 shares at a price equal to the strike (15.5) of the option: So we need to "re sync" the application. This is actually simple to do. "Virtual fill" feature First of all let's introduce the "virtual fill" feature. This dialog, as the name suggests, allows us to "add" a position in the application, without actually executing the order. It obviously has the purpose to re-sync the application position with the account position, whenever necessary, without actually executing anything (in our case the shares were added by IB due to assignment.) Re-syncing the shares: We just open the virtual fill dialog on the TZA shares' layer and specify fill size and price. Fill size: assigned shares, for instance BUY 100 in this case. Price: strike of the option, in this case 15.5 So, before re-sync, we have: We open the "virtual fill" dialog and add the 100 shares assigned: And we get: So, what have we done so far ? We have simply moved part of the PNL which was on the option layer to the shares which have been assigned. Therefore, now it just remains to adjust the PNL of the option layer, because the loss has actually been "moved" to the shares' layer. This is also simple to do. We just compute the PNL of the option "as if" the close price were 0 (that is, just like it had expired OTM). [This is just an option (a checkbox) of the PNL computations dialog.] So we get: The PNL of the options, which we want to maintain, just moving the loss, from the option layer to shares' layer, is composed by: PNL (put option) = [OpenPrice * quantity * multiplier] - [(strike - Underlying) * quantity * multiplier] - OpenComms = [0.67 * 1 * 100] - [(15.5 - 14.65) * 1 * 100] - 1.54 = 67 - 85 - 1.54 = -19.54 When we assume a closing price of 0, it becomes: PNL (option adjusted) = [OpenPrice* quantity * multiplier] - 0 - OpenComms = [0.67 * 1 * 100] - 1.54 = 67 - 1.54 = 65.46 The "removed" piece simply goes on the shares' layer. In fact, the strike is the price we use for filling the assigned shares, so we have: PNL (long shares assigned) = - [(strike - Underlying) * quantity * multiplier] = - (15.5 - 14.65) * 100 = -85 (in the case of shares, quantity= 100 and multiplier=1, so the product is the same as above) Clearly, we have simply "split" the original option PNL into two meaningful components: -19.54 = 65.46 - 85. That's all. In brief, dealing with expiration of ITM options (without closing them before expiration) is also simple and we still remain accurate to the penny. We can do it in a couple minutes during the weekend: Code: ** SUMMARY ** - OTM options: do nothing - ITM options (cash settled): do nothing - ITM options with out of sync shares: Re-sync the shares (virtual fill at strike), force the option PNL to be computed with null closing price - remove the expired layers. ------------------------------ (As to the re-sync, there is also another way, even quicker, which in case we will see later, that leaves completely unchanged the option layer, and merely re-syncs the position on the shares layer, clearly using a different fill price.)
(I forgot to add that, as said previously, of course if the options were short, we need to close the "cover" shares, in case there was no assignment. I will make a nice summary scheme later, so it will easy to make the weekend "expiration maintenance", for any possible case.) Today ERY is heading down, thus reabsorbing some of the drawdown. Yesterday, I added the following options share configurations, to "align" our situation with the "10% thumb rule": ERY +20 CALL 21 expiry January 16, -10 PUT 15, -1000 shares (the application indicated actually to use the call 21, which did not execute, so I loaded the call 20, which executed immediately) TNA +6 PUT 62 expiry October 24, -3 PUT 71, -300 shares It's very uncomfortable that IB does not allow to independently switch to portfolio margin on test accounts. Working with the RegT margin is not really viable in this case (excessive margins are taken). Another huge pitfall is the fact that the account cannot be "reset" to any desired amount, which imho and experience is a serious hindrance for "preliminary" testing to serious investors (an easy way to lose good "prospects" on immaterial issues).
Another problem I spotted is that some ERY options are not receiving BID quotes: This TWS screenshot is from a real account (so these are supposed to be live quotes). Bids are not coming in (for the first 3 options) and these options are expiring this Friday. (Same thing happens on test account). Same problem with: UCO OPT 20141017 25 P SMART 100 [ UCO 141018P00025000 ] As said previously, a current "trading issue" is that TBT is not shortable (it has been so for a few days now), so it could not scalp (well, just after editing this, it returned shortable).
Here is a PNL update. While ERY is coming back, reducing the drawdown, we have been making new "investments" on TBT and TZA. GDXJ also has a pretty large unrealized. The G-L (gain - loss component of the PNL) is pretty high, which denotes we have been scalping a lot and have a lot of "potential". So we need to wait that all this unrealized will come out. The "net liquidation" indicated by IB, as we also noted previously seems completely off. They give now +34K from the start of this session (739,584.78), which I am not clear how they can get (or what it means). (As noted previously, this happens only when using options.) In this case it's very useful to have an application which is able to be accurate to the penny and show the "real" situation of the folio, real time, to the penny.