Thursday, 28 December 2017

New position: ODAX February 2018 Iron Condor


After closing the January position, I opened a new one for the February expiration cycle. It is a regular Iron Condor placed at 12300-11900 on the put side and 13600-14000 on the call side.

DAX 30 on December 28th 2017. Source Investing
I am also reusing the remaining debit call spread placed on 13400-13450 which is a remnant of last month´s position.

Closed: ODAX January 2018 Iron Condor


After closing the put leg some days ago, today I was able to close the remaining call spread locking around 73% of the premium received.

DAX 30 on Dec 28th 2017. Source
I decided not to wait until expiration in order to open a new Iron Condor in February, while reusing the February 13400/13450 debit spread as hedge. Having the two call spreads open at the same time seemed too much risk for me.

Thursday, 14 December 2017

ODAX January 2018 Iron Condor Update: Closed Put Spread


After 15 days out of 52, without any movement in the DAX index and today´s significant drop in IV, I managed to close the Put leg of the Iron Condor for about 60% of the maximum profit.

DAX 30 on December 14th 2017. Source Investing

I am being quite conservative here, as the put leg was the more vulnerable in this trade, as in case of a drop I would not have any hedge to finance a possible adjustment (unlike the call leg with the February Bull Call Spread) while I still would incur in the loss of the hedging trade.

Tuesday, 28 November 2017

New Position: ODAX January 2018 Iron Condor


For the first 2018 position and I have decided to go for a January 13600/1400 - 12300/11900 Iron Condor plus a February 13400/13450 Debit Call Spread.

DAX 30 on November 28th 2017. Source Investing
52 days to go and an Implicit Volatility of around 14%. Given the relatively low IV and the underlying bullish trend, which has given me so much pain before, I also opened a Debit Call Spread for the February expiration cycle. This second spread should help me resisting another increase in the underlying and will allow me to postpone any necessary adjustment.

Tuesday, 21 November 2017

Closed: ODAX December 2017 Put Spread


Today, after less than one week and a 300 points bounce up by the DAX, I was able to close the position locking around 70% of the profit.

DAX 30 on November 21st 2017. Source Investing
I could have waited three more weeks to get those final 32€, but I decided to close the trade and move on in order to reduce risk. Perhaps, in the coming weeks we reach another good condition for another put spread in January, or even an Iron Condor.

Wednesday, 15 November 2017

New position: ODAX Dec 2017 Credit Put Spread


This morning, after about 5% decline in ten days or so and the IV (Implicit volatility) at 16, I opened a 12200 - 11800 Credit Put Spread aiming for the December expiration cycle.

DAX on November 15th 2017. Source Investing
Only 30 days until expiration and not too much delta, so the credit received is rather small. I´m betting on some sideways action on the former 12800-12900 resistance level.

Wednesday, 1 November 2017

Closed: Nov 2017 Iron Condor + Dec Debit Spreads


Finally, after yet another break upwards, I closed the November 2017 Iron Condor to a full loss. Additionally, I closed the November "auxiliary" debit spreads for a tiny win.

DAX on November 1st 2017. Source Investing
All in all, all 2017 gains in my account were wiped out, while the index in gaining more than 16%. Some thoughts on this below.

Friday, 27 October 2017

ODAX November 2017 Iron Condor adjustment (VI)


Today, I moved the put leg further up, trying to reduce the damage as much as possible. Now, the trade is mathematically a loser and the minimum loss matches the loss I should have taken when the call leg reached 30 delta. Something to learn for future trades.

DAX on October 27th. Source Investing
I will try to reduce the loss as much as possible, possibly rolling the put leg again if the climb continues. The loss in account terms ranges from 1,5% to 7,6%.

Thursday, 19 October 2017

ODAX Dec 2017 Bear Put Spread


Today, early in the morning, I bought a ODAX Dec 2017 12650-12600 Bear Put Spread. By definition, this trade is a debit spread, which means that I had to pay 51,5€ to open it while it has a limited maximum profit of 199,5. Those 51,5€ also represent the maximum loss and there is also a low probability of success (the market actually needs to go in my favor before December 17 to make a profit).

DAX on Oct 19 2017 Source Investing
The idea here is betting on a pullback risking little capital. Volatility is too low to open a Credit Put Spread while I already have too much upside expose with the infamous November Iron Condor.

Wednesday, 18 October 2017

ODAX November 2017 Iron Condor adjustment (V)


30 days remain until November option expiration day and I keep struggling with the Iron Condor deployed at 12800-13200 (about 250 point ITM - In the money). As I collected half of the credit deployed for the 12450-12000 Put Spread, I deployed a new one at 12800-12400.

DAX on October 18th 2017. Source investig
Break-even points are 12932 on the upside and 12668 on the downside. I will happily close the whole thing if we approach to the mid 12900s as time value is getting smaller and smaller. If not, I will try to reduce the max loss figure, which is a scenario more likely to happen day after day.

Tuesday, 10 October 2017

ODAX November 2017 Iron Condor adjustment (IV)


Disaster mode, with the Call leg almost halfway to the point of reaching max losses. Unlike I said on the last adjustment, I could not pay attention to the markets last Monday, so I did not close the position when it reached the "in the money" level, and now it sits 150 points in the money.

As there is still time-value in the options, I am going to bet a pullback to the 12800 level (the previous resistance) while I rolled the Put leg further up (from 12000-11600 to 12450-12000). If I am wrong, the price to pay will be jeopardizing all the profits made this year and a couple of hundred of Euros more.
DAX on October 10th. Source Investing
The November 2017 12800 Call sits at 63 delta and the 13200 Call sits at 25 delta. Accounting the credit collected, break-even point is at 12910.

Thursday, 28 September 2017

ODAX November 2017 Iron Condor adjustment (III)


DAX keeps climbing and the Call leg of the trade is getting really close to the money, so I made the last adjustment before closing it. I rolled the put leg from 11500 to 12000.

There are still 50 days to go, so we are three weeks away from the usual 30 days mark when I like to close the trades. Let´s see if I can hold until then and I might break even for this month.

DAX on September 29th. Source Investing
Pretty nice climb during this month, all the way from 11950. Let´s see if the previous 12800 maximum value holds and we have a pullback that allows to close the position in a better condition. If not, I will close it for the bigger loss of 2017 (so far).

Monday, 25 September 2017

ODAX December 2017 Bull Call Spread


Last week, I bought a Dec 13600 Call at 50€ in order to act as a small hedge against a DAX climb and the threatened Nov 12800 - 13200 Call Spread. Thinking about this during the weekend, I realized that I could have made a better move by buying a bull call spread closer to the money.

Bull Call Spread. Source Wikipedia.
The setup that I could have used, could be this one:

BUYODAX Dec 2017 134001081-100€
SELLODAX Dec 2017 13600581+50€

I still would have had to pay 50€ and the maximum profits would have been capped to 200 points (950€ considering the paid 50€) but the hedge would have been bigger as the long position is closer to the money (13600 sits at 5 deltas while 13400 sits at 10 deltas).

Anyway, while the IV increased quite a bit, I guess due to the elections last weekend, and with a +0,30% increase in the spot value, I sold the 13650 Call at 51€ in order to enter in a bull call spread:

BUYODAX Dec 2017 13600581-50€
SELLODAX Dec 2017 1365048151€

This trade allows me to recover the invested premium while caps my profits to 50 points (250€)

Now, I am thinking about deploying a proper bull call spread in December, which should be closer to the money. Ideally IV should drop a bit to make the purchase cheaper.

See also

Tuesday, 19 September 2017

ODAX November 2017 Iron Condor adjustment (II)


DAX keeps climbing and the volatility is reaching year lows, so I bought a Dec 13600 Call option as a small hedge for further climbs. Also, if the market conditions are the proper ones, it will form the long leg of a possible December 13200-13600 call spread.

DAX on September 19th. Source Investing
By definition, there is very little chance for this option to gain value, but the low IV made it relatively cheap to buy and the November Iron Condor is being threatened on the call side.

Sunday, 17 September 2017

Adapting Hive partitions to different data sizes


Hive's table partitioning allows the user to have better querying performance as it avoids costly scans over data that is not relevant for the user. This partitioning is based on the data structure to be found in HDFS, as partitions match with directories.

One quite common usage for partitions is time series, which can be modeled like this:

Our TimeSeries entity

: The time-stamp has been decomposed in several columns that will form the partitions. Month and day are TinyInt in order to save space (we might end up having millions of records).

This can be easily partitioned by using this folder structure in HDFS, if we take a look we will see these directories (data shown for our table being partitioned by year and month):

As per the Hive documentation, the most optimal partition size is 2 Gb. What does it happen if you have defined a partitioning system that ends up in production with too big or too small partitions? Here some examples on how can you adjust your partitions using Spark.

Monday, 11 September 2017

ODAX November 2017 Iron Condor adjustment


Again, as it happened in late July, a nice climb in the index forced me to adjust the trade when the Call leg hit 30 delta.

Dax on September 11 2017. Source

The call side was deployed too close, even though the Implicit Volatility was relatively high when I opened the position.

Thursday, 7 September 2017

Closed: October 2017 Credit Put Spread


Today, after waiting a bit longer than expected (36 days out of a total of 79), I was able to close the trade.
DAX on September 7 2017. Source
I closed the Put Spread after reaching 50% of the maximum theoretical profit, which means 103€, or a +0,6% account increase since the beginning of the year (+6,7% compared to +5,8% in the DAX).

Monday, 28 August 2017

New position: ODAX Nov 2017 Iron Condor


Today I opened a new Iron Condor using the ODAX options for the November 2017 expiration cycle.
DAX 30 on August 28th. Source: Investing
Regular Iron Condor this time (80 days until expiration, 400 points wing width) with the Implicit Volatility at around 16. The DAX has moved around the 12100 support since mid July, no bounce has happened yet. Let´s see if this situation continues for a while...

Wednesday, 2 August 2017

New position: ODAX Oct 2017 Put Spread


Today, I opened a credit put spread using the October 2017 ODAX options.
Dax on August 2nd. Source

Monday, 24 July 2017

Closed ODAX Sep 2017 Iron Condor


Last Friday, I was hoping that the volatility would decrease after the expiration day, so I could close the remaining Put spread for a smaller loss, but I was proven wrong.

DAX on 24/07/2017. Source
Volatility was still relatively high and the DAX kept going south, so I had to close the trade for a bigger loss, reducing the overall Iron Condor profit to a tiny 18,5€ or 0,001% account increase.

Overall, there is an accumulated 6,1% gain since the beginning of the year (DAX increased 5.0% in the same period).

Friday, 21 July 2017

ODAX September 2017 Iron Condor adjustment (II)


Quite some movement since the last adjustment where the Call side was threatened. Now, in the July cycle expiration day, it's the Put side that is taking all the heat.

Dax on 21/07/2017 Source
Today, I closed the Call side for about 60% of the max profit. My plan is to wait until Monday before taking any further action (either deploying a new Call spread or closing the Put spread for a loss, ideally with a little bounce upwards and a reduction in the volatility).

I don't like the idea of a Call spread so close to important technical supports, though.

Thursday, 13 July 2017

ODAX September 2017 Iron Condor adjustment


The ODAX September 2017 Iron Condor reached today the adjustment point on the Call side (30 delta), as the Dax has climbed more than 300 points since I opened the spread a week ago.

Dax index on 12/07/2017 Source Investing 
This is a pretty bad scenario, with a relative quick movement against you without having consumed much time and without almost any Theta decay.

Tuesday, 11 July 2017

Trading ODAX stock options


In the unlikely case that you have followed this blog since its inception, you might have noticed that it contains different "learning notes" that I have compiled while learning different technologies and tools, all of the software related, which I wanted to share with anyone interested.

Apart from the software development, I have other hobbies, one of them being the stocks, derivatives and the markets in general. A while ago, I started learning about stock options trading and after some studying I began, at the start of 2017, performing some actual trades using the options over the DAX30 index (the index holding the 30 biggest traded German companies).  They are called ODAX, by the way.

So today, I would like to introduce you the system I have followed for the better part of this year, which I would like to polish as I continue learning about stock options trading. Feedback is always welcome!

Sunday, 7 May 2017

Zeppelin + Scala: Consuming a HTTP endpoint


In our last post, we discussed on how could we execute Spark jobs in Zeppelin and then create nice SQL queries and graphs using the embedded SQLContext (provided along with the usual Spark context).

Today, we will see a way to populate your Spark RDDs/Data-Frames with data retrieved from a HTTP endpoint/REST service. We will focus on the parsing of the resulting JSON response. Additionally, we will also learn how to import additional libraries to Zeppelin.

Friday, 13 January 2017

Fast prototyping with Zeppelin, Spark & Scala


It´s been a while since I wrote anything here (again) but I don´t have much free time nowadays. Currently I´m taking some training on Scala and Spark, which, by the way, brings us here today.

A recipe for quick prototypes for Data Analysis: Scala + Spark + Zeppelin

If you remember well, I wrote some time ago about some personal learning projects I was working into, which basically picked stocks price information from the Web (using Spring Integration) and ran a couple of Spark analysis that were lately displayed in an AngularJS interface.

Nothing complicated at all, but rather verbose and time consuming to set up, specially if you just want to learn the subject.