# Unusual Options Metric (Option Chain Column) For ThinkOrSwim

#### StoneMan

##### Member
Plus

Hey everyone. I created a metric to judge unusual options activity that works as a column. Here is the code:
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = VALR * volOI * DvolumeRatio * 1000;

plot WhalePlot = WhaleScore;``````

Here is the logic behind the calculations:

def Leverage: We begin by multiplying the Delta of a contract by the price of the underlying to get how many dollars worth of the underlying one contract controls. Using the amount of dollars controlled per contract normalizes the measurement so it can be compared between instruments.

def LeverageRatio: We divide the dollar volume controlled per contract by the dollar amount of that contract. This gives us a unitless ratio that is how many dollars worth of the underlying you are controlling per dollar spent on the contract. This alone could be a useful metric.

def VALR: We multiply the LeverageRatio by the implied volitility (IVol) of the underlying instrument. This is done to normalize the value because low implied volitility instruments naturally allow for more leverage in their options contracts than high ones. So now all instruments dollar leverage per contract should be on an even playing field. This metric is still unitless.

def volOI: volume to open interest ratio. This is the classic metric considered when hunting for unusual options and is very important.

def DvolumeOpt: Dollar volume traded in the option contract, just multiplying option price by volume. Keeping to the theme of normalizing to dollars so we can better compare instruments.

def DvolumeUnd: Dollar volume traded in the underlying, just multiplying underlying price by underlying volume. Keeping to the theme of normalizing to dollars so we can better compare instruments.

def DvolumeRatio: Ratio of money spent on the option contract to the whole of the underlying. Represents underlyings capacity to absorb options activity. Higher values show that contract has more impact on the underlying by representing a higher proportion of liquidity. A problem I've noticed with other unusual options scanners is tickers like SPY and AAPL always showing lots of "unusual activity" due to massive dollar volumes traded at given strikes. Relative to the liquidity of SPY and AAPL the activity is actually not that unusual. This ratio is how we account for differing levels of liquidity across instruments.

Def WhaleScore: Our final unusual options activity metric, we get it by multiplying three ratios. The unitless metric VALR which measures how many dollars worth of the underlying you are controlling per dollar spent on a contract on a volitility adjusted basis. Higher values equate to more risk (and therefore more conviction) by naturally prioritizing out of the money high risk plays. Volume to open interest ratio shows money being put where it wasn't previously. DvolumeRatio shows the amount of money spent on the option contract relative to the whole of the underlying. Higher values are more unusual as it means option contract spend is a higher proportion of the total liquidity. All of these metrics are multiplied together to get a value where the farther you are from zero the more "unusual" the activity. Multiplying by 1000 is just to make the output more user friendly to display in the columns.

Note: In the thinkorswim implementation WhaleScore positive values are calls and negative values are puts due to the delta value being positive or negative depending on put or call designation.

And here is the thread where I ask questions on how it can be improved so those discussions can be had there:

Repeated lots of stuff from that thread here, sorry for doing these posts a bit haphazardly. Play with it and let me know what you think!

Last edited by a moderator:
Really like this. Was looking for some cool custom watchlist columns this past week and this one definitely hits the spot. Need more if anyone else has some cool ones they'd like to share!

Nice work good sir... Added some pretty colors and rounded to whole number...
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = round(VALR * volOI * DvolumeRatio * 1000,0);

plot WhalePlot = WhaleScore;
addlabel(yes, whalescore, if (WHALESCORE >=2100) then Color.black
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.white
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.white
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.white
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.white
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.white
else if WHALESCORE <-2100 then Color.black
else Color.dark_GRAY);

AssignBackgroundColor(
if (WHALESCORE >=2100) then Color.cyan
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.dark_green
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.gray
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.gray
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.gray
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.dark_green
else if WHALESCORE <-2100 then Color.cyan
else Color.dark_GRAY);``````

Last edited by a moderator:
yup, to whom it may concern this + Volume 2X open interest as % is the real deal.... thank you for your service

Would anyone be interested in creating a study filter for the options hacker where the absolute value of WhaleScore has to be greater than 10? I think this would be the best way to reduce noise in those scan results.

I also just wanted to make a public note that the most heavily weighted parameter in WhaleScore is the volume to open interest ratio. If you want to reduce that weighting so the algo focuses less on flow into super low OI contracts square root the OpenInterest variable. So this line now looks like:

def volOI = volume / sqrt(OpenInterest);

Nice work good sir... Added some pretty colors and rounded to whole number...
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = round(VALR * volOI * DvolumeRatio * 1000,0);

plot WhalePlot = WhaleScore;
addlabel(yes, whalescore, if (WHALESCORE >=2100) then Color.black
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.white
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.white
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.white
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.white
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.white
else if WHALESCORE <-2100 then Color.black
else Color.dark_GRAY);

AssignBackgroundColor(
if (WHALESCORE >=2100) then Color.cyan
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.dark_green
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.gray
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.gray
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.gray
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.dark_green
else if WHALESCORE <-2100 then Color.cyan
else Color.dark_GRAY);``````

Your setup looks great. I was wondering if you could share the volume x2 script? I've searched and searched for it with no luck.

Thanks

Your setup looks great. I was wondering if you could share the volume x2 script? I've searched and searched for it with no luck.

Thanks
It’s top secret sir… Jay kay… I will though not around my computer. Search volume open interest you will find it… but I’ll share mine when I can.

Your setup looks great. I was wondering if you could share the volume x2 script? I've searched and searched for it with no luck.

Thanks
@StoneMan Hi bro, I think should be this - plot data = volume()/open_interest();

However, inorder to input this to the option chain the TF must be in daily. All the best!

Nice work good sir... Added some pretty colors and rounded to whole number...
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = round(VALR * volOI * DvolumeRatio * 1000,0);

plot WhalePlot = WhaleScore;
addlabel(yes, whalescore, if (WHALESCORE >=2100) then Color.black
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.white
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.white
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.white
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.white
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.white
else if WHALESCORE <-2100 then Color.black
else Color.dark_GRAY);

AssignBackgroundColor(
if (WHALESCORE >=2100) then Color.cyan
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.dark_green
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.gray
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.gray
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.gray
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.dark_green
else if WHALESCORE <-2100 then Color.cyan
else Color.dark_GRAY);``````

Hello, I got the Option score column, but how do I get the rest of the columns, the ones you have with the colored backgrounds? and once I put the code in what time frame should it be set to daily?

Hey everyone. I created a metric to judge unusual options activity that works as a column. Here is the code:
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = VALR * volOI * DvolumeRatio * 1000;

plot WhalePlot = WhaleScore;``````

Here is the logic behind the calculations:

def Leverage: We begin by multiplying the Delta of a contract by the price of the underlying to get how many dollars worth of the underlying one contract controls. Using the amount of dollars controlled per contract normalizes the measurement so it can be compared between instruments.

def LeverageRatio: We divide the dollar volume controlled per contract by the dollar amount of that contract. This gives us a unitless ratio that is how many dollars worth of the underlying you are controlling per dollar spent on the contract. This alone could be a useful metric.

def VALR: We multiply the LeverageRatio by the implied volitility (IVol) of the underlying instrument. This is done to normalize the value because low implied volitility instruments naturally allow for more leverage in their options contracts than high ones. So now all instruments dollar leverage per contract should be on an even playing field. This metric is still unitless.

def volOI: volume to open interest ratio. This is the classic metric considered when hunting for unusual options and is very important.

def DvolumeOpt: Dollar volume traded in the option contract, just multiplying option price by volume. Keeping to the theme of normalizing to dollars so we can better compare instruments.

def DvolumeUnd: Dollar volume traded in the underlying, just multiplying underlying price by underlying volume. Keeping to the theme of normalizing to dollars so we can better compare instruments.

def DvolumeRatio: Ratio of money spent on the option contract to the whole of the underlying. Represents underlyings capacity to absorb options activity. Higher values show that contract has more impact on the underlying by representing a higher proportion of liquidity. A problem I've noticed with other unusual options scanners is tickers like SPY and AAPL always showing lots of "unusual activity" due to massive dollar volumes traded at given strikes. Relative to the liquidity of SPY and AAPL the activity is actually not that unusual. This ratio is how we account for differing levels of liquidity across instruments.

Def WhaleScore: Our final unusual options activity metric, we get it by multiplying three ratios. The unitless metric VALR which measures how many dollars worth of the underlying you are controlling per dollar spent on a contract on a volitility adjusted basis. Higher values equate to more risk (and therefore more conviction) by naturally prioritizing out of the money high risk plays. Volume to open interest ratio shows money being put where it wasn't previously. DvolumeRatio shows the amount of money spent on the option contract relative to the whole of the underlying. Higher values are more unusual as it means option contract spend is a higher proportion of the total liquidity. All of these metrics are multiplied together to get a value where the farther you are from zero the more "unusual" the activity. Multiplying by 1000 is just to make the output more user friendly to display in the columns.

Note: In the thinkorswim implementation WhaleScore positive values are calls and negative values are puts due to the delta value being positive or negative depending on put or call designation.

And here is the thread where I ask questions on how it can be improved so those discussions can be had there:

Repeated lots of stuff from that thread here, sorry for doing these posts a bit haphazardly. Play with it and let me know what you think!
Do I save this as the code for one custom column or define multiple custom columns?

Last edited:
Hello, I got the Option score column, but how do I get the rest of the columns, the ones you have with the colored backgrounds? and once I put the code in what time frame should it be set to daily?
I’ll post the link when I can. They’re all from this forum though search these if you so choose
1. Percent Change Last
2. Change Open Interest (%)
3. Volume 2x Open interest
4. MAMA (in the confirmation trend chart setup thread)
5. How Much To Move

Nice work good sir... Added some pretty colors and rounded to whole number...
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = round(VALR * volOI * DvolumeRatio * 1000,0);

plot WhalePlot = WhaleScore;
addlabel(yes, whalescore, if (WHALESCORE >=2100) then Color.black
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.white
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.white
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.white
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.white
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.white
else if WHALESCORE <-2100 then Color.black
else Color.dark_GRAY);

AssignBackgroundColor(
if (WHALESCORE >=2100) then Color.cyan
else if WHALESCORE >=1000 and WHALESCORE<2100 then Color.dark_green
else if WHALESCORE <1000 and  WHALESCORE >=100 then Color.gray
else if WHALESCORE <100 and  WHALESCORE >=0 then Color.gray
else if WHALESCORE <0 and  WHALESCORE >=-100 then Color.gray
else if WHALESCORE <-100 and  WHALESCORE >=-1000 then Color.dark_green
else if WHALESCORE <-2100 then Color.cyan
else Color.dark_GRAY);``````

How would I import this please?

Hi Stoneman,
Sorry for the confusion but could you provide a little more detail/pictures on how you use this and get this set up? As a watchlist column all I get is NaN and as an options hacker scan I can get a Whale numbers column but curious what your scan parameters/filters are in the Option Hacker scan.
thanks

HODL,
Can you post a picture of a simple option hacker scan page setup with Whale results?. I cant seem to get any results to show in my attempts to get set up. I can duplicate your option page you enclosed though.
thanks

Last edited by a moderator:
I also just wanted to make a public note that the most heavily weighted parameter in WhaleScore is the volume to open interest ratio. If you want to reduce that weighting so the algo focuses less on flow into super low OI contracts square root the OpenInterest variable. So this line now looks like:

def volOI = volume / sqrt(OpenInterest);

Just wanted to thank you and also for anyone using this, SQRT(openinterest) is working better with QQQ for 0/1 DTE and gives a quite a nice direction for Tsla weekly options

Hey everyone. I created a metric to judge unusual options activity that works as a column in the options hacker. Here is the code:
Code:
``````#Defining variables

def Delta = Delta();

def Ivol = imp_volatility(GetUnderlyingSymbol());

def OptionMarkPrice = close;

def UnderlyingPrice = close(getUnderlyingSymbol());

def UnderlyingVolume = volume(getUnderlyingSymbol());

#V.A.L.R - Volitility Adjusted Leverage Ratio

def Leverage = (Delta * UnderlyingPrice);

def LeverageRatio = Leverage / OptionMarkPrice;

def VALR = LeverageRatio * Ivol;

#Volume to open interest ratio (if statement pervents divide by zero errors)

def OpenInterest = if open_interest(period = AggregationPeriod.DAY) == 0 then 1 else open_interest(period = AggregationPeriod.DAY);

def volOI = volume / OpenInterest;

def DvolumeOpt = volume * ohlc4 * 100;

def DvolumeUnd = UnderlyingPrice * UnderlyingVolume;

def DvolumeRatio = DvolumeOpt / DvolumeUnd;

#Multiply by 1000 so output better displays in the columns

def WhaleScore = VALR * volOI * DvolumeRatio * 1000;

plot WhalePlot = WhaleScore;``````

Here is the logic behind the calculations:

def Leverage: We begin by multiplying the Delta of a contract by the price of the underlying to get how many dollars worth of the underlying one contract controls. Using the amount of dollars controlled per contract normalizes the measurement so it can be compared between instruments.

def LeverageRatio: We divide the dollar volume controlled per contract by the dollar amount of that contract. This gives us a unitless ratio that is how many dollars worth of the underlying you are controlling per dollar spent on the contract. This alone could be a useful metric.

def VALR: We multiply the LeverageRatio by the implied volitility (IVol) of the underlying instrument. This is done to normalize the value because low implied volitility instruments naturally allow for more leverage in their options contracts than high ones. So now all instruments dollar leverage per contract should be on an even playing field. This metric is still unitless.

def volOI: volume to open interest ratio. This is the classic metric considered when hunting for unusual options and is very important.

def DvolumeOpt: Dollar volume traded in the option contract, just multiplying option price by volume. Keeping to the theme of normalizing to dollars so we can better compare instruments.

def DvolumeUnd: Dollar volume traded in the underlying, just multiplying underlying price by underlying volume. Keeping to the theme of normalizing to dollars so we can better compare instruments.

def DvolumeRatio: Ratio of money spent on the option contract to the whole of the underlying. Represents underlyings capacity to absorb options activity. Higher values show that contract has more impact on the underlying by representing a higher proportion of liquidity. A problem I've noticed with other unusual options scanners is tickers like SPY and AAPL always showing lots of "unusual activity" due to massive dollar volumes traded at given strikes. Relative to the liquidity of SPY and AAPL the activity is actually not that unusual. This ratio is how we account for differing levels of liquidity across instruments.

Def WhaleScore: Our final unusual options activity metric, we get it by multiplying three ratios. The unitless metric VALR which measures how many dollars worth of the underlying you are controlling per dollar spent on a contract on a volitility adjusted basis. Higher values equate to more risk (and therefore more conviction) by naturally prioritizing out of the money high risk plays. Volume to open interest ratio shows money being put where it wasn't previously. DvolumeRatio shows the amount of money spent on the option contract relative to the whole of the underlying. Higher values are more unusual as it means option contract spend is a higher proportion of the total liquidity. All of these metrics are multiplied together to get a value where the farther you are from zero the more "unusual" the activity. Multiplying by 1000 is just to make the output more user friendly to display in the columns.

Note: In the thinkorswim implementation WhaleScore positive values are calls and negative values are puts due to the delta value being positive or negative depending on put or call designation.

Here is how to get it set up:

Select the cog in the filter. From there find one of the documents labeled Custom and select the scroll. This will open up the ThinkScript condition wizard window. Remove the default filter and select thinkscript next to it. Copy paste the code and name the program WhaleScore. Select OK. The select WhaleScore and add it to the filter. In the Sorted by section select personal/custom and select WhaleScore. You are now looking ready to scan. A higher number is more unusual! Order the contracts from highest to lowest WhaleScore values to put the most unusual contract activity at the top.

And here is the thread where I ask questions on how it can be improved so those discussions can be had there:

Repeated lots of stuff from that thread here, sorry for doing these posts a bit haphazardly. Play with it and let me know what you think!
Thanks for sharing the code. I am getting only "NaN" for the column. Thanks

https://pasteboard.co/XC7e5gSNmEVZ.png

87k+ Posts
368 Online

## The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
• Exclusive indicators
• Proven strategies & setups
• Private Discord community
• Exclusive members-only content
• 1 full year of unlimited support

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?