SPX Weekly Expected Moves# SPX Weekly Expected Moves Indicator
A professional Pine Script indicator for TradingView that displays weekly expected move levels for SPX based on real options data, with integrated Fibonacci retracement analysis and intelligent alerting system.
## Overview
This indicator helps options and equity traders visualize weekly expected move ranges for the S&P 500 Index (SPX) by plotting historical and current week expected move boundaries derived from weekly options pricing. Unlike theoretical volatility calculations, this indicator uses actual market-based expected move data that you provide from options platforms.
## Key Features
### 📈 **Expected Move Visualization**
- **Historical Lines**: Display past weeks' expected moves with configurable history (10, 26, or 52 weeks)
- **Current Week Focus**: Highlighted current week with extended lines to present time
- **Friday Close Reference**: Orange baseline showing the previous Friday's close price
- **Timeframe Independent**: Works consistently across all chart timeframes (1m to 1D)
### 🎯 **Fibonacci Integration**
- **Five Fibonacci Levels**: 23.6%, 38.2%, 50%, 61.8%, 76.4% between Friday close and expected move boundaries
- **Color-Coded Levels**:
- Red: 23.6% & 76.4% (outer levels)
- Blue: 38.2% & 61.8% (golden ratio levels)
- Black: 50% (midpoint - most critical level)
- **Current Week Only**: Fibonacci levels shown only for active trading week to reduce clutter
### 📊 **Real-Time Information Table**
- **Current SPX Price**: Live market price
- **Expected Move**: ±EM value for current week
- **Previous Close**: Friday close price (baseline for calculations)
- **100% EM Levels**: Exact upper and lower boundary prices
- **Current Location**: Real-time position within the EM structure (e.g., "Above 38.2% Fib (upper zone)")
### 🚨 **Intelligent Alert System**
- **Zone-Aware Alerts**: Separate alerts for upper and lower zones
- **Key Level Breaches**: Alerts for 23.6% and 76.4% Fibonacci level crossings
- **Bar Close Based**: Alerts trigger on confirmed bar closes, not tick-by-tick
- **Customizable**: Enable/disable alerts through settings
## How It Works
### Data Input Method
The indicator uses a **manual data entry approach** where you input actual expected move values obtained from options platforms:
```pinescript
// Add entries using the options expiration Friday date
map.put(expected_moves, 20250613, 91.244) // Week ending June 13, 2025
map.put(expected_moves, 20250620, 95.150) // Week ending June 20, 2025
```
### Weekly Structure
- **Monday 9:30 AM ET**: Week begins
- **Friday 4:00 PM ET**: Week ends
- **Lines Extend**: From Monday open to Friday close (historical) or current time + 5 bars (current week)
- **Timezone Handling**: Uses "America/New_York" for proper DST handling
### Calculation Logic
1. **Base Price**: Previous Friday's SPX close price
2. **Expected Move**: Market-derived ±EM value from weekly options
3. **Upper Boundary**: Friday Close + Expected Move
4. **Lower Boundary**: Friday Close - Expected Move
5. **Fibonacci Levels**: Proportional levels between Friday close and EM boundaries
## Setup Instructions
### 1. Data Collection
Obtain weekly expected move values from options platforms such as:
- **ThinkOrSwim**: Use thinkBack feature to look up weekly expected moves
- **Tastyworks**: Check weekly options expected move data
- **CBOE**: Reference SPX weekly options data
- **Manual Calculation**: (ATM Call Premium + ATM Put Premium) × 0.85
### 2. Data Entry
After each Friday close, update the indicator with the next week's expected move:
```pinescript
// Example: On Friday June 7, 2025, add data for week ending June 13
map.put(expected_moves, 20250613, 91.244) // Actual EM value from your platform
```
### 3. Configuration
Customize the indicator through the settings panel:
#### Visual Settings
- **Show Current Week EM**: Toggle current week display
- **Show Past Weeks**: Toggle historical weeks display
- **Max Weeks History**: Choose 10, 26, or 52 weeks of history
- **Show Fibonacci Levels**: Toggle Fibonacci retracement levels
- **Label Controls**: Customize which labels to display
#### Colors
- **Current Week EM**: Default yellow for active week
- **Past Weeks EM**: Default gray for historical weeks
- **Friday Close**: Default orange for baseline
- **Fibonacci Levels**: Customizable colors for each level type
#### Alerts
- **Enable EM Breach Alerts**: Master toggle for all alerts
- **Specific Alerts**: Four alert types for Fibonacci level breaches
## Trading Applications
### Options Trading
- **Straddle/Strangle Positioning**: Visualize breakeven levels for neutral strategies
- **Directional Plays**: Assess probability of reaching target levels
- **Earnings Plays**: Compare actual vs. expected move outcomes
### Equity Trading
- **Support/Resistance**: Use EM boundaries and Fibonacci levels as key levels
- **Breakout Trading**: Monitor for moves beyond expected ranges
- **Mean Reversion**: Look for reversals at extreme Fibonacci levels
### Risk Management
- **Position Sizing**: Gauge likely price ranges for the week
- **Stop Placement**: Use Fibonacci levels for logical stop locations
- **Profit Targets**: Set targets based on EM structure probabilities
## Technical Implementation
### Performance Features
- **Memory Managed**: Configurable history limits prevent memory issues
- **Timeframe Independent**: Uses timestamp-based calculations for consistency
- **Object Management**: Automatic cleanup of drawing objects prevents duplicates
- **Error Handling**: Robust bounds checking and NA value handling
### Pine Script Best Practices
- **v6 Compliance**: Uses latest Pine Script version features
- **User Defined Types**: Structured data management with WeeklyEM type
- **Efficient Drawing**: Smart line/label creation and deletion
- **Professional Standards**: Clean code organization and comprehensive documentation
## Customization Guide
### Adding New Weeks
```pinescript
// Add after market close each Friday
map.put(expected_moves, YYYYMMDD, EM_VALUE)
```
### Color Schemes
Customize colors for different trading styles:
- **Dark Theme**: Use bright colors for visibility
- **Light Theme**: Use contrasting dark colors
- **Minimalist**: Use single color with transparency
### Label Management
Control label density:
- **Show Current Week Labels Only**: Reduce clutter for active trading
- **Show All Labels**: Full information for analysis
- **Selective Display**: Choose specific label types
## Troubleshooting
### Common Issues
1. **No Lines Appearing**: Check that expected move data is entered for current/recent weeks
2. **Wrong Time Display**: Ensure "America/New_York" timezone is properly handled
3. **Duplicate Lines**: Restart indicator if drawing objects appear duplicated
4. **Missing Fibonacci Levels**: Verify "Show Fibonacci Levels" is enabled
### Data Validation
- **Expected Move Format**: Use positive numbers (e.g., 91.244, not ±91.244)
- **Date Format**: Use YYYYMMDD format (e.g., 20250613)
- **Reasonable Values**: Verify EM values are realistic (typically 50-200 for SPX)
## Version History
### Current Version
- **Pine Script v6**: Latest version compatibility
- **Fibonacci Integration**: Five-level retracement analysis
- **Zone-Aware Alerts**: Upper/lower zone differentiation
- **Dynamic Line Management**: Smart current week extension
- **Professional UI**: Comprehensive information table
### Future Enhancements
- **Multiple Symbols**: Extend beyond SPX to other indices
- **Automated Data**: Integration with options data APIs
- **Statistical Analysis**: Success rate tracking for EM predictions
- **Additional Levels**: Custom percentage levels beyond Fibonacci
## License & Usage
This indicator is designed for educational and trading purposes. Users are responsible for:
- **Data Accuracy**: Ensuring correct expected move values
- **Risk Management**: Proper position sizing and risk controls
- **Market Understanding**: Comprehending options-based expected move concepts
## Support
For questions, issues, or feature requests related to this indicator, please refer to the code comments and documentation within the Pine Script file.
---
**Disclaimer**: This indicator is for informational purposes only. Trading involves substantial risk of loss and is not suitable for all investors. Past performance does not guarantee future results.
Sp500signals
Market Breadth - AsymmetrikMarket Breadth - Asymmetrik User Manual
Overview
The Market Breadth - Asymmetrik is a script designed to provide insights into the overall market condition by plotting three key indicators based on stocks within the S&P 500 index. It helps traders assess market momentum and strength through visual cues and is especially useful for understanding the proportion of stocks trading above their respective moving averages.
Features
1. Market Breadth Indicators:
- Breadth 20D (green line): Represents the percentage of stocks in the S&P 500 that are above their 20-day moving average.
- Breadth 50D (yellow line): Represents the percentage of stocks in the S&P 500 that are above their 50-day moving average.
- Breadth 100D (red line): Represents the percentage of stocks in the S&P 500 that are above their 100-day moving average.
2. Horizontal Lines for Context:
- Green line at 10%
- Lighter green line at 20%
- Grey line at 50%
- Light red line at 80%
- Dark red line at 90%
3. Background Color Alerts:
- Green background when all three indicators are under 20%, indicating a potential oversold market condition.
- Red background when all three indicators are over 80%, indicating a potential overbought market condition.
Interpreting the Indicator
- Market Breadth Lines: Observe the plotted lines to assess the percentage of stocks above their moving averages.
- Horizontal Lines: Use the horizontal lines to quickly identify important threshold levels.
- Background Colors: Pay attention to background colors for quick insights:
- Green: All indicators suggest a potentially oversold market condition (below 20).
- Red: All indicators suggest a potentially overbought market condition (above 80).
Troubleshooting
- If the indicator does not appear as expected, please contact me.
- This indicator works only on daily and weekly timeframes.
Conclusion
This Market Breadth Indicator offers a visual representation of market momentum and strength through three key indicators, helping you identify potential buying and selling zones.
Lorentzian Classification Strategy Based in the model of Machine learning: Lorentzian Classification by @jdehorty, you will be able to get into trending moves and get interesting entries in the market with this strategy. I also put some new features for better backtesting results!
Backtesting context: 2022-07-19 to 2023-04-14 of US500 1H by PEPPERSTONE. Commissions: 0.03% for each entry, 0.03% for each exit. Risk per trade: 2.5% of the total account
For this strategy, 3 indicators are used:
Machine learning: Lorentzian Classification by @jdehorty
One Ema of 200 periods for identifying the trend
Supertrend indicator as a filter for some exits
Atr stop loss from Gatherio
Trade conditions:
For longs:
Close price is above 200 Ema
Lorentzian Classification indicates a buying signal
This gives us our long signal. Stop loss will be determined by atr stop loss (white point), break even(blue point) by a risk/reward ratio of 1:1 and take profit of 3:1 where half position will be closed. This will be showed as buy.
The other half will be closed when the model indicates a selling signal or Supertrend indicator gives a bearish signal. This will be showed as cl buy.
For shorts:
Close price is under 200 Ema
Lorentzian Classification indicates a selling signal
This gives us our short signal. Stop loss will be determined by atr stop loss (white point), break even(blue point) by a risk/reward ratio of 1:1 and take profit of 3:1 where half position will be closed. This will be showed as sell.
The other half will be closed when the model indicates a buying signal or Supertrend indicator gives a bullish signal. This will be showed as cl sell.
Risk management
To calculate the amount of the position you will use just a small percent of your initial capital for the strategy and you will use the atr stop loss or last swing for this.
Example: You have 1000 usd and you just want to risk 2,5% of your account, there is a buy signal at price of 4,000 usd. The stop loss price from atr stop loss or last swing is 3,900. You calculate the distance in percent between 4,000 and 3,900. In this case, that distance would be of 2.50%. Then, you calculate your position by this way: (initial or current capital * risk per trade of your account) / (stop loss distance).
Using these values on the formula: (1000*2,5%)/(2,5%) = 1000usd. It means, you have to use 1000 usd for risking 2.5% of your account.
We will use this risk management for applying compound interest.
> In settings, with position amount calculator, you can enter the amount in usd of your account and the amount in percentage for risking per trade of the account. You will see this value in green color in the upper left corner that shows the amount in usd to use for risking the specific percentage of your account.
> You can also choose a fixed amount, so you will have to activate fixed amount in risk management for trades and set the fixed amount for backtesting.
Script functions
Inside of settings, you will find some utilities for display atr stop loss, break evens, positions, signals, indicators, a table of some stats from backtesting, etc.
You will find the settings for risk management at the end of the script if you want to change something or trying new values for other assets for backtesting.
If you want to change the initial capital for backtest the strategy, go to properties, and also enter the commisions of your exchange and slippage for more realistic results.
In risk managment you can find an option called "Use leverage ?", activate this if you want to backtest using leverage, which means that in case of not having enough money for risking the % determined by you of your account using your initial capital, you will use leverage for using the enough amount for risking that % of your acount in a buy position. Otherwise, the amount will be limited by your initial/current capital
I also added a function for backtesting if you had added or withdrawn money frequently:
Adding money: You can choose how often you want to add money (Monthly, yearly, daily or weekly). Then a fixed amount of money and activate or deactivate this function
Withdraw money: You can choose if you want to withdraw a fixed amount or a percentage of earnings. Then you can choose a fixed amount of money, the period of time and activate or deactivate this function. Also, the percentage of earnings if you choosed this option.
Some other assets where strategy has worked
BTCUSD 4H, 1D
ETHUSD 4H, 1D
BNBUSD 4H
SPX 1D
BANKNIFTY 4H, 15 min
Some things to consider
USE UNDER YOUR OWN RISK. PAST RESULTS DO NOT REPRESENT THE FUTURE.
DEPENDING OF % ACCOUNT RISK PER TRADE, YOU COULD REQUIRE LEVERAGE FOR OPEN SOME POSITIONS, SO PLEASE, BE CAREFULL AND USE CORRECTLY THE RISK MANAGEMENT
Do not forget to change commissions and other parameters related with back testing results!. If you have problems loading the script reduce max bars back number in general settings
Strategies for trending markets use to have more looses than wins and it takes a long time to get profits, so do not forget to be patient and consistent !
Please, visit the post from @jdehorty called Machine Learning: Lorentzian Classification for a better understanding of his script!
Any support and boosts will be well received. If you have any question, do not doubt to ask!