tradingview pine limit

I am trying to write a script on Pine (related to a Tradingview strategy) where I want to use the series and take the previous value or past values to make a set of operations.

Something as:

a = if(Alerta1[-1] == 5, 10,0)

the pine script is saved without error, but during the execution, an error is shown:

Index can’t be a negative value (-1)

Is there anybody that could let me know how to solve it?

I would like to use “[-1]” and other “minus” such “[-20]” for a script.

many thanks in advance

The answer

The answer is as simple that I’m embarrassed of not being able to see it:

Value Line Geometric Index

The american market (I focus on S&P 500) has recuperated 40% of the value since March where it touch the minimum value.

It’s an impressive “come back” while the macro economy data is showing terrible numbers about unemployment, consumption, industrial production….

The economy and the market are driving themselves in the opposite direction. So, so many questions come to my mind:

  • Is the market crazy?
  • is the market completely disconnected from the economy?
  • are we looking at the right numbers?

Well, Mr. Market does what he wants, and we cannot do anything about it. Disconnected from the economy? I do not think so, maybe there is a bubble, but sooner or later it will adjust. Well, my answers are poor, and it’s basically because I have not a concrete answer to these questions.

The last question: “are we looking at the right numbers?” makes me to go to Value Line Geometric Index

Value Line Geometric Index

This index includes all the american market. For more information the Wikipedia.

“All companies in the Value Line Composite Index are publicly listed on one of the major exchanges listed below. The number of companies in the Value Line Composite Index fluctuates based on factors including: the addition or delisting of the companies on the exchanges themselves, mergers, acquisitions, bankruptcies, and the coverage decisions made by Value Line for the Value Line Composite Index. Value Line’s decisions as to which companies to include are undertaken with the intention to create a broad representation of the North American equity market.

Exchanges in The Value Line Composite Index are:

  • American Stock Exchange
  • New York Stock Exchange
  • Toronto Stock Exchange

Well, comparing the VALUG (blue) with SPX (red), you can see that Value Line Geometric Index is more closed to the reality that I had in mind that is that we still have not recuperated.

If we look the comparison of the indexes from February 12th, the result is that draw-down is bigger for VALUG, and that the recuperation is below than S&P:

Update on 07/August/2020

  1. The Value line has crossed over the 200 days SMA for the second time. This is an interesting point of intersection.
  2. This event happened in June and the market reacted for few days. These days the FED did not use big amount of money on POMO.

To do: I will add this index to my reviews, I have first to learn from it.

Spanish market issue: script dividend as extended policy

One of the big issues of the stock market in Spain is the one represented in this picture.

Dividends? No, “papers”

Some of the popular investment methods is based on dividends, some others at least recognize that dividends is an incentive to invest on a company.

The main companies in the IBEX-35 market, so many times, instead of cutting the dividend or ask for money to the market, they have created a mechanism to do two things at the same time: script dividend.

They define a process with different steps that you have to follow. Mainly there are 2 options:

  • you grab the dividends and run.
  • you grab a set of new stocks (a new amount of stocks published to inject extra money into the company).

The process to do it

Once that is declared the “script dividend” you have to learn how to go through the process of claiming the new stocks or to take the dividend itself. This process is not straight forward, it’s a very complex process that requires you time to understand it, and then you have to pay attention the key days where you have to make a decision.

In a nutshell, so many small investors fall in the trap and they capture more stocks that they really do not want, diluting the value of the company.

My opinion

is that an incentive turns into an obligation to the investor, making him to decide on something that is not initially their responsibility. The result in the long term is not working well for the companies that are following this policy.




Fundsmith annual shareholder meeting 2020

I discovered this shareholders meeting last year and I was willing to review it in detail. Below some notes.

First 33 minutes is the formal presentation, after that Q&A.

The link to the letter to shareholders:—annual-letters/annual-letter-to-shareholders-2019.pdf?sfvrsn=6

Minute #10:

Why they sold 3M on the one hand, 3M sold its ceramic bulletproof business unit at a price of 1.1x sales and acquired Acelity, which was a private company, for 11x EBITDA. Acelitywas actually going public and according to the prospectus, the opening price was was going to be 15x EBITDA. When asked about the difference between 11 and 15, they claimed that they announced the multiple of 11 EBITDA for the expected synergies. Fundsmith interpreted this as a lie.

In the shareholder letter: “we were acting on growing doubts about the current management’s capital allocation decision”.

minute #37:

Sub-estimate the impact of Covid-19.

minute #48:

Replying about why they don’t buy Apple or Alphabet.

About Google: ROE in 2019 is about 17%, which is average. Capital allocation is poor: they acquire small potential companies that could become competence in some niche and they dissolve these projects.

About Apple: sales and cash flow are flat in the last 4 years and the stock price has tripled. They saw the same behavior in companies as Nokia.

Comment about Sortino Ratio Versus Sharpe Ratio

The Sortino ratio is an adaption of the Sharpe ratio, and in my view an improvement. Whereas the Sharpe ratio estimates risk by the variability of returns, the Sortino ratio takes into account only downside variability as it is not clear why we should be concerned about upside volatility (i.e. when our Fund goes up a lot) which mostly
seems to be a cause for celebration.

Market Opening checklist

This is a checklist of things to review once just before and after the market is opened.

Before market opens (9:15 ET)

  • Check S&P and Nasdaq futures indexes.
  • How is Europe going on? Check DAX.
  • Check DIX and GEX Index in squeeemeetrics.
  • EUR/USD trend of the day.
  • Market breadth check.
  • Any major news to take into account?

After market opens (9:35 ET)

  • Check S&P trend in comparison with the futures.
  • Check the swing portfolio.
  • Check the potential new longs I have in the list.

System: Carter MA 8 – 21


In his book “Mastering the trade”, John Carter proposes a simple system based on the moving averages of 8 and 21.

I have implemented the basis of this system and I have changed some behaviors:

I have build this system on Tradingview and I have done some back-testing in 3 periods to see how it works.

The system

The system code is this one:

// This source code is subject to the terms of the Mozilla Public License 2.0 at
// © joapen

strategy("Carter EMA(8/21)", overlay=true)

FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2020, title = "From Year", minval = 2000)
ToMonth   = input(defval = 12, title = "To Month", maxval = 12)
ToDay     = input(defval = 31, title = "To Day", maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", maxval = 2020)

length = input(14, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool)

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)

// lime green  red marron
sqzLong = iff( val > 0, iff( val > nz(val[1]), true, false), iff( val < nz(val[1]), false, true))
// Plots
plot(upperBB, title="BB",
plot(ema(close,8), title="EMA(8)",
plot(ema(close,21), title="EMA(21)",

longCondition = (ema(close, 8)> sma(close, 21)) and (close < ema(close, 8) and sqzLong) and time > timestamp(FromYear, FromMonth, FromDay, 00, 00) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
alertcondition(longCondition, title='Long', message='long!!!')
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = (close > upperBB ) or (ema(close, 8)< sma(close, 21) or val<0) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
alertcondition(shortCondition, title='Short', message='short!!!')
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

Back-testing conditions

  • Amount = 100.000$
  • Commission = 0$
  • List of companies: fix list of companies I know with different behaviors, volatility and industries: BEN, TROW, CTVA, AEMD, GMRE, WBA, CVS, MO, DT, GE.

Quality of the samples:

  • Minimum around 200 trades to consider a good amount of cases.
  • Share Ratio > 1
  • Profit Factor > 2

Back-testing results for first date range

  • Date range = 1/1/2020 – 13/05/2020
  • Time frame = 5 minutes

Volatility during this period have been so high:

Back-testing results for second date range

  • Date range = 1/1/2019 – 13/05/2019
  • Time frame = 15 minutes (Tradingview does not enable me to do it in 5 minutes)

Back-testing results for bio companies in 2020

  • Date range = 1/1/2020 – 13/05/2020
  • Time frame = 5 minutes



  • I have to improve or discard this system.
  • Check when the market trend is better.
  • Check when volatility is lower.

Backtesting tips

I do this list of tips so I review before I do some back-testing analysis.

main questions (from John Bogle)

  • What is the rationale or hypothesis?
  • What is the empirical evidence?
  • What are the implementation results?

Tips to remind

  1. Do a test of your system with 2008.
  2. If you look for correlation, you probably will find it, it does not mean that it will work in future.
  3. Test in not the best conditions and compare with other systems of
  4. Check volatility, tests on periods with low and high volatility is useful to get conclusions.
  5. Track the results in a word document with screenshots of the work done, the variables you touched and the specific results.
  6. Prepare set of 5 to 10 stocks for the back-test, track the results of all these stocks.

Typical pitfalls

  1. Survivor bias: you are not adding the companies that have not survived.
  2. Look-ahead Bias: you have all the data in front of your eyes and can make trades according to that data, this provokes you get a false understanding about the behavior of your system.
  3. In sample bias: you use a sample data that is always the same or similar, so then your system adjust to this sample and lose effective.

Cboe SKEW Index (“SKEW”)

Introduction to SKEW Index

The Cboe SKEW Index (“SKEW”) is an index derived from the price of S&P 500 tail risk. It’s similar to Volatility Index (VIX).

The primary difference between the VIX and the SKEW is that the VIX is based upon implied volatility round the at-the-money (ATM) strike price while the SKEW considers implied volatility of out-of-the-money (OTM) strikes.

SKEW typically ranges from 100 to 150.

  • The higher the rating, the higher the perceived tail risk and chance of a black swan event.
  • A SKEW rating of 100 means the perceived distribution of S&P 500 returns is normal and, therefore, the probability of an outlier return is small.

Other concepts (for my poor memory)

Out of the Money (OTM) is an expression used to describe an option contract that only contains intrinsic value. These options will have a delta of less than 50.0.

At the money (ATM) is a situation where an option’s strike price is identical to the price of the underlying security.

SPX Vs DIX 2020 follow-up

I have started to follow-up the Dark Index Vs SPX, as one of the indicators I follow during the decisions. Right now it’s in test mode, as I have to learn about what happens and see if I can build some type of correlation that contributes in a positive way to my trading actions.

So, let’s start.

First chart (January 1st – April 30st)

When DIX is up, it’s assumed the whales are buying in a silent way. Some trends:

  • February 27th
  • March 24th

Second chart (January 1st – June 8th)

  • Strong concentration of buyers starting on May 21st and continuing during 1 week (over 50%).
  • SPX was in a channel (2800 -2950), between April 14 and May 26th.

GEX review on June 8th

  • Gamma Exposure Index < 0 was a risk zone. Started on February 24th.
  • During the channel (2800-3000) no clear behavior.

GEX review on July 8th

So much ups and downs (accelerate and brake).

DIX review on July 8th

Nothing to add here related to DIX during June.

DIX review on August 8th

  • Channel 3.000-3.200 has been broken, now working between 3.200-3.400.
  • Dark Index moving around 45%.

GEX review on August 8th

  • 2 strong “push” to the accelerator put the S&P over 3.300.