ADVERTISEMENT

Bull run ahead? Why Philstocks is betting big on 2026 stock surge

Published Feb 4, 2026 03:15 pm
Philstocks Research Manager Japhet Tantiangco
Philstocks Research Manager Japhet Tantiangco
Philstocks Financial Inc. expects the Philippine Stock Exchange index (PSEi) to climb to the 7,100 level this year, wagering that double-digit growth in corporate earnings and recovery in domestic demand will overshadow the headwinds of softening peso and quickening inflation.
In its initial 2026 outlook, Philstocks Research Manager Japhet Tantiangco said the brokerage is projecting that earnings for the benchmark’s member companies will rise by an average of 15 percent.
Tantiangco said that top-line growth should be supported by healthy consumer demand and aggressive capacity expansion by major firms.
“Revenues are expected to be backed by healthy demand amid our economic growth and controlled inflation, coupled with our firms’ capacity expansion,” Tantiangco said.
He also noted that companies are increasingly integrating technology into production and leveraging economies of scale to maintain operating efficiency even as costs fluctuate.
Operating efficiency among firms are also expected amid the economies of scale brought by expansion and further integration of technology in production methods,” he added.
However, valuations for local equities remain compressed compared to historical norms and regional peers. As of Jan. 30, the PSEi was trading at 10.5 times price-to-earnings, significantly lower than its five-year average of 14.4 times and well behind the broader regional average of 19 times.
Tantiangco said this discount suggests the market is in prime territory for bargain hunting as it remains highly marketable from a valuation standpoint.
“This shows that the PSEi, from a marketability standpoint, remains at attractive levels. Hence, there is still a lot of room for bargain hunting,” Tantiangco pointed out.
While the index faces immediate technical resistance at 6,400, followed by further hurdles at 6,600 and 6,800, Tantiangco pointed to a shift in momentum.
The market’s 50-day and 200-day moving averages are nearing a “golden cross,” a technical pattern where a short-term average breaks above a long-term average. Such a move often signals a transition from a downtrend to a sustained bull market, suggesting that buying momentum is building for a medium- to long-term rally.
The brokerage forecasts the Philippine economy will expand five percent in 2026, an acceleration from the 4.4 percent growth recorded in 2025. This recovery is predicated on a ramp-up in public infrastructure spending—bolstered by recent anti-corruption measures—and the delayed benefits of the Bangko Sentral ng Pilipinas’ monetary easing cycle.
Tantiangco expects lower interest rates to finally filter through to the real economy, making loans more affordable and sparking a revival in household consumption and private investment.
Risks to this outlook remain concentrated in the external sector and price stability.
Philstocks expects inflation to quicken to 3.2 percent this year from 1.7 percent in 2025, driven by base effects, a weaker peso, and a persistent gap between local agricultural production and food demand.
Furthermore, the 19 percent tariff imposed by the United States on certain Philippine goods, combined with sluggish growth in China and the European Union, threatens to weigh on export performance and drag on the broader gross domestic product.
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.