Tuesday, December 24, 2013

Sold FXI Feb$36.5 Put and its return on capital

After closing a profitable naked put on FXI last Fridday, I started waiting for a possible rebound of FXI near the low up-trending line. Today the stock price did jump with a bullish MACD divergence. So I sold the Feb$36.5p for $0.65 with a Delta of 0.32 and a covered return around 11%. I plan to get assigned to the stock if it falls below the strike. I'll also set a GTC order to nail down profits earlier than expiration as discussed before.

Created with ProphetCharts®

FXI Annualized Return on Secured Capital

To examine the ROC for the cash secured naked put, I created a ThinkScript to chart the curves relevant to Return on Capital. There are two ROC curves shown in the image below: One for Annualized ROC and another for approximated annualized ROC for a trading period of 30 calendar days (about 20 trading days assumed).

In the chart, the life long annualized ROC of this specific put option changes along with FXI price and time. At the price around 37.9, the following table showed annualized ROC values have not changed that much before.

  • Date:   ROC
  • 12-24: 11%
  • 11-15: 11%
  • 11-01: 12%
  • 09:30: 11%

The lowest sub-graph showed annualized ROC if the trade lasted 30 calendar days. Note this number is usually higher than the life-long aROC if the stock price stays above the short strike. For example, if we buy back the option sold on 11-13 (20 trading days ago and ITM put selling) with a credit of $1.83, the return would be 41%.

The ThinkScript is given before as a reference.

#This script calculates Annual Return On Secured Cash for selling puts
#AROSC = [Profit/(Strike - Credit)] * (365/Days)

# 1. AROSC at entry for option life span
#def SoldCredit = OptionPrice();
# OptionPrice does not give current option price
def SoldCredit = Close();
def Days = GetDaysToExpiration();

def AROSC_Life0 = (SoldCredit / (GetStrike() - SoldCredit)) * (365/Days) * 100;

# Limit AROSC to 100% so that it displays curve better
plot AROSC_Life = if(AROSC_Life0 > 100, 100, AROSC_Life0);


  1. Hi Charles,

    I just came across your website after a web search on thinkscript and getdaystoexpiration. I am interested in your thinkscript calculation for AROSC. I am trying to understand what credit value is used in your calculation. Last bid price?, last mark price? other value? What aggregation do you use? Opt Exp or other? Also one can sell either Puts or Calls. How does your script determine option type? We look forward to your response. Thank You.

  2. Hi,

    After going through my old documents, I think I found the complete script (there were a few lines missing in the original post for some reason).

    #This script calculates Annual Return On Secured Cash for selling puts
    #AROSC = [Profit/(Strike - Credit)] * (365/Days)

    # 1. AROSC at entry for option life span
    def SoldCredit = OptionPrice();
    def Days = GetDaysToExpiration();

    plot AROSC_Life = (SoldCredit / (GetStrike() - SoldCredit)) * (365/Days) * 100;

    # 2. AROSC for 30 day trading only
    def Profit = - SoldCredit + SoldCredit[30];

    plot AROSC_30D = (Profit/(GetStrike() - SoldCredit[30])) * (365/30) * 100;

    Hopefully the following answers your questions.
    1. close price is used.
    2. aggregation period is daily.
    3. the option type is determined by the option symbol you put in symbol box at the top left corner of the chart. If you put a call option symbol, the script will calculate the call option ROC.