Weekly Lessons ·
2026-11-08 Weekly Lessons
Compare Gann's historical group ranges, then distinguish a planet's approach from its motion through longitude. Includes source-backed Monday applications.
🧠 Gann Lesson
A wide annual range is an opportunity screen, not a profit forecast.
In Chapter XVI of Truth of the Stock Tape, Gann asks readers to keep monthly high-and-low charts for several stocks in each group, as well as longer yearly records. He contrasts groups whose shares move 20 to 100 points in a year with groups confined to 5 or 10. The historical claim is about the amount of movement a trader could attempt to capture. It is not evidence that anyone captured the full range. His guesses about which industries would prosper next were forecasts made in his time, not instructions to buy those industries now. To compare modern groups with different price scales, add an editorial percentage-range column. Take each group's completed observation window, record its highest high and lowest low, and compute 100 times their difference divided by the low. If one proxy ranged from 50 to 90, its 40-point width is 80% of its low. Another ranged from 120 to 150: 30 points, or 25% of its low. The first offered a larger historical percentage span, not a known future gain. A completed range uses hindsight, so calculate it only from data already available when making the next inspection. Keep both the point width and percentage width; Gann's point-based examples and the modern normalization answer different questions.
Try it
Hypothetical completed-year group proxies had lows and highs of 50 and 90 for A, and 120 and 150 for B. Find each point width and width as a percentage of its low. Which had the larger historical percentage span, and does that prove a trade return?
Answer
A: 90 - 50 = 40 points; 100 × 40/50 = 80%. B: 150 - 120 = 30 points; 100 × 30/120 = 25%. A had the larger observed percentage range. Neither number is an achievable or predicted return.
Limits
High-to-low span ignores sequence, execution, spreads, fees, leverage, and downside. An ETF is a modern group proxy, not an instrument Gann studied. Percentage normalization is an editorial comparison, not his formula. A wide past range may reflect risk rather than a useful timing signal.
Source
W.D. Gann, Truth of the Stock Tape (1923), Chapter XVI, 'Position of Groups of Stocks,' printed pp. 88-89, especially p. 89 on annual point ranges (Internet Archive scan PDF pp. 109-110). Primary author scan and its OCR; historic sector predictions are quoted as dated opinions only. The percentage-range calculation is an editorial adaptation.
Today
For the November 8, 2026 Weekly Lessons edition, the authorized Monday catch-up uses November 9 completed daily bars. The latest 252 aligned valid full regular sessions run from 2025-11-04 through 2026-11-09. SPY, the broad-market comparator, has a high of $781.62, a low of $629.28, a $152.34 width, and a 24.209% normalized range. XLE, the energy-group proxy, has a high of $70.151, a low of $43.185, a $26.966 width, and a 62.443% normalized range. XLE exceeds SPY by 38.234 percentage points. The November 9 closes are SPY $752.69 and XLE $61.94, both assigned to the completed 16:00 America/New_York session close, 21:00 UTC. The shortened November 28 and December 24, 2025 sessions are excluded. April 20, 2026 is excluded from both proxies because the SPY source row has unavailable volume and identical OHLC fields. These are Nasdaq vendor-price ranges, not total returns, attainable trade returns, or timing signals. Percentage normalization and ETF proxies are editorial adaptations of Gann's group comparison. The 252 valid-session window is not an exact calendar year. SPY and XLE, Nasdaq historical ETF daily bars, 252 aligned completed full regular sessions, Latest session 2026-11-09T16:00:00-05:00: SPY range_pct = 100*(spy_high_usd-spy_low_usd)/spy_low_usd; XLE range_pct = 100*(xle_high_usd-xle_low_usd)/xle_low_usd; result = XLE range_pct - SPY range_pct = 38.23435851131673 percentage points, XLE minus SPY normalized historical range (inputs: common_full_sessions=252, spy_close_usd=752.69, spy_high_usd=781.62, spy_low_usd=629.28, spy_range_pct=24.208619374523266, spy_width_usd=152.34, xle_close_usd=61.94, xle_high_usd=70.151, xle_low_usd=43.185, xle_range_pct=62.442977885839994, xle_width_usd=26.966). Data source 1 Data source 2 Data source 3 Data source 4
🔮 Astrology Lesson
An approaching planet can still move forward in longitude.
Horizons quantity 20 measures distance along the observer-to-target line, rather than an angle across the sky. Its delta field is the apparent range in astronomical units. Its deldot field is the signed range rate in kilometers per second. Negative means the target approaches the observer; positive means it recedes. The manual specifies a light-time-aberrated apparent range, so retain the observer and correction convention with the numbers. A longitude rate answers a different question. It tracks how the sightline turns around a coordinate axis. A target can approach Earth while its apparent ecliptic longitude increases. Neither a negative range rate nor a zero range rate establishes retrograde motion or a longitude station. The November 2 lesson compared longitude motion with total angular sky motion. Both were angles per time. Here the new measurement is distance per time along the sightline. For a short interval, multiply range rate by elapsed seconds to estimate the signed range change, holding the rate constant. A synthetic rate of -12 km/s over 300 seconds gives -3,600 km. The minus sign describes decreasing distance, not decreasing longitude. For a longer interval, use successive range samples or a calculation that accounts for the changing rate. Do not silently replace a signed radial measurement with total speed or an angular rate.
Try it
Synthetic readings give range 200,000,000 km, constant range rate -12 km/s, and constant longitude rate +0.20 degrees/day. Over 300 seconds, compute the range change, final range, and longitude change in arcseconds. Does the negative range rate mean retrograde motion?
Answer
Range change = -12 x 300 = -3,600 km; final range = 199,996,400 km. Longitude change = 0.20 x 300/86,400 x 3,600 = +2.5 arcseconds. No. The target approaches the observer while its longitude increases in this synthetic example.
Limits
The constant-rate exercise is hypothetical. Horizons reports modeled apparent quantities, not a measured Doppler observation. A sampled apparent-range difference need not exactly equal an instantaneous printed rate times the interval. Keep the observer, units, light-time convention, and timestamps fixed. A synchronized BTC candle is a comparator, not evidence of planetary causation or a price forecast.
Source
NASA/JPL, Horizons System Manual, Definition of Observer Table Quantities, quantity 20, Target range & range rate relative to observer, fields delta and deldot; quantities 31 and 47 define the separate angular coordinates and sky-motion rate. Primary NASA/JPL Solar System Dynamics technical manual. The synthetic constant-rate worksheet is an editorial calculation, not a JPL observation or a market model.
Today
Monday retry observation, November 9, 2026 at 19:53 MST, equal to November 10 at 02:53 UTC. Mars has deldot = -14.5460906 km/s, so it is approaching Earth's center. Holding that endpoint rate for 60 seconds gives -872.7654360 km of estimated range change. The actual two printed apparent ranges differ by -872.719569 km; this separate finite difference is not forced to equal the rate estimate. Over the same minute its longitude increases 0.0003271 degrees, while total angular sky motion at the endpoint is 1.1780078 arcseconds/minute. The Coinbase BTC-USD bucket from 02:52 to 02:53 UTC closed at $74,835.21. That is the bucket's last trade, not a claim of an execution exactly at 02:53. The radial and angular measurements describe different motions; neither predicts BTC. JPL Horizons geocentric Mars quantity 20; Coinbase Exchange BTC-USD completed minute, As of 2026-11-10T02:53:00Z: range_rate_km_s * elapsed_seconds = -872.765436 km estimated range change over 60 seconds at constant endpoint rate (inputs: au_km=149597870.7, btc_candle_end_unix_seconds=1794279180, btc_candle_start_unix_seconds=1794279120, btc_close_usd=74835.21, elapsed_seconds=60, longitude_change_deg=0.0003271, longitude_deg=143.0708798, previous_longitude_deg=143.0705527, previous_range_au=1.35715267770325, range_au=1.35714684393326, range_rate_km_s=-14.5460906, sampled_range_change_km=-872.7195686575603, sampled_range_rate_km_s=-14.545326144292671, sky_motion_arcsec_min=1.1780078). Data source 1 Data source 2