WSJ "Common Sense" Strategy
Author: lspinv
Creation Date: 2/6/2010 1:49 PM
profile picture

lspinv

#1
I am trying to create a Rules based strategy to backtest WSJ's Common Sense strategy.

The strategy is: BUY on 10% declines / SELL on 25% increases; but I cannot find applicable Rules. Can anyone help?

I must use Rules instead of program code because I want to incorporate additional alternate Exit Conditions, and am not a programmer.

Thank you.
profile picture

Eugene

#2
10% declines from which point? Same about the increases. If by declines they mean a percent change from the previous day, then your condition is in the "ROC (Rate of change)" group.
profile picture

DaveAronow

#3
The best use of common sense is to save your money and not subscribe to the WSJ.
profile picture

lspinv

#4
QUOTE:
10% declines from which point? Same about the increases.


I believe (but am not certain) the author means to SELL when the price has increased 25% above the Purchase Price; BUY again when the price has decreased 10% from its max high since the previous Sell.

The author claims this strategy usually works well; however, he acknowledges it did not work well during the major downturn of 2008 -- the system generated a BUY Signal when the price dropped 10% from its most recent high, but did not generate a SELL signal prior to the downturn because the price never rose 25% before it dropped substantially during the downturn. I want to experiment to see whether the addition of a StopLoss or Trailing MAV sell signal would make the system better, then Optimize.
profile picture

Eugene

#5
QUOTE:
the Purchase Price

And what determines the purchase price?
profile picture

Cone

#6
QUOTE:
The author claims this strategy usually works well
Sure, it will work well for a market that keeps going up, but you better make sure that you have a plan when you're in one that doesn't. Does the author address this most important part of the Strategy?
profile picture

lspinv

#7
QUOTE:
And what determines the purchase price?


The purchase price is the price that I would pay to purchase the security. When a BUY signal is generated, the security would be purchased at next Close or Market or whatever price parameter is selected. If I am misunderstanding the question, please let me know.

Example of Cycle: If a security is purchased initially @ $100/share, SELL if and when security price reaches $125. BUY again if and when security price drops 10% below max price after SELL. Repeat.

QUOTE:
Sure, it will work well for a market that keeps going up, but you better make sure that you have a plan when you're in one that doesn't. Does the author address this most important part of the Strategy?


You are correct! (1) The author's strategy "as-is" requires that the market not only go up, but eventually go up more than 25%; and (2) no, the author does not address a downward market other than admit the strategy didn't work during the 2008 drop. That's why I want to try to tweak the strategy with other Conditions/parameters such as StopLosses and/or MAV Sell Signals, and try to optimize the "+25%" and "-10%" parameters.

This particular strategy may not wind up being a good strategy, but I'm a newbie to Wealth-Lab and am trying to learn how to use the program.
profile picture

Eugene

#8
QUOTE:
If I am misunderstanding the question, please let me know.

Sorry for not being clear, but it looks as if the author didn't specify a clear entry point for the first trade. However, since entries are the less important component of the trading equation, let's simply buy at the first bar of the data for illustration purposes.
QUOTE:
BUY again when the price has decreased 10% from its max high since the previous Sell.

Not sure if I understood this passage. What is the "max high since last Sell"? If this is Last Exit Price - 10%, we can establish a limit order. Otherwise, how long must we wait for that max high to happen? Until we see a new historical high? annual high? etc.

P.S. Alas, this is going to be a code-based strategy: there are no rules to look for previous Positions. If you have some other conditions to throw in, it's optimal to share them now before we're in too deep.
profile picture

lspinv

#9
QUOTE:
Not sure if I understood this passage. What is the "max high since last Sell"? If this is Last Exit Price - 10%, we can establish a limit order. Otherwise, how long must we wait for that max high to happen? Until we see a new historical high? annual high? etc.


If last SELL was $125, and if price would drop continuously thereafter, then next BUY would be @ $125 - 10% = $112.52. However, if price would rise to $150 after last SELL before turning downward (no time limit), then "max price since last Sell" would be $150, and next BUY would be @ $150 - 10% = $135.

QUOTE:
P.S. Alas, this is going to be a code-based strategy: there are no rules to look for previous Positions. If you have some other conditions to throw in, it's optimal to share them now before we're in too deep.


I appreciate your offer to help, but since I am just a newbie playing around with Rule-base strategies in order to learn the system; I'm not sure this particular strategy is worth a lot of effort on your part. You have confirmed my initial issue that I could not find the applicable Rules to build this strategy because there are no applicable Rules. Therefore, unless someone else has interest in this strategy it is not necessary to persue it further on my behalf. Thank you again for the help.
profile picture

Eugene

#10
QUOTE:
...before turning downward (no time limit)...

Understood. The gist is to wait for a 10% retracement indefinitely.

Here's a quick illustration I made yesterday that simply buys on 10% retraces from the last sell price. As it turns out now, it's incomplete but at least something to play with:
CODE:
Please log in to see this code.
profile picture

Eugene

#11
Based on my findings in WSJ online, I think we both got the system rules quite wrong. Code above is OK per se but it's not the "Common Sense" which is a pretty risky multi-position system w/o stops.
profile picture

Eugene

#12
Check out the system's proper rules and code:

WSJ Common Sense system
profile picture

lspinv

#13
Cool! I had forgotten all about this. Thanks for the code, Eugene.

Question: My first backtest using this code (using SPY) showed a win rate of 90%, which seems amazing; but the drawdowns were so severe as to render the system too risky for me. Any suggestions on a simple modification to limit the drawdowns? Seems like a Trailing StopLoss wouldn't work because that would upsent the next entry signal (i.e. -- entry condition might not be triggered for a really long time; maybe could miss one or more cycles). Maybe Sell when price crosses below a SMA, with a re-Buy if price crosses back above the same SMA prior to the next regular coded Buy signal?

OT: When I accessed this side today, I was using Firefox instead of my normal IE, and was unable to log in using Firefox (was able to login using IE). Was that a quirk, or is there an issue with Firefox and this site?
profile picture

Eugene

#14
Firefox works perfectly with our site. Try clearing the cookies and enabling JavaScript.
profile picture

Eugene

#15
rmpwealth asked:
QUOTE:

I applied the WSL Common Sense strategy using QQQ in Raw Profit Mode (Scale: Daily; DateRange: 5-yrs; PosSize:$10,000), and am confused by the results.

1. The Win Rate is 100%, but there is a significant MaxDD. I presume this means that trades that were entered prior to the crash of 2008 were held through the crash and eventually were sold at a profit when the market recovered.

2. To confirm this, I checked the Trades list, and noticed that new trades were opened while previous trades still were open. It is my understanding from reading the referenced article by James Stewart that for a single equity, there would be only one open position at a time. Stewart states "... buy stocks at invervals of 10% declines from the most recent peak", but what is the definition of "recent"? I interpet that to mean the most recent peak after the previous Sell (I think the plural references multiple equities, not multiple Buys of the same equity).

However, my purpose in writing is not to debate the intent of Stewart, but to get code that would have only one position open at a time for a given equity. I am not a programmer, but notice the code has a statements regarding Positions.Count and ActivePositions.Count, but have no idea how to modify them to render only one open position per equity at a time. Would you please help.
profile picture

Eugene

#16
1. No wonder and no reason to be confused. Nothing limits the system's time in the market. It will stick to a position until it wins.

In addition to this survivorship bias, it highly depends on starting date.

2. No need to decipher what's hidden. ;) Just check the rules in System Description box where it says how next entries are being made.

3. Add a respective condition before this line:
CODE:
Please log in to see this code.

So it looks something like this:
CODE:
Please log in to see this code.
profile picture

rmpwealth

#17
Thanks, Eugene.
This website uses cookies to improve your experience. We'll assume you're ok with that, but you can opt-out if you wish (Read more).