;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

'Redução da Selic foi um pouco além do necessário', diz ex-diretor do BC

A taxa básica de juros, Selic, foi mantida em 2% ao ano pelo Banco Central - Getty Images/iStockphoto
A taxa básica de juros, Selic, foi mantida em 2% ao ano pelo Banco Central Imagem: Getty Images/iStockphoto

Douglas Gavras

10/12/2020 07h01

Para o chefe do Ibre/FGV (Centro de Estudos Monetários do Instituto Brasileiro de Economia da Fundação Getúlio Vargas) e ex-diretor do Banco Central, José Julio Senna, o Banco Central foi "um pouco além do necessário" ao colocar a Selic em 2% ao ano.

Ele alerta para a manutenção de desequilíbrios fiscais "importantes". A seguir, trechos da entrevista ao Estadão.

Os juros, mantidos em 2% ao ano, estão no patamar correto?

Apesar de o Banco Central estar fazendo um bom trabalho, é possível que tenha reduzido a Selic um pouco além do necessário. O Brasil ainda apresenta desequilíbrios fiscais significativos, a situação é de instabilidade e talvez tivesse sido mais adequado não ir tão longe. Nada muito diferente dos atuais 2% ao ano, mas talvez devesse ter parado em 2,5% ou 3%, o que sinalizaria uma preocupação maior com o desequilíbrio fiscal, e a curva de juros não tivesse ficado como ficou. Evidentemente, reduzir mais os juros seria imprudente.

O BC ainda não sinaliza um novo ciclo de alta dos juros?

Quando há razão para mudar o rumo da política monetária, a primeira coisa a ser feita é alterar o forward guidance (prescrição futura, na expressão em inglês). Mudar a Selic só será considerado depois. E o fator determinante será o receituário básico do regime de metas de inflação, que deve ser entendido como um regime de metas para as projeções de inflação. E, de concreto, não aconteceu nada na área fiscal ainda.

Não está dado que será preciso novo ciclo de alta de juros?

Muita gente raciocina da seguinte maneira: vamos reduzir os juros e, se ar do ponto, a gente aumenta. Esse raciocínio é inadequado, pois reduzir juros é sempre muito mais simples do que elevar juros. O aumento esgarça o tecido, gera perdas e expectativas adversas, porque nunca se sabe onde a alta de juros vai parar. Nos Estados Unidos, por exemplo, na virada de 2018 para 2019, o Fed tinha elevado bastante os juros e muitos esperavam que faria mais três aumentos. Só serviu para formar expectativas. Subir juros alimenta a impressão de que o processo de alta terá continuidade. Não está dado que a Selic vai entrar em um ciclo de altas.

O que deve determinar a revisão da política de juros?

A direção do ajuste fiscal e os efeitos sobre o câmbio serão determinantes para o futuro da Selic. Depois do recesso do Congresso, todos ficarão preocupados com a questão fiscal, a contenção das despesas obrigatórias. O mercado vai ficar de olho nisso.

As informações são do jornal O Estado de S. Paulo.