¿Cómo se calcula el Rendimiento en el Screener?

Los datos de Rendimiento del Screener se calculan mediante la fórmula:

//@version=5
indicator(title="Screener Performance")
fastSearchN(_xs, x, maxbarsback) =>  // xs - sorted, ascending
	xs = _xs
	if bar_index == 0
		xs += xs[maxbarsback] * 0  // max_bars_back
	left = 0
	right = math.min(bar_index, maxbarsback)
	mid = 0
	if xs < x
		0
	else
		for i = 0 to 9 by 1
			mid := math.ceil((left + right) / 2)
			if left == right
				break
			else if xs[mid] < x
				right := mid
				continue
			else if xs[mid] > x
				left := mid
				continue
			else
				break
		mid
years5 = 365 * 4 + 366
years5_ago = timenow - 1000 * 60 * 60 * 24 * years5
countOfBars5YearAgo = fastSearchN(time, years5_ago, years5)
weeks52 = 7 * 52
weeks52_ago = timenow - 1000 * 60 * 60 * 24 * weeks52
countOfBars52WeekAgo = fastSearchN(time, weeks52_ago, weeks52)
month6 = 180
months6_ago = timenow - 1000 * 60 * 60 * 24 * month6
countOfBars6MonthAgo = fastSearchN(time, months6_ago, month6)
month3 = 90
months3_ago = timenow - 1000 * 60 * 60 * 24 * month3
countOfBars3MonthAgo = fastSearchN(time, months3_ago, month3)
month1 = 30
month_ago = timenow - 1000 * 60 * 60 * 24 * month1
month_ago_this_bar = time - 1000 * 60 * 60 * 24 * month1
countOfBars1MonthAgo = fastSearchN(time, month_ago, month1)
countOfBars1MonthAgoThisBar = fastSearchN(time, month_ago_this_bar, month1)
week1 = 7
week_ago = timenow - 1000 * 60 * 60 * 24 * week1
week_ago_this_bar = time - 1000 * 60 * 60 * 24 * week1
countOfBarsWeekAgo = fastSearchN(time, week_ago, week1)
countOfBarsWeekAgoThisBar = fastSearchN(time, week_ago_this_bar, week1)

// performance
rateOfreturn(v1, v2) =>
	(v1 - v2) * 100 / math.abs(v2)
rr(_bb, maxbarsback) =>
	bb = _bb
	if bar_index == 0
		bb += math.round(open[maxbarsback] * 0)  // max_bars_back
	if bb == 0
		na
	else
		rof = rateOfreturn(close, open[bb])
		rof
plot(rr(countOfBarsWeekAgo, week1), title="Perf.W")
plot(rr(countOfBars1MonthAgo, month1), title="Perf.1M")
plot(rr(countOfBars3MonthAgo, month3), title="Perf.3M")
plot(rr(countOfBars6MonthAgo, month6), title="Perf.6M")
plot(rr(countOfBars52WeekAgo, weeks52), title="Perf.Y")
plot(rr(countOfBars5YearAgo, years5), title="Perf.5Y")
var lastYearOpen = open
if year > year[1]
	lastYearOpen := open[1]
plot(rateOfreturn(close, lastYearOpen), title="Perf.YTD")

Nota: los valores de este script difieren en el histórico y en el tiempo real debido al parámetro timenow, vea https://es.tradingview.com/pine-script-docs/en/v4/essential/Indicator_repainting.html

Para la visualización, puede añadir este script a su gráfico a través del Editor de Pine utilizando el marco temporal diario del gráfico. Aparecerá un indicador en el gráfico, cuyas gráficas mostrarán los valores de cada tipo de rendimiento.

Cambio % vs. Rendimiento %:

Digamos que hoy es martes. El Cambio Semanal calcula la diferencia entre el cierre actual (martes) y el cierre de la última semana (el precio de cierre del viernes anterior). Rendimiento semanal calcula la diferencia entre el cierre actual (martes) y el cierre de hace una semana exactamente (el martes anterior).