Proven Stock Screens Earn 20%+ Annual Returns

Consistently picking individual stocks that will generate excess returns is hard, but most investors make it much more difficult than necessary.  There are a number of simple, fundamental stock screens that have generated historical returns of 20% to 40% per year. This article will document the results for several of these screens and explain how they could be used in practice.  If you buy individual stocks, the screening information described below should help you significantly enhance your investment process and improve your future returns.

Stock Screens

Stock screens are objective sets of criteria or rules that are used to create lists of stocks.  Only stocks meeting the criteria are included in the lists.  To calculate the historical performance of a stock screen, a rebalancing frequency is also required.  Most screens are rebalanced weekly or monthly.  Higher frequency screens obviously generate additional transaction costs, but are also much more responsive to changing market conditions.   A new list of stocks is generated on each rebalancing date.  Stocks that no longer meet the screening criteria are removed from the list and sold.  When new stocks meet the criteria for the first time, they are added to the list and purchased.

Many of my previous posts have focused on technical analysis, but the stock screens that I will discuss today are based on fundamental criteria, which is typically derived from a company's balance sheet or income statement.  The concept of stock screens is simple, but finding fundamental criteria that generate excess returns is the hard part.

In addition, there are very few research platforms that offer the capability to calculate historical performance results for user-specified fundamental screening criteria.  The few services that do exist often charge subscription fees of several thousand dollars per year, which exceeds the research budget for most individual investors. These services are expensive because they require a vast amount of fundamental data for every company (every major balance sheet and income statement item for every historical period).

Fortunately, you do not need to create your own screens from scratch.  I will describe several stock screens below that have all generated compound annual returns (CAR) of at least 20% over ten or more years.

Zacks Screens

Zacks Investment Research has been a leading provider of equity research for institutional and individual investors since 1978.  They are famous for their proprietary classification system called the Zacks Rank.  While Zacks does not disclose the exact formula for their secret sauce, the Zacks Rank is based on changes in earnings estimates.  The concept is simple: stocks with increasing earnings estimates outperform stocks with stable or decreasing earnings estimates.

Kevin Matras is a vice president at Zacks Investment Research and is Zacks leading expert on stock screens.  For much of his screening research, he uses Zacks Research Wizard, which is a powerful tool that allows users to access Zacks most successful stock-picking strategies and to develop and backtest custom strategies using over 650 different variables.

As I mentioned earlier, these types of services can be expensive for individual investors.  Fortunately, Matras recently wrote a book titled Finding #1 Stocks, where he provided detailed descriptions and results for a number of very profitable stock screens.  He was kind enough to permit me to explain the rules for several of these screens and to document their historical results in this article.

All of the data for the Zacks screens in this post comes from Matras's book Finding #1 Stocks.  All of the Zacks screens discussed in this article can be created with a Zacks Premium Subscription.  This service is currently offered for approximately $200 per year and Zacks typically offers discounts for multi-year subscriptions.  Please use the following link if you would like to register for a free 30-day trial to Zacks Premium Service.

Zacks Rank

A common element in all of the Zacks screens presented below is the Zacks Rank.  Zacks ranks stocks from #1 (Strong Buy) to #5 (Strong Sell).  The top 5% of the stocks earn a Zacks #1 ranking and the bottom 5% of stocks receive a Zacks #5 ranking.  60% of the stocks receive a Zacks #3 Rank (Hold).  While this classification is called a "hold," it really means that these stocks should perform in line with the market.   The remaining stocks are split evenly between Zacks #2 (Buy) and Zacks #4 (Sell).

We can look at each of the five Zacks Ranks as an individual stock screen and calculate the historical returns for each group over time.  The following table shows the compound annual returns (CAR) for each of the Zacks Ranks from 1988 through June 2010 (excluding commissions and transaction costs).  The average annual return for the S&P 500 was 8.86% for the same period.

Figure 1: Zacks Rank Study

Zacks #1 Rank stocks returned an astounding 27.27% per year for this 20+ year period, outperforming the S&P 500 by almost 20% per year.  The high correlation between the Zacks Rank and the compound annual returns is even more impressive.   I regressed the CAR against the Zacks Rank (using the five group data points above) and the results were highly significant, with an adjusted R-squared of 94%.

Unfortunately, simply buying Zacks #1 Rank stocks is not a practical investment strategy.  There are over 200 Zacks #1 Rank stocks at any point in time.  However, there are still many ways to use the Zacks Rank in our investment process.  If we wanted to create a new strategy, we could start by simply limiting our universe of prospective stocks to Zacks #1 Rank stocks, or possibly Zacks #1 and #2 Rank stocks.  We would be choosing from a list of stocks that has historically outperformed the market by 10% to 20% per year. This is not a bad start, but thanks to Kevin Matras's book, we can do even better.

Price to Cash Flow

In addition to the long-term results for the Zacks Rank, Matras also created and tested a number of fundamental stock screens for the period February 2000 to February 2010.  He identified several variables that were highly correlated with excess returns.  One of these variables was price to cash flow (P/CF).

This variable represents the price per share of the stock divided by the cash flow per share generated by the company.  A P/CF value of ten means that we would be paying $10 for every $1 of cash flow.  A P/CF value of 50 means that we would be paying $50 for every $1 of cash flow.  While a higher growth rate could potentially justify a higher P/CF ratio, the compound annual returns in Figure 2 below clearly demonstrate the benefits of buying stocks with a P/CF ratio of ten or less.

Figure 2: Zacks PCF Study

If we limited our purchases to Zacks #1 Rank stocks with a P/CF ratio of ten or less, we would have earned a return of 34.7% from 2/2000 to 2/2010, which doubled the return of the best P/CF group alone.  The 34.7% compound annual return was earned over a period that included two recessions, including the market meltdown in 2008, making the results for this stock screen even more impressive.

This would be considered a value screen, which is used to identify undervalued stocks.  However, when we add the Zacks #1 Ranking, we would be purchasing undervalued stocks with increasing earning estimates - a very powerful combination.

To test the significance of these results, I regressed the CAR against the mid-point of the P/CF ranges and used a dummy variable for the Zacks Rank.  Again, the results of the regression (on the six group data points above) were highly significant with an adjusted R-squared of  99%, demonstrating the importance of P/CF and the Zacks #1 Ranking.

If we created a new strategy from a universe of Zacks #1 Rank stocks with a P/CF ratio below ten, our odds of beating the market would increase dramatically.  Or, what if we added an additional filter to our existing stock-picking strategies to eliminate all stocks with a P/CF ratio above 30?  As you can see in Figure 2 above, that group of stocks actually lost value over the 10-year period.   While some of these stocks will do well, the entire group will probably lag the market.  There are thousands of stocks to choose from. Why try to choose the few winners out of a group of likely losers?

Price to Earnings

The next explanatory variable that Matras identified is the price to earnings ratio (P/E).  The P/E ratio is another value metric.  All things being equal, we would prefer to pay less for each dollar of current earnings.  However, stocks represent ownership claims on all future earnings, which will eventually be paid out in the form of dividends.  Companies with rapidly growing earnings will generate greater future earnings per dollar of current earnings, which can justify higher P/E ratios.

If the growth projections are high enough, P/E ratios can climb to 50 or more.  Often, these companies are priced for perfection.  When these companies stumble, their stock prices can plummet.  The compound annual returns in Figure 3 below clearly demonstrate the benefits of buying stocks with a P/E ratio of 20 or less.

Zacks PE Study

Figure 3: Zacks PE Study

If we limited our purchases to Zacks #1 Rank stocks with a P/E ratio of 20 or less, we would have earned a return of 26.2% from 2/2000 to 2/2010, which was almost 10% higher than the CAR of the best P/E group by itself.

To test the significance of the results, I regressed the CAR against the mid-point of the P/E ranges and used a dummy variable for the Zacks Rank.  The results of the regression (on the six group data points above) were highly significant with an adjusted R-squared of  98%, confirming the importance of P/E and the Zacks #1 Ranking.

Price to Book, Price to Sales, and PEG Ratios

Matras provided three additional value screens based on three other value metrics: the price to book ratio (P/B), the price to sales ratio (P/S), and the PEG ratio.  The P/B ratio and the P/S ratios are self explanatory.  As was the case with the P/CF and P/E ratios, cheaper stocks have lower P/B and lower P/S ratios.

The PEG ratio is the P/E ratio divided by the earnings growth rate.  As I explained above, companies with higher growth rates should have higher P/E ratios.   The PEG ratio attempts to adjust for this fact by dividing the P/E ratio by the earnings growth rate.  The resulting PEG ratio should be comparable across companies with a wide range of growth rates.

The results for all three screening methods are provided in Figures 4, 5, and 6 below.

Figure 4: Zacks PS Study

If we limited our purchases to Zacks #1 Rank stocks with a P/S ratio of 1.0 or less, we would have earned a return of 33.9% from 2/2000 to 2/2010, which was over 16% higher than the CAR of the best P/S group alone.  Stocks with a P/S ratio above 4.0 earned a compound annual return of -7.9% for the period.  The results of the regression (on the six group data points above) were highly significant with an adjusted R-squared of  96%.

Figure 5: Zacks PB Study

If we limited our purchases to Zacks #1 Rank stocks with a P/B ratio of 2.0 or less, we would have earned a return of 31.3% from 2/2000 to 2/2010, which was almost 20% higher than the CAR of the best P/B group alone.  Stocks with a P/B ratio above 5.0 earned a compound annual return of -2.7% for the period.  The results of the regression (on the six group data points above) were highly significant with an adjusted R-squared of  99%.

Figure 6: Zacks PEG Study

If we limited our purchases to Zacks #1 Rank stocks with a PEG ratio of 1.0 or less, we would have earned a return of 26.0% from 2/2000 to 2/2010, which was 7.8% higher than the CAR of the best PEG group without the Zacks #1 Rank requirement.  Groups of stocks with PEG ratios from 4.0 to 5.0 and above 5.0 both earned negative compound annual returns for the ten-year period.  The results of the regression (on the seven group data points above) were significant with an adjusted R-squared of  89%.

Combined Screen - Multiple Value Parameters

Using Zacks #1 Rank stocks with each of the value filters above was a very successful screening technique over the ten-year period above.  However, could we make some further improvements?  What if we required our prospective stocks to meet all of the value criteria above, instead of just one of the criteria? How would the combined value screen have performed?  Normally, we would need Zacks Research Wizard to answer this question, but Matras did this calculation for us as well.

Using weekly rebalancing, if we had invested in Zacks #1 Ranks stocks that satisfied each of the the top value criteria above, we would have earned a compound annual return of 45.8% over the same ten-year period (before commissions and transaction costs).  This strategy would have only held an average of six to seven stocks at at time.

When using strategies like this with limited diversification, it is important to restrict the amount of capital allocated to these strategies.  In addition, transaction costs and commissions would reduce the total return, especially when using one-week holding periods.  Nevertheless, 45.8% annually equates to a cumulative return of 4,241% over ten years.  Those are pretty amazing returns for a simple value screen.

Here are the actual rules used to create this screen:

  • Price >= $1
  • Average 20-Day Volume >= 100,000
  • Price to Cash Flow <= 10
  • P/E using F(1) Estimates <= 20
  • Price to Sales <=1
  • Price to Book <= 2
  • PEG < 1
  • Zacks Rank = 1
  • Weekly Rebalancing

Zacks Industry Ranking

The Zacks Rank is not limited to just individual stocks.  The Zacks Industry Ranking is the average Zacks Rank for all stocks in the industry.  While this is a simple concept, it generates excellent results.

For the period 2000 through 2009, Matras calculated the total return for the stocks in the top 50% of Zacks industries and the total return for the stocks in the bottom 50% of Zacks industries (using weekly rebalancing). The top 50% earned a cumulative return of 266.9%, while the bottom half earned a cumulative return of only 73.7% (nearly a 4 to 1 advantage).  What if we had invested in the top stocks (Zacks #1) in the top 50% of of all industries?  The cumulative return would have soared to 963.4%.

Again, you can replicate all of the above screens (and many others) with a subscription to Zacks Premium Service.  You can also use your Zacks Premium Subscription to create your own screens and even export the resulting security lists for use in other research platforms.  Finally, screening is only a small part of the Zacks Premium Service.  While Trading Insights, LLC is a member of Zacks affiliate program, I have been a paying Zacks customer for many years (long before this site existed) and I highly recommend Zacks and their research tools.

Other Screening Options

Zacks is not the only vender to offer screening tools.  The American Association of Individual Investors (AAII) offers screening software with an extensive database.  The product is called Stock Investor Pro (SI Pro) and is available for approximately $200 per year.  Weekly updates are included in the subscription fee and are available via download.

Unfortunately, SI Pro does not have a backtesting feature, which is not surprising for software costing only $200 per year.  However, AAII does report the historical results and the specific filtering criteria for 63 different stock screens that are available with SI Pro.  The results are updated annually in the January issue of the AAII Journal.  As a result, you could review the historical performance of every screen and choose the screen that best meets your investment needs.  You could even customize the screens or create your own, but you would not be able to determine how these changes would have affected the results.

Figure 7 below contains a list of some of the top-performing SI Pro screens for the past ten years.  The name of each screen is provided in addition to its category.  You will notice that some of the screens are based on the investment philosophies of some well known investment practitioners.  AAII distilled these philosophies into objective rules and used those rules to scan for stocks.

All of the SI Pro returns assume monthly rebalancing.  The 10-year compound annual return and the average number of holdings is also provided below for each screen.  The selected screens all generated returns between 20% and 30% per year.  For the same period, the S&P 500 index earned a return of only 0.90% per year.  All of the data in Figure 7 below were from Wayne A. Thorp's article "2011 Year-End Screening Review: A Difficult Year for Stocks and Strategies" in the January 2012 issue of the AAII Journal.

I also included one screen with poor performance to highlight the importance of earnings revisions.  Stocks that had earnings revisions of -5% or worse earned a ten-year compound annual return of -4.3%.  Stocks that had earnings revisions of +5% or better earned a ten-year compound annual return of 28.9%.  The returns for these two SI Pro earnings screens adds additional support for the Zacks Rank, which is also based on earnings revisions.

Figure 7: AAII SI Pro Study

Stock Screens in Practice

The screens presented in this article are only a small sample of the screens available through AAII's SI Pro or via Zacks Premium Service.  In addition, Kevin Matras describes a number of other profitable screens in his book Finding #1 Stocks.  Knowing the specific characteristics of stocks that have historically outperformed the market in the past will give you a significant security selection advantage in the future.

You could use one of the actual screens above, customize one of the above screens, or even create your own stock screen from scratch.  However, please remember that any time you change the criteria for a screen, you could adversely affect the performance of the screen.  The only way to know for sure is to run a new backtest with the new screening criteria.  If you do not have access to Zacks Research Wizard (or a similar tool), please use caution when modifying the criteria of a proven stock screen.

If your chosen screen has a small number of holdings, it could be possible to allocate a portion of your capital to the strategy and purchase every security on the list.  If your screen has a large number of holdings, you could use the list to create a stock universe of high performing stocks.  You could also combine the securities from several screens to create your stock universe.  You would then need to use additional technical and/or fundamental criteria to identity the best candidates in your universe. You would not know the historical performance of such a strategy, but at least you would be working from a group of stocks that had outperformed the market in the past.

Finally, you could continue to use your existing strategies, but incorporate what you have learned from the return studies presented in this article.  For example, here are a few exclusionary rules that you might consider adding to your stock-picking process:

Do not buy stocks that fall into any of the following categories:

  • Zacks #5 Rank
  • Bottom 20% of Zacks Industry Rankings
  • P/CF ratio above 30.0
  • P/E ratio above 40.0
  • P/S ratio above 4.0
  • P/B ratio above 4.0
  • PEG ratio above 3.0

If you buy individual stocks, using stock screening tools and the knowledge gained from those tools should greatly improve your performance in the future

Trader Edge Strategy E-Subscription Now Available: 20% ROR

The Trader Edge Asset Allocation Rotational (AAR) Strategy is a conservative, long-only, asset allocation strategy that rotates monthly among five large asset classes. The AAR strategy has generated 20%+ annual returns over the combined back and forward test period (1/1/1990 to 7/29/2013).  Please use the above link to learn more about the AAR strategy.


Your comments, feedback, and questions are always welcome and appreciated.  Please use the comment section at the bottom of this page or send me an email.

Do you have any questions about the material?  What topics would you like to see in the future?


If you found the information on www.TraderEdge.Net helpful, please pass along the link to your friends and colleagues or share the link with your social network.

The "Share / Save" button below contains links to all major social networks.  If you do not see your social network listed, use the down-arrow to access the entire list of social networking sites.

Thank you for your support.

Brian Johnson

Copyright 2012 - Trading Insights, LLC - All Rights Reserved.




About Brian Johnson

I have been an investment professional for over 30 years. I worked as a fixed income portfolio manager, personally managing over $13 billion in assets for institutional clients. I was also the President of a financial consulting and software development firm, developing artificial intelligence based forecasting and risk management systems for institutional investment managers. I am now a full-time proprietary trader in options, futures, stocks, and ETFs using both algorithmic and discretionary trading strategies. In addition to my professional investment experience, I designed and taught courses in financial derivatives for both MBA and undergraduate business programs on a part-time basis for a number of years. I have also written four books on options and derivative strategies.
This entry was posted in Fundamental Analysis, In-Depth Article, Security Selection, Stock Investor Pro, Stock Screens, Stocks & ETFs, Zacks and tagged , , , , , , , , , , , , , . Bookmark the permalink.

15 Responses to Proven Stock Screens Earn 20%+ Annual Returns

  1. Dave says:

    Hi Brian,

    Out of curiosity, did you try any random sampling of stocks from any of the screens, or get any feel for how many stocks from the screens would be required to represent the return of screen? If they are robust screens, I would imagine a smaller random sample of stocks from the 200 Zachs #1 rank stocks should perform on par with the whole 200. If not, then this would indicate perhaps 1 or 2 of the 200 generated most of the returns, and hence it is not so robust screen.

    • Dave,

      You have a valid point. Ideally we would be able to see the distribution of returns for all stocks in the screen. Still, given the positive effect of filtering the various value screens with Zacks #1 ranking and the explanatory power of the Zacks 1-5 ranks, that suggests the returns are probably not due to a few select stocks.

      In addition, I believe that the screens assume an equal weighting, which should reduce the effect of larger cap stocks. For example, even AAPL has an outsized effect on the NASDAQ 100 index returns.

      Unfortunately, the only way to get access to the historical returns for each individual stock in the screen is to use Zacks Research Wizard. I am still a Zacks Premium subscriber, but no longer subscribe to Zacks Research Wizard.

      You raise a good point, but the historical returns are still pretty compelling.

      Please let me know if I can answer any additional questions.


      Brian Johnson

  2. Hey Brian,
    I take your point, Did you know that most professional money managers do not beat the broad market? The majority of mutual fund managers actually underperform their benchmarks in the long and short term!

    • Unfortunately, it is true that most professional investment managers lag the market. However, with proven objective strategies and appropriate risk management rules, we can put the odds in our favor.

      Thanks for your interest in TraderEdge.Net.

      Best regards,

      Brian Johnson

  3. Ola! Brian,
    I know what you mean, Many people would love to have the same success with the stock market that Warren Buffet the famous investor now worth billions of dollars has experienced most of their life. Not only has Buffet managed to take control of plenty of companies, but he has also held plenty of positions within publicly traded companies and purchased many others making him one of the top shareholders of the last century. Of course, he had a slight advantage given that stock shares used to be worth a substantial amount less.
    I look forward to your next post

  4. Pingback: ECRI: "We're in a Recession" | Trader Edge

  5. Carl says:

    Hi Brian,

    take a look at

    their data is clean – no survivorship bias. I spoke to Zack’s years ago and they said they dropped the non-survivors. Their deep value screens look great because of the survivorship bias.

    nice thing with p123 is to create screens/ranks and use them as etf surrogates…. create your sector/value vs growth indices and track their relative strength. Early testing shows custom indices mean revert – eg – buy the worst performing ones.

    its a bit late and i’m a bit tired. I like your blog. I’ll be getting back into my Ami coding soon – look forward to sharing results.

    • Carl,

      I appreciate your interest in TraderEdge.Net. I checked the Zacks website found the following statement: “As of May, 2010, we have eliminated to the best of our ability the survivorship bias from from Dec 17, 1999 to the present in the DBCMHIST database.” If you spoke to Zacks several years ago, it appears that there may have been a survivorship bias in their database, but that seems to have been fixed. The value screen results in the post were from 2/00 to 2/10, so they should not contain any survivorship bias.

      I am not familiar with, but will check out their website. In my experience with relative strength strategies, depending on the time period used to calculate relative strength, the sectors may mean-revert, or the strongest sectors may continue to outperform. Short-term and long-term periods tend to revert to the mean, while intermediate-term periods tend to continue to move in the same direction as their relative strength. These patterns can be very helpful when constructing relative strength strategies.

      Thanks again for your comments.


      Brian Johnson

      • Sam says:

        I have used zacks research wizard for a while. These are the biggest issues with strategies using zacks 1 ranking.

        1. Strategies with best returns are almost impossible to buy at monday open for the friday close price.
        2. Those strategies usually have 1 week trading period. If you can not buy the stock at monday close, you will unlikely to be able to buy later in the week.
        3. Once you put the criteria for volume over 100k and price over $2, return goes down dramatically.
        4. There are few stocks that make a huge return skewing the average returns. If you can not buy that stock at friday close, the average return goes down 50% or more.

        Just my 2 cents.

        • Sam,

          Thanks for sharing your comments. A few years ago I subscribed to Zacks Research Wizard and experimented with several custom screens. During that process, I came to some of the same conclusions regarding Zacks rank for individual stocks. Most important, increasing the volume and price thresholds substantially decreases returns. As you illustrated, it can be very difficult to buy many of the thinly traded Zacks number 1 rank stocks. This is a significant issue.

          However, the Zacks Rank was only the icing on the cake in the article. The relative performance of stocks across the various value quintiles was eye-opening, even without the benefit of Zacks rank.

          Finally, the Zacks screens that I mentioned at the end of the article are all rebalanced monthly (instead of weekly). This would reduce transaction costs and portfolio turnover.

          Thanks again for your comments.

          Best regards,

          Brian Johnson

  6. Pingback: 11 Rules to Improve Your Trading: Rules 4 & 5 | Trader Edge

  7. Joseph says:

    In regards to Sam’s #1 issue how come you couldn’t just buy/rebalance on Friday near the end of the day instead of waiting until Monday, which should make your results closer to the backtested results. Is there something I’m missing?


    • Joseph,

      The issue is the timing and availability of the data. I no longer subscribe to Zacks screening tools, but if I remember correctly, Zacks updates their fundamental data weekly and those files are not available until over the weekend. Assuming I am correct, you would not be able to trade at Friday’s close.

      If you were using technical screens exclusively and had access to real-time data, then you certainly could run and trade systematic strategies shortly before the close. This is how I trade all of my strategies. In practice, this can be difficult to do, especially if you trade multiple strategies in several different markets.

      In addition, there is always the chance that the strategy signals based on the official closing prices could be different from the preliminary signals generated before the close. However, I still prefer this trading at the close to trading the following morning.

      Best regards,

      Brian Johnson

      Learn more about the Trader Edge Asset Allocation Rotational (AAR) Strategy: 20% Annual Returns.

  8. Len says:

    Do you know of a good, wide, catastrophic stop-loss (possibly based on something as simple as a major downturn triggering a selling of a position, or all positions, when a certain percentage of invested capital is reached); something that would activate in the event that a total market meltdown occurs again, without such a stop-loss affecting the underlying trade strategy no matter what it may be? I notice that even nobel-prize winning financial wizards sometimes fall on their faces when the market unexpectedly collapses, and lose their shirts. It seems weird to me that an avoidance of gigantic losses are often not even considered by so many of these brilliant minds. Maybe base this stop-loss on a certain percentage of drawdown, or some such thing: nothing tight, that would cause you to get stopped out during normal trading.

    • Len,

      One problem with stop loss orders is that the market must be open for them to execute. In addition, I typically use stop limit orders, which place a limit order when the stop trigger is hit. With stop limit orders, the price could potentially blow through the limit price, in which case the order would not be executed. I use text alerts to notify me when triggers are hit and I always manually confirm the order executed at the limit price or better. One could use stop market orders, but the market price could be completely unrealistic, which happened during the flash crash and stop market orders were executed for $0.01.

      If you are going to enter black swan type protective stops, I would use futures contracts that trade overnight, but you would still be unprotected over weekends. Another approach would be to purchase OTM put options that are extremely far out of the money and would expire worthless 95+% of the time. There are two problems with this approach. First, the these options are relatively expensive due to the vertical skew (OTM Put options trade at a higher cost/price/implied volatility than other options with higher strike prices). Second, when the put options expire, you would need to purchase new put options to maintain your protection. This would represent an ongoing cost to the portfolio.

      In short, there are no perfect solutions to providing black swan type portfolio protection.

      Best regards,

      Brian Johnson

Leave a Reply

Your email address will not be published. Required fields are marked *