As of 03/13/2025
Indus: 40,814 -537.36 -1.3%
Trans: 14,398 -275.47 -1.9%
Utils: 990 +3.46 +0.4%
Nasdaq: 17,303 -345.44 -2.0%
S&P 500: 5,522 -77.78 -1.4%
|
YTD
-4.1%
-9.4%
+0.8%
-10.4%
-6.1%
|
|
As of 03/13/2025
Indus: 40,814 -537.36 -1.3%
Trans: 14,398 -275.47 -1.9%
Utils: 990 +3.46 +0.4%
Nasdaq: 17,303 -345.44 -2.0%
S&P 500: 5,522 -77.78 -1.4%
|
YTD
-4.1%
-9.4%
+0.8%
-10.4%
-6.1%
| |
| ||
Initial release: 3/4/2025.
How well do small chart patterns (1 to 7 bars long) reach a price target? This article shows the testing results, describing how often upward breakouts occur, success at reaching a price target, and average profit per trade. Read for more details.
In the following tables, the "% Up Breakout" column shows how often an upward breakout occurred, when available. I only tested for upward breakouts.
The "Hit 2x Target" column computes a target exit price based on twice the height of the chart pattern added to the top of it. A limit order to sell is assumed to be placed at that price for an automatic exit.
The "Average Profit/Trade" column shows the average trading profit (if any) per trade.
The "Inbound Trend Direction" column checks to see if the short-term (5 days) price trend direction (up or down) leading to the start of the pattern influences performance.
"Price Bars" are the number of price bars in the pattern. The idea behind this column is to test if longer or shorter price bar patterns outperformed. The analysis discussed in this article helps answer the question.
"Beat Benchmark" column refers to a comparison with the benchmark results in the Benchmark table. The benchmark uses the same data, the same number of price bars, but not the identification guidelines of the small pattern to assess how a random selection would perform. It's an apples-to-apples comparison to gauge if the small pattern really provides a trading benefit.
This is a table showing the performance of small chart patterns in hundreds of stocks, sorted by how often price reaches the target price ("Hit 2x Target" column).
Pattern | % Up Breakout | Hit 2x Target | Average Profit/Trade | Inbound Trend Direction | Price Bars | Beat Benchmark? |
Horn bottoms (weekly scale) | 100%* | 53% | $452.07 | Up | 3 | Yes |
Horn bottoms (weekly scale) | 100%* | 53% | $620.02 | Down | 3 | Yes |
One day reversal, bottom | 92% | 50% | $81.47 | Down | 3 | Yes |
Pipe bottom (weekly scale) | 98% | 50% | $402.11 | Up | 2 | Yes |
Pipe bottom (weekly scale) | 98% | 50% | $384.80 | Down | 2 | Yes |
One day reversal, top | 11% | 43% | $39.23 | Up | 3 | Yes |
Upside weekly reversals (weekly scale) | 88% | 43% | $248.34 | Down | 2 | No |
2-Tall | 100%* | 42% | $142.63 | Up | 2 | Yes |
2-Tall | 100%* | 42% | $214.49 | Down | 2 | Yes |
Closing price reversal, downtrend | 82% | 42% | $64.04 | Down | 1 | Yes |
2-Did | 100%* | 41% | $103.39 | Up | 2 | Yes |
2-Did | 100%* | 41% | $112.40 | Down | 2 | Yes |
Bullish fakey | 100%* | 41% | $110.88 | Up | 4 | Yes |
Bullish fakey | 100%* | 41% | $119.04 | Down | 4 | Yes |
Key reversal, downtrend | 84% | 41% | $93.25 | Down | 2 | Yes |
Key reversal bar, downtrend, v2 | 83% | 41% | $135.16 | Down | 1 | Yes |
Pivot point reversal, downtrend | 82% | 41% | $90.19 | Down | 2 | Yes |
Wide ranging day upside reversal | 86% | 41% | $134.10 | Down | 1 | Yes |
2-Dance | 54% | 40% | $54.37 | Up | 2 | Yes |
2-Dance | 54% | 40% | $83.54 | Down | 2 | Yes |
Bearish fakey (with upward breakouts) | 100%* | 40% | $76.89 | Up | 4 | No |
Bearish fakey (with upward breakouts) | 100%* | 40% | $103.93 | Down | 4 | Yes |
Gap2H | 85% | 40% | $126.97 | Up | 3 | Yes |
Gap2H | 85% | 40% | $154.46 | Down | 3 | Yes |
Hook reversal, downtrend | 72% | 40% | $79.00 | Down | 2 | Yes |
3-Bar | 85% | 39% | $90.81 | Up | 3 | Yes |
3-Bar | 85% | 39% | $89.38 | Down | 3 | Yes |
Open-close reversal, downtrend | 58% | 39% | $80.90 | Down | 2 | Yes |
2-Close, bullish | 71% | 38% | $76.96 | Up | 3 | Yes |
2-Close, bullish | 71% | 38% | $83.09 | Down | 3 | No |
3L-R | 74% | 38% | $86.19 | Up | 4 | No |
3L-R | 74% | 38% | $106.33 | Down | 4 | Yes |
Closing price reversal, uptrend | 20% | 38% | $64.48 | Up | 1 | Yes |
Bullish double key reversal | 65% | 38% | $36.97 | Up | 3 | No |
Bullish double key reversal | 65% | 38% | $84.06 | Down | 3 | Yes |
Inside days | 53% | 38% | $62.43 | Up | 2 | Yes |
Inside days | 53% | 38% | $77.46 | Down | 2 | Yes |
Outside days | 51% | 38% | $66.29 | Up | 2 | Yes |
Outside days | 51% | 38% | $59.72 | Down | 2 | No |
3DC | 55% | 37% | $87.83 | Up | 3 | Yes |
3DC | 55% | 37% | $104.70 | Down | 3 | Yes |
Hook reversal, uptrend | 33% | 37% | $74.86 | Up | 2 | Yes |
Narrow range 4 | 56% | 37% | $94.35 | Up | 4 | Yes |
Narrow range 4 | 56% | 37% | $127.80 | Down | 4 | Yes |
Narrow range 7 | 59% | 37% | $115.81 | Up | 7 | No |
Narrow range 7 | 59% | 37% | $163.84 | Down | 7 | Yes |
Open-close reversal, uptrend | 48% | 37% | $84.54 | Up | 2 | Yes |
Turn-key, bullish | 73% | 37% | $58.32 | Up | 4 | No |
Turn-key, bullish | 73% | 37% | $70.79 | Down | 4 | No |
Two-step, bullish | 79% | 36% | $15.27 | Up | 5 | No |
Two-step, bullish | 79% | 36% | $64.58 | Down | 5 | No |
Shark-32 | 53% | 36% | $66.90 | Up | 3 | No |
Shark-32 | 53% | 36% | $89.60 | Down | 3 | Yes |
2-Close, bearish | 35% | 35% | $56.52 | Up | 3 | No |
2-Close, bearish | 35% | 35% | $92.77 | Down | 3 | Yes |
Bearish double key reversal | 39% | 35% | $33.71 | Up | 3 | No |
Bearish double key reversal | 39% | 35% | $56.48 | Down | 3 | No |
Pivot point reversal, uptrend | 21% | 35% | $87.93 | Up | 2 | Yes |
Inverted 3L-R | 31% | 34% | $74.81 | Up | 4 | No |
Inverted 3L-R | 31% | 34% | $91.06 | Down | 4 | No |
Key reversal, uptrend | 19% | 34% | $52.36 | Up | 2 | Yes |
Bearish key reversal bar, v2 | 22% | 34% | $91.56 | Up | 1 | Yes |
Turn-key, bearish | 29% | 32% | $46.68 | Up | 4 | No |
Turn-key, bearish | 29% | 32% | $88.73 | Down | 4 | No |
Wide ranging day downside reversal | 18% | 32% | $91.83 | Up | 1 | Yes |
Inverted gap2H | 23% | 31% | $132.26 | Up | 3 | Yes |
Inverted gap2H | 23% | 31% | $164.42 | Down | 3 | Yes |
Two-step, bearish | 26% | 30% | $14.92 | Up | 5 | No |
Two-step, bearish | 26% | 30% | $166.15 | Down | 5 | Yes |
Downside weekly reversals (weekly scale) | 19% | 30% | $224.21 | Up | 2 | Yes |
This is the benchmark performance using stocks. When I did the small patterns tests, I picked from 1 to 7 price bars and logged how those patterns performed. I would call the selection random, except I skipped several in a row to keep the sample counts reasonable. Entry was a penny above the highest price bar in the pattern. Exit was a stop loss a penny below the lowest low in the pattern. Target exit was twice the height of the pattern added to the top of the pattern. There were other conditions, such as a minimum stock price of $5. See Method for details. In other words, I used the same trading rules in the same stocks except the patterns chosen here did not have any identification guidelines other than the number of price bars involved.
Some patterns use weekly data (horns, pipes) and two patterns needed the entry to be delayed for a week.
Pattern | % Up Breakout | Hit 2x Target | Average Profit/Trade | Inbound Trend Direction | Price Bars |
1 bar benchmark | 51% | 41% | $32.55 | Up | 1 |
1 bar benchmark | 51% | 41% | $62.36 | Down | 1 |
1 bar benchmark, delayed | 52% | 49% | $29.08 | Up | 1 |
1 bar benchmark, delayed | 52% | 49% | $51.85 | Down | 1 |
2 bar benchmark | 52% | 37% | $48.01 | Up | 2 |
2 bar benchmark | 52% | 37% | $68.70 | Down | 2 |
2 bar benchmark, using weekly data | 58% | 38% | $200.96 | Up | 2 |
2 bar benchmark, using weekly data | 58% | 38% | $253.78 | Down | 2 |
3 bar benchmark | 53% | 36% | $73.54 | Up | 3 |
3 bar benchmark | 53% | 36% | $83.91 | Down | 3 |
3 bar benchmark, using weekly data | 61% | 38% | $232.18 | Up | 3 |
3 bar benchmark, using weekly data | 66% | 38% | $259.81 | Down | 3 |
4 bar benchmark | 54% | 36% | $88.58 | Up | 4 |
4 bar benchmark | 54% | 36% | $100.27 | Down | 4 |
5 bar benchmark | 55% | 36% | $102.71 | Up | 5 |
5 bar benchmark | 55% | 36% | $131.16 | Down | 5 |
7 bar benchmark | 57% | 35% | $138.22 | Up | 7 |
7 bar benchmark | 57% | 35% | $145.03 | Down | 7 |
The "1 bar benchmark, delayed" line is for the one-day reversal pattern. That is a one-bar pattern but I also included the adjacent bars (one on each side) for pattern recognition. For testing, the entry and exit prices were based on the middle bar only (the ODR), but entry was delayed a day to make it a fair comparison. To be clear, we have the ODR (bottom, but it also applies to tops), a higher low the next day and then we look for entry starting the following day.
The following table shows the performance of small patterns in exchange traded funds (ETFs), sorted by the "Hit 2x Target" column.
Pattern | % Up Breakout | Hit 2x Target | Average Profit/Trade | Inbound Trend Direction | Price Bars | Beat Benchmark? |
One day reversal, bottom | 92% | 59% | $74.00 | Down | 3 | Yes |
One day reversal, top | 14% | 49% | $29.87 | Up | 3 | No |
Closing price reversal, downtrend | 77% | 48% | $45.20 | Down | 1 | No |
Pipe bottom (weekly scale) | 98% | 46% | $377.47 | Up | 2 | Yes |
Pipe bottom (weekly scale) | 98% | 46% | $167.01 | Down | 2 | No |
Hook reversal, downtrend | 67% | 44% | $54.56 | Down | 2 | Yes |
Key reversal, downtrend | 81% | 44% | $65.55 | Down | 2 | Yes |
Upside weekly reversals (weekly scale) | 88% | 44% | $149.39 | Down | 2 | No |
2-Dance | 57% | 43% | $49.24 | Up | 2 | Yes |
2-Dance | 57% | 43% | $76.71 | Down | 2 | Yes |
Closing price reversal, uptrend | 26% | 43% | $46.01 | Up | 1 | Yes |
Open-close reversal, downtrend | 53% | 43% | $67.27 | Down | 2 | Yes |
Bullish double key reversal | 65% | 42% | $77.37 | Up | 3 | Yes |
Bullish double key reversal | 65% | 42% | $77.74 | Down | 3 | Yes |
Bearish fakey (with upward breakouts) | 100%* | 42% | $58.47 | Up | 4 | No |
Bearish fakey (with upward breakouts) | 100%* | 42% | $114.57 | Down | 4 | Yes |
Open-close reversal, uptrend | 56% | 42% | $58.42 | Up | 2 | Yes |
Pivot point reversal, downtrend | 79% | 42% | $61.21 | Down | 2 | Yes |
Wide ranging day upside reversal | 79% | 42% | $83.38 | Down | 1 | Yes |
3-Bar | 83% | 41% | $68.16 | Up | 3 | No |
3-Bar | 83% | 41% | $62.97 | Down | 3 | No |
Bullish fakey | 100%* | 41% | $132.26 | Up | 4 | Yes |
Bullish fakey | 100%* | 41% | $72.38 | Down | 4 | No |
Gap2H | 83% | 41% | $74.49 | Up | 3 | Yes |
Gap2H | 83% | 41% | $114.06 | Down | 3 | Yes |
Hook reversal, uptrend | 37% | 41% | $47.24 | Up | 2 | No |
Inside days | 54% | 41% | $28.88 | Up | 2 | No |
Inside days | 54% | 41% | $41.90 | Down | 2 | No |
Outside days | 50% | 41% | $34.62 | Up | 2 | No |
Outside days | 50% | 41% | $50.47 | Down | 2 | No |
Two-step, bullish** | 82% | 40% | $153.63 | Up | 5 | Yes |
Two-step, bullish** | 82% | 40% | $158.36 | Down | 5 | Yes |
3L-R | 76% | 40% | $80.68 | Up | 4 | No |
3L-R | 76% | 40% | $44.50 | Down | 4 | No |
3DC | 60% | 39% | $74.51 | Up | 3 | Yes |
3DC | 60% | 39% | $62.67 | Down | 3 | No |
2-Tall | 100%* | 39% | $179.25 | Up | 2 | Yes |
2-Tall | 100%* | 39% | ($42.03) | Down | 2 | No |
Narrow range 4 | 61% | 39% | $87.91 | Up | 4 | Yes |
Narrow range 4 | 61% | 39% | $100.88 | Down | 4 | Yes |
Narrow range 7 | 64% | 39% | $133.38 | Up | 7 | Yes |
Narrow range 7 | 64% | 39% | $126.10 | Down | 7 | No |
Shark-32 | 54% | 39% | $29.16 | Up | 3 | No |
Shark-32 | 54% | 39% | $88.20 | Down | 3 | Yes |
2-Close, bullish | 70% | 38% | $36.16 | Up | 3 | No |
2-Close, bullish | 70% | 38% | $41.52 | Down | 3 | No |
Bearish double key reversal | 40% | 38% | $10.50 | Up | 3 | No |
Bearish double key reversal | 40% | 38% | $20.37 | Down | 3 | No |
Key reversal bar, downtrend, v2 | 78% | 38% | $49.57 | Down | 1 | Yes |
Pivot point reversal, uptrend | 26% | 38% | $59.94 | Up | 2 | Yes |
2-Did | 100%* | 37% | $4.57 | Up | 2 | No |
2-Did | 100%* | 37% | $(28.90) | Down | 2 | No |
Inverted gap2H | 25% | 37% | $187.03 | Up | 3 | Yes |
Inverted gap2H | 25% | 37% | $119.12 | Down | 3 | Yes |
Key reversal, uptrend | 25% | 37% | $29.98 | Up | 2 | No |
2-Close, bearish | 36% | 36% | $48.23 | Up | 3 | No |
2-Close, bearish | 36% | 36% | $52.20 | Down | 3 | No |
Inverted 3L-R | 31% | 36% | $67.53 | Up | 4 | No |
Inverted 3L-R | 31% | 36% | $47.38 | Down | 4 | No |
Turn-key, bullish | 78% | 36% | $22.68 | Up | 4 | No |
Turn-key, bullish | 78% | 36% | $51.51 | Down | 4 | No |
Bearish key reversal bar, v2 | 29% | 36% | $4.64 | Up | 1 | No |
Wide ranging day downside reversal | 21% | 36% | $42.91 | Up | 1 | Yes |
Downside weekly reversals (weekly scale) | 18% | 34% | $224.69 | Up | 2 | Yes |
Turn-key, bearish | 32% | 29% | ($2.34) | Up | 4 | No |
Turn-key, bearish | 32% | 29% | $55.81 | Down | 4 | No |
Two-step, bearish** | 36% | 27% | $22.40 | Up | 5 | No |
Two-step, bearish** | 36% | 27% | $90.13 | Down | 5 | No |
This is the benchmark performance in exchange traded funds (ETFs). Selection and trading is the same as described for the stock benchmark except I picked from ETFs.
Pattern | % Up Breakout | Hit 2x Target | Average Profit/Trade | Inbound Trend Direction | Price Bars |
1 bar benchmark | 53% | 49% | $38.39 | Up | 1 |
1 bar benchmark | 53% | 49% | $49.24 | Down | 1 |
1 bar benchmark, delayed | 54% | 56% | $31.17 | Up | 1 |
1 bar benchmark, delayed | 54% | 56% | $29.98 | Down | 1 |
2 bar benchmark | 55% | 41% | $48.84 | Up | 2 |
2 bar benchmark | 55% | 41% | $51.31 | Down | 2 |
2 bar benchmark, using weekly data | 60% | 39% | $174.53 | Up | 2 |
2 bar benchmark, using weekly data | 60% | 39% | $180.35 | Down | 2 |
3 bar benchmark | 55% | 39% | $68.94 | Up | 3 |
3 bar benchmark | 55% | 39% | $68.34 | Down | 3 |
3 bar benchmark, using weekly data | 62% | 40% | $213.50 | Up | 3 |
3 bar benchmark, using weekly data | 62% | 40% | $213.94 | Down | 3 |
4 bar benchmark | 56% | 38% | $85.22 | Up | 4 |
4 bar benchmark | 56% | 38% | $83.76 | Down | 4 |
5 bar benchmark | 58% | 38% | $99.79 | Up | 5 |
5 bar benchmark | 58% | 38% | $90.88 | Down | 5 |
7 bar benchmark | 58% | 38% | $110.80 | Up | 7 |
7 bar benchmark | 58% | 38% | $145.44 | Down | 7 |
The "1 bar benchmark, delayed" line is for the one-day reversal pattern. That is a one-bar pattern but I also included the adjacent bars (one on each side) for pattern recognition. For testing, the entry and exit prices were based on the middle bar only (the ODR), but entry was delayed a day to make it a fair comparison. To be clear, we have the ODR (bottom, but it also applies to tops), a higher low the next day and then we look for entry starting the following day.
This table lists how small patterns performed in cryptocurrencies. Not all patterns had enough trades to be worth reporting. I sorted the table by the "Hit 2x Target" column.
Pattern | % Up Breakout | Hit 2x Target | Average Profit/Trade | Inbound Trend Direction | Price Bars | Beat Benchmark? |
2-Tall | 100%* | 64% | $779.98 | Up | 2 | Yes |
2-Tall** | 100%* | 64% | $192.51 | Down | 2 | Yes |
2-Did** | 100%* | 60% | $596.54 | Up | 2 | Yes |
2-Did** | 100%* | 60% | $351.89 | Down | 2 | Yes |
Bullish double key reversal | 75% | 55% | $462.23 | Up | 3 | Yes |
Bullish double key reversal | 75% | 55% | $238.49 | Down | 3 | Yes |
Bullish fakey | 100%* | 53% | $392.26 | Up | 4 | Yes |
Bullish fakey | 100%* | 53% | $334.91 | Down | 4 | Yes |
Wide ranging day upside reversal | 89% | 51% | $348.19 | Down | 1 | Yes |
Bearish fakey (with upward breakouts) | 100%* | 48% | $369.78 | Up | 4 | Yes |
Bearish fakey (with upward breakouts) | 100%* | 48% | $295.53 | Down | 4 | Yes |
Closing price reversal, uptrend | 15% | 45% | $177.69 | Up | 1 | Yes |
3-Bar | 87% | 44% | $256.66 | Up | 3 | Yes |
3-Bar | 87% | 44% | $180.87 | Down | 3 | No |
2-Dance | 51% | 44% | $136.43 | Up | 2 | No |
2-Dance | 51% | 44% | $224.85 | Down | 2 | Yes |
3L-R | 70% | 44% | $282.20 | Up | 4 | No |
3L-R | 70% | 44% | $151.02 | Down | 4 | No |
Closing price reversal, downtrend | 84% | 44% | $154.44 | Down | 1 | Yes |
2-Close, bullish | 74% | 43% | $173.84 | Up | 3 | No |
2-Close, bullish | 74% | 43% | $170.38 | Down | 3 | No |
Pivot point reversal, downtrend | 82% | 43% | $178.34 | Down | 2 | Yes |
3DC | 49% | 42% | $199.98 | Up | 3 | No |
3DC | 49% | 42% | $105.73 | Down | 3 | No |
Inside days | 49% | 42% | $156.42 | Up | 2 | No |
Inside days | 49% | 42% | $82.96 | Down | 2 | No |
Key reversal, uptrend | 15% | 42% | $116.06 | Up | 2 | No |
Narrow range 4 | 50% | 42% | $249.56 | Up | 4 | No |
Narrow range 4 | 50% | 42% | $88.00 | Down | 4 | No |
Narrow range 7 | 51% | 42% | $252.04 | Up | 7 | No |
Narrow range 7 | 51% | 42% | $119.82 | Down | 7 | No |
Outside days | 50% | 42% | $156.46 | Up | 2 | No |
Outside days | 50% | 42% | $78.15 | Down | 2 | No |
2-Close, bearish | 31% | 41% | $296.56 | Up | 3 | Yes |
2-Close, bearish | 31% | 41% | $27.75 | Down | 3 | No |
Pivot point reversal, uptrend | 17% | 41% | $242.88 | Up | 2 | Yes |
Turn-key, bullish | 70% | 41% | $248.20 | Up | 4 | No |
Turn-key, bullish | 70% | 41% | ($134.72) | Down | 4 | No |
Shark-32 | 46% | 40% | $79.76 | Up | 3 | No |
Shark-32 | 46% | 40% | $121.40 | Down | 3 | No |
Hook reversal, downtrend | 64% | 39% | ($24.75) | Down | 2 | No |
Hook reversal, uptrend | 31% | 39% | $78.72 | Up | 2 | No |
Inverted 3L-R | 31% | 37% | $234.00 | Up | 4 | No |
Inverted 3L-R | 31% | 37% | $31.81 | Down | 4 | No |
Key reversal, downtrend | 84% | 37% | $65.91 | Down | 2 | No |
This is the benchmark performance in cryptocurrency. Selection and trading is the same as described for the stock benchmark except I picked from cryptocurrencies.
Pattern | % Up Breakout | Hit 2x Target | Average Profit/Trade | Inbound Trend Direction | Price Bars |
1 bar benchmark | 51% | 45% | $146.81 | Up | 1 |
1 bar benchmark | 51% | 45% | $122.37 | Down | 1 |
1 bar benchmark, delayed | 50% | 54% | $152.49 | Up | 1 |
1 bar benchmark, delayed | 50% | 54% | $112.00 | Down | 1 |
2 bar benchmark | 51% | 43% | $214.65 | Up | 2 |
2 bar benchmark | 51% | 43% | $147.18 | Down | 2 |
2 bar benchmark, using weekly data | 58% | 55% | $648.76 | Up | 2 |
2 bar benchmark, using weekly data | 58% | 55% | $537.68 | Down | 2 |
3 bar benchmark | 49% | 43% | $224.62 | Up | 3 |
3 bar benchmark | 49% | 43% | $209.61 | Down | 3 |
3 bar benchmark, using weekly data | 58% | 53% | $630.42 | Up | 3 |
3 bar benchmark, using weekly data | 58% | 53% | $765.20 | Down | 3 |
4 bar benchmark | 48% | 45% | $358.38 | Up | 4 |
4 bar benchmark | 48% | 45% | $250.23 | Down | 4 |
7 bar benchmark | 54% | 45% | $320.01 | Up | 7 |
7 bar benchmark | 54% | 45% | $253.40 | Down | 7 |
The "1 bar benchmark, delayed" line is for the one-day reversal pattern. That is a one-bar pattern but I also included the adjacent bars (one on each side) for pattern recognition. For testing, the entry and exit prices were based on the middle bar only (the ODR), but entry was delayed a day to make it a fair comparison. To be clear, we have the ODR (bottom, but it also applies to tops), a higher low the next day and then we look for entry starting the following day.
For cryptocurrency, the ODR top and bottom patterns did not have enough samples (trades) to report, so the delayed line in the table wasn't used.
-- Thomas Bulkowski
Support this site! Clicking any of the books (below) takes you to
Amazon.com If you buy ANYTHING while there, they pay for the referral.
Legal notice for paid links: "As an Amazon Associate I earn from qualifying purchases."
My Stock Market Books
|
My Novels
|