in Search

Seasonality and the stock markets

Last post 06-26-2006, 1:30 by investorretired. 10 replies.
Sort Posts: Previous Next
  •  06-10-2006, 2:43 18030

    Seasonality and the stock markets

    It is often stated that there is a historical period of seasonal weakness in US equities between May and October for each calendar year.

    Could this seasonal bias be the result of just a few past yearly anomalies?

    Is it relevant to the NASDAQ, or just the Dow and S&P 500 indices?

    Is it relevant to any other markets?

    Does this bias exist at the security level, or is it present on just some major securities and indices?


    All these questions and more can be answered with the two profit % indicators and exploration below.

    Plot both seasonal profit indicators in the same window below your price chart, and compare their profit curves.

    Run the seasonal profit exploration on your universe of stocks, and sort columns according to exploration note instructions to determine median profit for each seasonal period.
    MetaStockTools.com
  •  06-10-2006, 2:45 18031 in reply to 18030

    Seasonal Profit Indicators

    MetaStock -> Tools -> Indicator Builder -> New
    -> Copy and paste two formulae below.

    Code:

    ===========================
    Seasonal Profit % - May-Oct
    ===========================
    ---8<------------------------------------------

    { Seasonal Buy & Hold.
    Long: May to Oct.

    System Profit Long % - fixed trade size - v2.2
    Basic code - Entry/Exit on Close of signal.

    ©Copyright 2005~2006 Jose Silva.
    The grant of this license is for personal use
    only - no resale or repackaging allowed.
    All code remains the property of Jose Silva.
    http://www.metastocktools.com }

    { User inputs }
    start:=Input("Start trading at start of Nth month [1-12]",1,12,5);
    end:=Input("End trading at end of Nth month [1-12]",1,12,10);
    cost:=Input("Total Transaction costs (Brokerage + Slippage) %:",0,100,.2)/200;
    plot:=Input("plot: [1]%Profit curve, [2]Trade signals",1,2,1);

    { Trade Long period }
    trade:=((Month()>=start)-(Month()<=end))<>0;
    trade:=If(start>end,trade,1-trade);

    { Entry Long }
    entry:=trade;

    { Exit Long }
    exit:=trade=0;

    { Trade Binary & clean Entry/Exit signals }
    init:=Cum(IsDefined(entry+exit))=1;
    flag:=ValueWhen(1,entry-exit<>0 OR init,entry);
    entry:=flag*(Alert(flag=0,2)
    OR entry*Cum(entry)=1);
    exit:=(flag=0)*(Alert(flag,2)
    OR exit*Cum(exit)=1);

    { Profit % curve }
    EntryVal:=ValueWhen(1,entry,C*(1+cost));
    Profit:=C*(1-cost)/EntryVal-1;
    ProfitPer:=(flag*Profit+Cum(exit*Profit))*100;

    { Plot in own window below chart }
    If(plot=1,ProfitPer,entry-exit)

    ---8<------------------------------------------



    =============================
    Seasonal Profit % - Nov-April
    =============================
    ---8<------------------------------------------

    { Seasonal Buy & Hold.
    Long: November to April.

    System Profit Long % - fixed trade size - v2.2
    Basic code - Entry/Exit on Close of signal.

    ©Copyright 2005~2006 Jose Silva.
    The grant of this license is for personal use
    only - no resale or repackaging allowed.
    All code remains the property of Jose Silva.
    http://www.metastocktools.com }

    { User inputs }
    start:=Input("Start trading at start of Nth month [1-12]",1,12,11);
    end:=Input("End trading at end of Nth month [1-12]",1,12,4);
    cost:=Input("Total Transaction costs (Brokerage + Slippage) %:",0,100,.2)/200;
    plot:=Input("plot: [1]%Profit curve, [2]Trade signals",1,2,1);

    { Trade Long period }
    trade:=((Month()>=start)-(Month()<=end))<>0;
    trade:=If(start>end,trade,1-trade);

    { Entry Long }
    entry:=trade;

    { Exit Long }
    exit:=trade=0;

    { Trade Binary & clean Entry/Exit signals }
    init:=Cum(IsDefined(entry+exit))=1;
    flag:=ValueWhen(1,entry-exit<>0 OR init,entry);
    entry:=flag*(Alert(flag=0,2)
    OR entry*Cum(entry)=1);
    exit:=(flag=0)*(Alert(flag,2)
    OR exit*Cum(exit)=1);

    { Profit % curve }
    EntryVal:=ValueWhen(1,entry,C*(1+cost));
    Profit:=C*(1-cost)/EntryVal-1;
    ProfitPer:=(flag*Profit+Cum(exit*Profit))*100;

    { Plot in own window below chart }
    If(plot=1,ProfitPer,entry-exit)

    ---8<------------------------------------------


    MetaStockTools.com
  •  06-10-2006, 2:47 18032 in reply to 18030

    Seasonal Profit Exploration

    MetaStock -> Tools -> The Explorer -> New
    -> Copy and paste formula below.

    Code:

    ===============
    Seasonal profit
    ===============
    ---8<---------------------------

    Notes:
    -----

    1) Click on columns A or B profit % headers
    to rank results by profitability;

    2) Select the middle profit % result,
    so that clicking again on the column header
    (and reversing the profitability order)
    does not change the position of the
    selected result.

    Exploration references default values in
    following two indicators:
    "Seasonal Profit % - May-Oct"
    "Seasonal Profit % - Nov-April"

    ©Copyright 2004~2006 Jose Silva.
    The grant of this license is for personal use
    only - no resale or repackaging allowed.
    All code remains the property of Jose Silva.
    http://www.metastocktools.com

    ------------------
    ------------------

    Column A: May-Oct

    { May-October seasonal profit % }
    Fml("Seasonal Profit % - May-Oct")

    ------------------
    ------------------

    Column B: Nov-Apr

    { November-April seasonal profit % }
    Fml("Seasonal Profit % - Nov-April")

    ------------------
    ------------------

    Filter:

    colA<>0 OR colB<>0

    ---8<---------------------------


    MetaStockTools.com
  •  06-10-2006, 2:54 18033 in reply to 18030

    Adapting profit indicators in MACDH Divergence & URSC ki

    Note for owners of the MACDH Divergence & URSC kits:

    To adapt your risk-normalized and annualized profit indicators:


    1) Copy "... Profit Long %" & "... Profit Long pa%" indicators.


    2) In the "... Profit Long %" indicator,

    Change the original code:

    Code:

    ...
    {* Entry Long *}
    x:=...;
    entry:=x=1;

    {* Exit Long *}
    exit:=x=-1;

    {* Variable Trade Size % formula *}
    VarSize:=...




    To new code:

    Code:

    ...
    {Trade period}
    start:=11;{start}
    VarSize:=4;{end}
    exit:=((Month()>=start)-(Month()<=VarSize))<>0;
    exit:=If(start>VarSize,exit,1-exit);

    {Entry/Exit}
    entry:=exit;
    exit:=exit=0;

    {Var Size % formula}
    VarSize:=0;
    ...




    jose '-)
    MetaStockTools.com
  •  06-10-2006, 8:36 18043 in reply to 18030

    seasonal Dow profit chart

    ... And this is what it looks like (click on image to expand):




    1990-2006 total Dow seasonal profit Long:

    Nov-April: +141%
    May-Oct: +5%


    jose '-)
    MetaStockTools.com
  •  06-11-2006, 4:13 18066 in reply to 18030

    Fine-tuning seasonality with minimal curve-fitting

    16.5 years (1/Jan/1990 - 9/June/2006) of further testing individual month's seasonality in the Dow index, yields the following total profit results:

    Code:
    Month Total % Profit
    ----- ------------
    January: +8.3
    February: +9.8
    March: +6.2
    April: +35.4
    May: +20.8
    June: -9.1
    July: +1.1
    August: -22.8
    September: -30.7
    October: +30.4
    November: +37.0
    December: +24.9


    As a result, trading Dow stocks (or its index) between June and September results in a loss of 50% over the last 16.5 years.

    Trading the same securities only between October and May over the same period, results in an accumulated net profit of 202%, or 12.2%pa.





    Anyone for holidays until 1st October? :)


    jose '-)
    MetaStockTools.com
  •  06-12-2006, 13:23 18094 in reply to 18030

    Seasonal indicator code updates

    The latest version of the Seasonal Profit % indicators can be found here.


    jose '-)
    MetaStockTools.com
  •  06-25-2006, 17:41 18532 in reply to 18030

    Re: Seasonal indicator code updates

    Hi Jose!

    Makes you wonder just how long "Sell in May, and go away" has been around...

    FYI: In case they don't have the "Halloween" holiday down there (in the U.S. it's always Oct 31), see "The Halloween Indicator" at: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=76248


    --Johnathan
    --Johnathan
  •  06-25-2006, 18:28 18536 in reply to 18030

    Re: Seasonal indicator code updates

    Sample evidence, for instance, shows that in the UK the effect has been noticeable since 1694.

    Gosh! I didn't even know that there were trading records going back that far...

    Seasonal influences are likely to be dynamic - they probably shift over the years, so I would question the validity of any seasonality study based on anything beyond 10-20 years' data.

    For example, with global warming now firmly in place, seasonal weather patterns averaged over 300 years may not make sense any longer.

    Anyway, for market seasonality conclusions it's so much easier to apply the seasonal indicator above to each individual market's index.


    jose '-)
    MetaStockTools.com
  •  06-25-2006, 18:49 18537 in reply to 18030

    Back testing with OPT var on sectors to get seasonality

    I did something a little more simple. I made a system test to buy day one of any month and sell the last day of any month. and then plugged in opt for each month. 5000 daily bars It came out 10 "Oct" by 5 "May" on most sectors. Some noteable diffrrences the transport sector. AKA fed ex. It had a shoter run and the toy sector started earlier
  •  06-26-2006, 1:30 18546 in reply to 18030

    Re: Back testing with OPT var on sectors to get seasonality

    Listed below is the results (Seasonal) for the 6 months (May to Nov) and (Nov to May) of the SP500 form 1930 to current. I used the closing price on the last day of the preceding month to do the calculations.

    SP500 158.59% 371.61% % Totals

    Date (From / To) Price % Chg % Chg
    04/30/30 10/31/30 16.94 -31.97%
    10/31/30 04/30/31 15.09 -10.92%
    04/30/31 10/31/31 10.53 -30.22%
    10/31/31 04/30/32 5.83 -44.63%
    04/30/32 10/31/32 6.96 19.38%
    10/31/32 04/29/33 8.32 19.54%
    04/29/33 10/31/33 8.96 7.69%
    10/31/33 04/30/34 10.46 16.74%
    04/30/34 10/31/34 8.81 -15.77%
    10/31/34 04/30/35 9.28 5.33%
    04/30/35 10/31/35 12.46 34.27%
    10/31/35 04/30/36 13.77 10.51%
    04/30/36 10/31/36 17.21 24.98%
    10/31/36 04/30/37 16.43 -4.53%
    04/30/37 10/30/37 12.36 -24.77%
    10/30/37 04/30/38 9.70 -21.52%
    04/30/38 10/31/38 13.17 35.77%
    10/31/38 04/29/39 10.92 -17.08%
    04/29/39 10/31/39 12.83 17.49%
    10/31/39 04/30/40 12.19 -4.99%
    04/30/40 10/31/40 11.08 -9.11%
    10/31/40 04/30/41 9.31 -15.97%
    04/30/41 10/31/41 9.50 2.04%
    10/31/41 04/30/42 7.66 -19.37%
    04/30/42 10/31/42 9.42 22.98%
    10/31/42 04/30/43 11.59 23.04%
    04/30/43 10/30/43 11.92 2.85%
    10/30/43 04/29/44 11.87 -0.42%
    04/29/44 10/31/44 12.78 7.67%
    10/31/44 04/30/45 14.84 16.12%
    04/30/45 10/31/45 16.65 12.20%
    10/31/45 04/30/46 18.76 12.67%
    04/30/46 10/31/46 14.84 -20.90%
    10/31/46 04/30/47 14.58 -1.75%
    04/30/47 10/31/47 15.43 5.83%
    10/31/47 04/30/48 15.48 0.32%
    04/30/48 10/30/48 16.54 6.85%
    10/30/48 04/30/49 14.74 -10.88%
    04/30/49 10/31/49 16.04 8.82%
    10/31/49 04/29/50 18.07 12.66%
    04/29/50 10/31/50 19.53 8.08%
    10/31/50 04/30/51 22.43 14.85%
    04/30/51 10/31/51 22.94 2.27%
    10/31/51 04/30/52 23.32 1.66%
    04/30/52 10/31/52 24.52 5.15%
    10/31/52 04/30/53 24.62 0.41%
    04/30/53 10/30/53 24.54 -0.32%
    10/30/53 04/30/54 28.26 15.16%
    04/30/54 10/29/54 31.68 12.10%
    10/29/54 04/29/55 37.96 19.82%
    04/29/55 10/31/55 42.34 11.54%
    10/31/55 04/30/56 48.38 14.27%
    04/30/56 10/31/56 45.58 -5.79%
    10/31/56 04/30/57 45.74 0.35%
    04/30/57 10/31/57 41.06 -10.23%
    10/31/57 04/30/58 43.44 5.80%
    04/30/58 10/31/58 51.33 18.16%
    10/31/58 04/30/59 57.59 12.20%
    04/30/59 10/30/59 57.52 -0.12%
    10/30/59 04/29/60 54.37 -5.48%
    04/29/60 10/31/60 53.39 -1.80%
    10/31/60 04/28/61 65.31 22.33%
    04/28/61 10/31/61 68.62 5.07%
    10/31/61 04/30/62 65.24 -4.93%
    04/30/62 10/31/62 56.52 -13.37%
    10/31/62 04/30/63 69.80 23.50%
    04/30/63 10/31/63 74.01 6.03%
    10/31/63 04/30/64 79.46 7.36%
    04/30/64 10/30/64 84.86 6.80%
    10/30/64 04/30/65 89.11 5.01%
    04/30/65 10/29/65 92.42 3.71%
    10/29/65 04/29/66 91.06 -1.47%
    04/29/66 10/31/66 80.20 -11.93%
    10/31/66 04/28/67 94.01 17.22%
    04/28/67 10/31/67 93.90 -0.12%
    10/31/67 04/30/68 97.59 3.93%
    04/30/68 10/31/68 103.41 5.96%
    10/31/68 04/30/69 103.69 0.27%
    04/30/69 10/31/69 97.24 -6.22%
    10/31/69 04/30/70 81.52 -16.17%
    04/30/70 10/30/70 83.25 2.12%
    10/30/70 04/30/71 103.95 24.86%
    04/30/71 10/29/71 94.23 -9.35%
    10/29/71 04/28/72 107.67 14.26%
    04/28/72 10/31/72 111.58 3.63%
    10/31/72 04/30/73 106.97 -4.13%
    04/30/73 10/31/73 108.29 1.23%
    10/31/73 04/30/74 90.31 -16.60%
    04/30/74 10/31/74 73.90 -18.17%
    10/31/74 04/30/75 87.30 18.13%
    04/30/75 10/31/75 89.04 1.99%
    10/31/75 04/30/76 101.64 14.15%
    04/30/76 10/29/76 102.90 1.24%
    10/29/76 04/29/77 98.44 -4.33%
    04/29/77 10/31/77 92.34 -6.20%
    10/31/77 04/28/78 96.83 4.86%
    04/28/78 10/31/78 93.15 -3.80%
    10/31/78 04/30/79 101.76 9.24%
    04/30/79 10/31/79 101.82 0.06%
    10/31/79 04/30/80 106.29 4.39%
    04/30/80 10/31/80 127.47 19.93%
    10/31/80 04/30/81 132.81 4.19%
    04/30/81 10/30/81 121.89 -8.22%
    10/30/81 04/30/82 116.44 -4.47%
    04/30/82 10/29/82 133.71 14.83%
    10/29/82 04/29/83 164.42 22.97%
    04/29/83 10/31/83 163.55 -0.53%
    10/31/83 04/30/84 160.05 -2.14%
    04/30/84 10/31/84 166.09 3.77%
    10/31/84 04/30/85 179.83 8.27%
    04/30/85 10/31/85 189.82 5.56%
    10/31/85 04/30/86 235.52 24.08%
    04/30/86 10/31/86 243.98 3.59%
    10/31/86 04/30/87 284.57 16.64%
    04/30/87 10/30/87 251.79 -11.52%
    10/30/87 04/29/88 261.33 3.79%
    04/29/88 10/31/88 278.97 6.75%
    10/31/88 04/28/89 309.64 10.99%
    04/28/89 10/31/89 340.36 9.92%
    10/31/89 04/30/90 330.80 -2.81%
    04/30/90 10/31/90 304.00 -8.10%
    10/31/90 04/30/91 375.35 23.47%
    04/30/91 10/31/91 392.45 4.56%
    10/31/91 04/30/92 414.95 5.73%
    04/30/92 10/30/92 418.68 0.90%
    10/30/92 04/30/93 440.19 5.14%
    04/30/93 10/29/93 467.83 6.28%
    10/29/93 04/29/94 450.91 -3.62%
    04/29/94 10/31/94 472.35 4.75%
    10/31/94 04/28/95 514.71 8.97%
    04/28/95 10/31/95 581.50 12.98%
    10/31/95 04/30/96 654.17 12.50%
    04/30/96 10/31/96 705.27 7.81%
    10/31/96 04/30/97 801.34 13.62%
    04/30/97 10/31/97 914.62 14.14%
    10/31/97 04/30/98 1111.77 21.56%
    04/30/98 10/30/98 1098.67 -1.18%
    10/30/98 04/30/99 1335.18 21.53%
    04/30/99 10/29/99 1362.93 2.08%
    10/29/99 04/28/00 1452.43 6.57%
    04/28/00 10/31/00 1429.40 -1.59%
    10/31/00 04/30/01 1249.46 -12.59%
    04/30/01 10/31/01 1059.78 -15.18%
    10/31/01 04/30/02 1076.92 1.62%
    04/30/02 10/31/02 885.76 -17.75%
    10/31/02 04/30/03 916.92 3.52%
    04/30/03 10/31/03 1050.71 14.59%
    10/31/03 04/30/04 1107.30 5.39%
    04/30/04 10/29/04 1130.20 2.07%
    10/29/04 04/29/05 1156.85 2.36%
    04/29/05 10/31/05 1207.01 4.34%
    10/31/05 04/28/06 1310.61 8.58%

    If anyone is interested I have the same informaton on the Dow from 1900.
View as RSS news feed in XML