Corporate Results Monitor

FNArena's All-Year Round Australian Corporate Results Monitor.

Currently monitoring Sep-Dec 2024.

Figures shown as at 01 December 2024

FNArena subscribers receive the most current information. Please login with your account details.

TOTAL STOCKS:

41

Beats

13

In Line

13

Misses

15

Total Rating Upgrades:

8

Total Rating Downgrades:

10

Total target price movement in aggregate:

5.22%

Average individual target price change:

5.17%

Beat/Miss Ratio:

0.87

Previous Corporate Results Updates

Company Result Upgrades Downgrades Buy/
Hold/Sell
Prev Target New Target Brokers Commentary
ALQ - ALS Ltd BEAT 0 0 3/0/0 15.43 16.83 3

ALS Ltd's interim performance, while revealing a slight decline from the year prior, proved a small beat of the company's own guidance and analysts' forecasts. Morgans saw a "strong" performance, despite significant currency headwinds, and sees a clear runway for growth if management achieves its acquisition turnaround targets over the next five years. The broker can see considerable upside to outer-year forecasts if current commodity prices hold and junior miner raisings gain further momentum. Management has reiterated FY25 guidance. Earnings estimates and price targets have lifted. Three brokers covering translates into three Buy-equivalent ratings.

AMC - Amcor MISS 0 1 0/5/1 15.87 15.80 6

Amcor's Q1 performance showed signs of improvement and met most analysts' expectations. Lower sales were more than offset by cost-out and restructuring benefits, but sales still went backwards. The healthcare part and North American beverages are still not making any positive progress due to ongoing de-stocking and continued soft demand, respectively. The share price sagged, indicating there was disappointment in the air. Management maintained FY25 guidance for underlying EPS of between US72-76c and free cash flow of US$900-1,000m. Macquarie spotted early signs of de-stocking for Healthcare packaging. Macquarie has downgraded to Neutral joining four other brokers on equivalent ratings. Ord Minnett stands out with a negative view.

ANZ - ANZ Bank MISS 0 2 0/2/4 27.44 27.35 6

ANZ Bank's FY24 slightly missed consensus forecasts with negative underlying dynamics as cash earnings fell -8% year-on-year and -7% from the previous half. Excluding compensating through provision write-backs the retreat would have been even larger, Citi analysts point out. Risings costs remain a tangible headwind. UBS thought it was a messy result because of the Suncorp Bank acquisition. This broker also pointed out Australian retail performed well in 2H24, offset by softer institutional markets-related results. Macquarie believes ANZ is positioned for slower growth than its Aussie peers and believes the market will seek fiscal evidence of Suncorp Bank acquisition benefits before assigning higher valuation multiples. UBS has downgraded to Hold, Morgans downgraded to Reduce (Sell). Out of six brokers, four now have a negative rating, with Ord Minnett joining UBS on Hold/Neutral.

LTM - Arcadium Lithium MISS 0 0 0/1/0 7.94 8.70 1

Arcadium Lithium's Q3 report came in below expectations across revenue, EBITDA, and earnings. Cash flow was lower by -US$297m due to a rise in capital investment of US$288m and management has withdrawn 2024 guidance. There was also an -US$52m impairment charge for Mt Caitlin as the operation is transitioned to care and maintenance in 1H2025. It's all but academic as virtually nobody doubts this company will soon be a division inside the Rio Tinto conglomerate. 

ALL - Aristocrat Leisure IN LINE 0 0 5/0/0 66.25 72.20 5

Aristocrat Leisure released yet another robust FY24 performance, on the back of the divestment of Plarium, but financial metrics were broadly in line or only slightly better than consensus. Growth in gaming operations and cost control drove a 2H EBITA margin increase of 260bps, with Citi forecasting an additional 150bps of margin expansion in FY25 due to a favourable mix shift. Morgans believes strong cash flow and the balance sheet position the company well for potential M&A and/or share buybacks. It is difficult to fault this decade-long, international, Aussie large cap success story that has much further to run, as also shown by nothing but positive ratings from analysts covering.

AAC - Australian Agricultural Co IN LINE 0 0 1/0/0 2.00 1.95 1

Australian Agricultural Co's 1H operational earnings (EBITDA) of $20.2m exceeded Bell Potter's $17.5m forecast. Reflecting lower live and meat sales values, earnings per kglwt sold declined by -53% year-on-year. Regarding the outlook, a material uptick in meat sales volumes following the Goonoo expansion is likely offset by weakness in high-fat beef pricing indicators, according to the analysts. Bell Potter retains a Buy rating and lowers the target price to $1.95 from $2.00.

BOQ - Bank of Queensland BEAT 0 1 0/1/5 5.41 5.53 6

Bank of Queensland's FY24 beat market consensus on much lower impairments and a higher-than-anticipated net interest margin (NIM) of 1.57% versus 1.54% forecast, plus a higher final dividend of 17c on top. But analysts remain overall sceptical given the regional lender's history of vulnerability, fierce competition and with no guarantee  the plan to turn into a digital bank will be successfully executed. As analysts raised forecasts and the share price responded positively, Ord Minnett has downgraded to Sell. Macquarie highlighted the difficulty for bank management in investing for the future while also trying to reduce expenses and improve profitability. All brokers covering the stock rate it negatively, no exception.

BCB - Bowen Coking Coal MISS 0 0 1/0/0 0.05 0.05 1

Bowen Coking Coal reported an annual net loss but the 2H24 marked a turnaround to profitability. Shaw and Partners notes higher mining rates over the last four months of an average 311kt p.a. are well above the 250kt p.a. target. Shaw and Partners cuts EBITDA forecasts by -20% and -36% for FY25/FY26, respectively, because of increased cost estimates and a delay in the refurbishment of the second stage of Burton CHPP. Target price at 5c and Buy rating, High risk unchanged with an upbeat outlook on coking coal.

BKW - Brickworks BEAT 1 1 2/4/0 30.38 30.46 6

Property revaluation resulted in an earnings beat. Better cost management supported FY24 results for Brickworks with ongoing weak markets in Australia and North America. The property valuations were boosted by the interest rate outlook. A recovery is seen as unlikely before the 1H of FY26 for Australian housing, with management noting there has been a 2H FY24 deterioration in multi activity. In the US, weakness is being driven by US non-residential and competition. Citi believes lower interest rates will improve the outlook for building products. Macquarie is looking for a stronger macro-economic backdrop to improve sentiment. Bell Potter highlights management's near-term priority is to maximise cash via temporary plant closures and capex reductions over FY25-26. The challenging outlook (with continued prospects for dividend increases) keeps four brokers on Neutral/Hold and two on Buy, including a downgrade by Bell Potter and an upgrade by Ord Minnett.

CAT - Catapult International BEAT 0 0 1/0/0 2.75 3.30 1

Catapult International's H1 beat Bell Potter's forecasts assisted by stronger revenue from Tactics & Coaching. EBITDA increased 100%, surpassing the analyst's estimate by 14%, also driven by lower operating expenses. Both free cash flow and annual contract values grew strongly and exceeded forecasts, with the balance sheet moving to a net cash position. Bell Potter notes the potential for Catapult International to be added to the S&P/ASX 300 in the next rebalance in December, though March appears more likely. Buy rating unchanged. Target price rises to $3.30 from $2.88 due to a lower cost of capital assumption.

CIA - Champion Iron MISS 0 0 3/0/0 7.12 6.90 3

Champion Iron's Q2 revealed too many numbers that were below analysts' forecasts, including production volume, products sold, EBITDA, and net income plus higher-than-anticipated capex. Macquarie, Citi and Bell Potter were prepared for a weak performance as forest fire impacts and plant maintenance shutdowns were known knowns. All three Buy-equivalent ratings seem to be inspired by a discounted valuation and, one presumes, less-impacted times ahead.

COI - Comet Ridge MISS 0 0 1/0/0 0.28 0.23 1

Comet Ridge's FY24 results show ongoing reserve/resource growth, observes Morgans, but transition into front-end engineering design (FEED) has been restricted. The Mahalo joint venture is progressing at a slower-than-expected pace, delaying the timeline on possible development of the project. Also, progress at the 100%-owned Mahalo North is being slowed as the Federal EPBC (Environmental Protection and Biodiversity Conservation) agency is taking longer-than-expected to grant environmental approval. The target falls to 23c from 28c. Speculative Buy.

DVP - Develop Global MISS 0 0 1/0/0 3.50 3.20 1

Develop Global reported FY24 results with a 117% rise in revenue because of higher mining services for the Bellevue Gold mine, Mt Marion contract and Beta Hunt site, Bell Potter observes. EBITDA turned positive after a loss of -$2m in FY23. The company announced the final investment decision on the restart of Woodlawn with the first concentrate anticipated in mid-2025. Bell Potter lowers earnings forecasts for a six-month delay in the Woodlawn and Sulphur Springs production, alongside higher operating expenses. Buy rating unchanged. Target price falls to $3.20 from $3.50.

ELD - Elders MISS 0 0 3/1/0 9.14 9.43 5

Elders' FY24 performance was overshadowed by the acquisition of Delta Ag, which should boost future earnings. The results itself failed to excite and contained both pluses and negatives. A higher-than-expected contribution from the agency segment was largely offset by weaker retail performance and higher corporate overheads, While no formal guidance was provided, Bell Potter notes management commentary suggests improved market conditions, with FY24 acquisitions expected to contribute positively in FY25. Macquarie draws comfort from management commentary suggesting margins are stabilising. UBS predicts most of the anticipated acquisition synergies will be backended, i.e. delivered in FY26/27.  Three brokers rate the stock Buy, UBS sticks with Neutral and Macquarie is under research restriction.

FPR - FleetPartners Group BEAT 2 0 4/0/0 3.74 3.76 4

FleetPartners Group's FY24 result beat forecasts on the back of a 16 percentage point increase in new business writing (NBW) growth, with contributions from Novated up 36%, Corporate Fleet Australia up 28%, and Corporate Fleet New Zealand down -8%. Analysts have lifted forecasts in response. Citi believes a return to dividends in FY27 is likely, with share buybacks in the interim of $52m in FY25 and $50m in FY26. Ord Minnett identified a slight delay in the Accelerate program as the only "hiccup" in an otherwise positive update. Both Macquarie and Ord Minnett have upgraded to Buy, to make it four out of four.

FSF - Fonterra Shareholders Fund BEAT 0 0 1/0/0 0.00 0.00 1

Fonterra Shareholders Fund delivered another strong performance in FY24, Macquarie comments, with continuing EPS of 70c, down just -5cps on the previous corresponding period, despite materially lower price relativities. The broker highlights key positives in the net improvement in Consumer and Foodservice margins. The board declared a 15 cent special dividend on top of the 40 cent ordinary dividend. Macquarie's target rises by 32% to NZ$4.61 largely resulting from tax changes and the associated cost of capital impact. Outperform.

GNC - GrainCorp MISS 0 0 3/1/0 9.83 9.63 4

GrainCorp released a forecasts-beating FY24 result, but the prospect for margin pressure has forced analysts to reduce their forecasts, which also weighs down price targets. Bell Potter highlights robust offshore crop production is creating margin pressures for exports, and a lower canola crush is expected in FY25. Ord Minnett counters the company's assets are undervalued, plus there is ongoing capital management potential. This broker notes the outlook for the agribusiness segment remains strong due to a favourable winter crop forecast, while the nutrition & energy segment faces pressure from lower crush margins, impacted by a poor Victorian canola crop. Macquarie notes management continues to explore crush expansion with an ongoing feasibility study and is working with Ampol. A FEED phase-in is targeted for FY28. Three brokers generate two Buys and one Hold rating.

IKE - ikeGPS Group MISS 0 0 1/0/0 0.94 0.94 1

ikeGPS Group reported a slightly larger-than-expected 1H25 operating loss of -NZ$4.9m, versus Bell Potter's forecast of -NZ$4.4m, on the back of pre-released revenue growth of 13%. The broker highlights the net loss was flat year-on-year. Subscription revenue grew by 27% to NZ$6.5m, with stable transaction revenues. Growth in selling, general, and administrative expenses of 15% annually underpinned a rise in operating expenses of 10%, in line with the analyst's forecast. Bell Potter highlights momentum has continued into 2H25 with another NZ$2.4m in subscriptions, bringing the year-to-date total to NZ$37m versus 1H25 at NZ$33m. Speculative Buy rating and 94c target retained.

IPL - Incitec Pivot BEAT 0 0 2/4/0 3.13 3.19 6

Incitec Pivot's FY24 EBIT beat consensus by 12%. Management has yet again put the fertiliser business up for sale. A strong earnings and margin performance at the Dyno Nobel Australia-Pacific operations outweighed weaker earnings from the Dyno Nobel America and Fertilisers Asia Pacific divisions, Ord Minnett comments. Additionally, exceeding management's prior target of $50m, $64m of benefit was derived from the company's Transformation Program. Just about everyone is looking forward to the day when fertilisers are gone. Meanwhile, Hold/Neutral ratings dominate analysts' ratings, with only UBS and Ord Minnett holding a positive view.

JHX - James Hardie Industries IN LINE 0 0 5/1/0 56.81 59.14 6

James Hardie Industries' 2Q earnings EBIT margin of 29% came in at the upper end of guidance for between 27.5% to 29.5%. Declining volumes were offset by a higher average selling price plus operating cost savings. Adjusted net income of U$157m beat the consensus forecast by 8%. Management lowered FY25 adjusted net income guidance to around U$635m from between US$630-$700m due to the challenging environment. Positive sentiment dominates analysts' assessments, with Morgans lauding "the highest quality building products business on the ASX" and Macquarie stating the company is well-positioned for a recovery in the repair and restoration market in North America. Six brokers covering generates five positive ratings, with Citi on Hold.

KMD - KMD Brands IN LINE 0 0 0/1/0 0.41 0.45 1

FY24 underlying earnings (EBITDA) for KMD Brands were in line with Macquarie's expectations and at mid-point of guidance with opex savings partly offsetting a decline in sales. Pre-reported group sales declined by -11.2% year-on-year reflecting weakness in consumer sentiment, a challenging sales environment, and Rip Curl and Oboz cycling record sales. Because of a tougher macro environment and ongoing wholesale channel constraints, Macquarie expects ongoing headwinds across all brands. The target eases to 45c from 47c. Neutral.

360 - Life360 IN LINE 0 0 3/1/0 21.59 24.96 4

Life360's Q3 result contained both positive surprises and slight disappointments. On the positive side monthly average users and paying circle growth were higher than expected, with management raising EBITDA guidance. Bell Potter noted a better gross margin and lower operating expenses. On the negative side EBITDA proved slightly lower than consensus with Morgan Stanley noting some concern over transparency on advertising and hardware delays, with management reducing 2024 revenue guidance. Ord Minnett highlighted one-time softness in Hardware (a delay in the new Tile range and discounting to clear inventory) and a lack of positive surprises from Advertising. Three Buy ratings remained in place and targets have lifted in response. UBS sits on Neutral.

LNW - Light & Wonder IN LINE 1 0 4/1/0 169.20 176.60 5

Light & Wonder's Q3 performance slightly missed analysts' forecasts, but management reconfirmed US$1.4bn EBITDA guidance for FY25 and a net profit after tax of US$565m–US$635m. Lost revenue from the Dragon Train game series has largely been replaced. Morgans highlights land-based games outperformed, driven by gaming machine sales, with international sales up 72% year-on-year to 6,900 units. Morgans also points to strong performance from Shenlong Unleashed, which exceeded expectations. Adjustments to FX forecasts have triggered higher price targets. Ord Minnett has upgraded to Buy from Accumulate, to make it four from four.

MQG - Macquarie Group MISS 0 0 2/1/1 214.00 217.50 4

Macquarie Group's interim financials yet again missed market expectations. The dividend disappointed plus management has lowered FY25 guidance on expectation of a decline in commodities income and no anticipated increase in Macquarie Capital (MacCap) investment income. The share price punishment has remained contained as every expert and his dog is awaiting a big pickup in global M&A. Negative outlier Citi (Sell) has been warning about too high expectations being priced into the share price and is sticking with that view today. Morgan Stanley and Ord Minnett hold a positive outlook, while UBS prefers a Neutral stance, for now.

NAB - National Australia Bank IN LINE 0 0 1/0/5 32.75 32.48 6

Lower costs and a reduced effective tax rate helped National Australia Bank releasing a broadly in line FY24 performance, though general appraisal carries a negative bias among analysts. Credit quality is deteriorating (mortgage delinquencies are rising) and provision releases have provided compensation. The H2 dividend slightly beat. A rise in spending commitments in combination with a premium valuation keeps most analysts on cautious, if not negative footing. Morgan Stanley's Outperform rating stands out against five Sell-equivalent ratings.

NHC - New Hope IN LINE 1 0 1/3/0 5.12 4.71 4

New Hope's FY24 met most analysts' expectations, though Macquarie was left disappointed. Shareholders received a higher-than-forecast dividend payout. Any guidance will have to wait until the release of Q1 results in November. Morgans has upgraded to Buy as the stock is considered cheaply priced. This broker also believes New Hope has outperformed its met coal peers because of its low-cost structure. Three other brokers stick with a Neutral/Hold rating. The subsequent rally has taken the share price above all four price targets.

NEM - Newmont Corp MISS 0 1 2/2/0 91.25 85.00 4

Newmont Corp's quarterly update significantly disappointed and has led to a loss in confidence among analysts, also leading UBS to downgrade the stock to Neutral from Buy. Forecast volumes have been downgraded, alongside higher costs, reduced free cash flows, increased capex and lower earnings. Analysts suspect more negative news might be forthcoming from the Nevada JV with Barrick. The one positive is gold price forecasts, outside of management's control, are generally on the rise, supporting two Buy-equivalent ratings (with a longer-term perspective), while Ord Minnett sticks with Hold.

NWS - News Corp BEAT 0 0 0/2/0 48.05 48.65 2

News Corp's Q1 surprised on the upside with earnings of $415m 4% ahead of consensus. Ord Minnett highlights the performance looks even better when excluding -$12m of REA Group merger and acquisition costs. UBS identifies book publishing and cost control as two key drivers.  UBS suggests a macroeconomic uplift is necessary to drive a broader re-rating across News Corp's businesses. Both brokers rate the shares Neutral/Hold.

NUF - Nufarm MISS 1 0 1/3/1 4.07 4.25 5

Nufarm released a weak FY24 performance, impacted by high inventory levels and de-stocking in the crop protection industry, with margins under pressure as higher-priced inventory was sold. Growth in Seeds earnings was negatively impacted by weak fish oil prices and high investment costs. Management provided no guidance, but Morgans believes the bottom is in and thus has upgraded to Add from Hold. Citi (Sell), on the other hand, believes pricing will continue to be a headwind in the near term for both Nufarm and the broader industry. This broker sees no quick resumption in dividend payments to shareholders. Bell Potter (Hold) points out management highlighted "solid" demand in crop protection markets with competitive pricing; Omega-3 revenues are expected to double in FY25 as inventories decline, and crop protection revenues are anticipated to return to long-term levels in FY26.

ORI - Orica IN LINE 2 0 4/1/0 19.57 20.75 5

Orica's FY24 performance has injected renewed optimism into analysts' forecasts. The financial numbers, described as "strong" and "robust", were mostly in line with forecasts. Management suggested FY25 should offer further growth. That combination proved sufficient for two brokers, Morgans and Ord Minnett, to upgrade to Buy. Morgans points out Orica is now the world's largest explosives company and the largest producer of sodium cyanide. This broker believes the company will achieve solid earnings over the next few years due to strong demand and re-contracting benefits. Morgan Stanley sees double-digit earnings growth across FY25-27, potentially further supported by capital management initiatives. Citi stands out with only a Neutral rating. Price targets have received a boost.

PMV - Premier Investments MISS 0 0 3/2/0 33.03 34.13 5

FY24 sales for Premier Investments were below consensus forecasts with Smiggle sales down -7% year-on-year and apparel brands declining -6.4% over the period. Cost of doing business rose and FY25 sales are weaker. The intended Smiggle spin-off has been delayed. Management is prioritising the divestment of non-core Apparel Brands to Myer. Peter Alexander remains the stand-out performer. Five brokers generate three Buys and two Neutral ratings.

REA - REA Group IN LINE 0 0 3/2/0 234.43 241.20 5

REA Group released yet another strong 1Q trading update, with momentum continuing into October. National listings growth of 7% was achieved, along with a 15% increase in yield. There were indications some agents and vendors are favouring the group over Domain Holdings Australia in their marketing allocations. Cost growth was higher than expected but is not seen as a worry as it reflects timing of marketing spend. Three Buy ratings outnumber two brokers on Hold/Neutral.

RMD - ResMed BEAT 0 0 3/2/0 36.14 40.12 5

ResMed's Q1 performance proved another resounding 'beat' on lower costs, higher margins and more sales, in particular revenues from rest-of-the-world (outside of the US). The promise of more margin expansion has triggered further upgrades to forecasts. Morgans specifies tailwinds include manufacturing efficiencies, cost control and higher average selling prices versus ongoing headwinds from international freight. Price targets have jumped higher. Last year's concerns about future impacts from GLP-1s have become long-dated. Five brokers are spread out over two Neutral ratings and three Buy-equivalents.

SIG - Sigma Healthcare IN LINE 0 0 1/2/1 1.15 1.26 4

Sigma Healthcare reported 1H25 earnings which met expectations with FY25 EBIT guidance in line with forecasts. Management reconfirmed a medium-term EBIT margin target of 1.5% to 2.5%. The key issue remains whether the ACCC will approve the merger with Chemist Warehouse. The decision will be made public on Oct 24. Due to mix shifts, Macquarie predicts the Chemist Warehouse PBS contract will dilute margins, but Sigma should realise higher gross profit dollars driven by increased volume. With the shares trading well above targets, only Ord Minnett can muster a positive rating. The other four are split in the middle between Neutral/Hold and Sell.

SPZ - Smart Parking BEAT 0 0 1/0/0 0.70 1.10 1

Smart Parking's 1Q earnings (EBITDA) rose by 30% year-on-year, prompting Shaw and Partners to upgrade earnings forecasts by approximately 2% across the forecast period. The broker notes regulatory risk in the UK has eased, and the company continues to gain market share through its ANPR technology and strong selling culture. Management is driving growth in nascent markets, including Germany and Denmark, while evaluating potential expansions in Scandinavia, Europe, and the US, with the latter expected to provide a material share price uplift if announced. Shaw and Partners maintains a Buy/High Risk rating and raises the target price to $1.10 from 70c.

STX - Strike Energy MISS 0 0 2/1/0 0.27 0.27 3

Strike Energy's FY24 loss came in well below the market expectations for a sizable profit. The main culprit was a higher depreciation/amortisation charge post the Talon Energy acquisition for $145m. Adjusting for the charge, the results were broadly in line, Ord Minnett believes. The broker observes investor sentiment has soured because of cuts to reserve estimates and worse-than-expected drilling results, but the analyst remains upbeat on the core assets, Waylering, and the cash position of 7c per share. Macquarie has lowered its Walyering valuation following a reduction in independently certified 2P/3P reserves by -16% and -19%, respectively.

SM1 - Synlait Milk IN LINE 0 0 0/2/1 0.47 0.43 3

FY24 results for Synlait Milk were in line with expectations. Management offered no guidance excluding the absence of non-recurring costs and market issues in FY25. The company is aiming for net debt of NZ$200m-NZ$250m at year-end and will offer South Island farmers a one-off NZ$0.20/kg milk solids bonus for 2025-26 to help secure milk supplies. Macquarie highlights margins will be diluted over FY25 as the additional milk payment to retain supply will not be recouped from product pricing or customer contracts with pass-through. One Underperform rating and two on Neutral/Hold.

TNE - TechnologyOne BEAT 0 3 1/5/1 20.09 28.73 7

If there were any doubts, a 42% increase in the consensus price target might be sufficient evidence the FY24 performance by TechnologyOne yet again beat friends and foes. The share price has responded accordingly, triggering downgrades post the release due to valuation concerns. Quicker growth in ARR, the promise of ongoing margin expansion, faster momentum in the UK, plus a complimentary acquisition; it all adds to the favourable investment case which hasn't changed since 2004; the business remains on track to double in size approximately every five years. The share price should, all else remaining equal, follow suit. Among the seven brokers monitored daily that cover the stock, five now have a Neutral/Hold rating with 'valuation' a key consideration. UBS sticks with a Buy rating. Ord Minnett has downgraded to Lighten.

TUA - Tuas BEAT 0 0 2/0/0 4.78 5.53 2

Tuas' FY24 beat on revenue and earnings (EBITA), carried by ongoing growth in subscribers for mobile and broadband services, and margin increase. The one negative is higher capex. Morgan Stanley believes the company remains well positioned to continue disrupting the Singapore telco market. Both Citi and Morgan Stanley rate the shares positively.

WBC - Westpac IN LINE 0 0 0/4/2 27.92 28.40 6

Westpac's FY24 proved broadly in line. Investors might have been slightly disappointed because no bonus dividend was announced, but $1bn to buy back its own shares provided positive compensation. Most caution stems from the elevated valuations for the sector in Australia generally. Morgan Stanley summed it up nicely by pointing toward a rather modest earnings growth profile while execution risk is high, and Project Unite benefits are long-dated and have not yet been quantified. Westpac's outlook includes a heavy investment burden with Macquarie highlighting expenses are forecast to stay high, with around -$2bn allocated for investment spending. Citi adds Unite is expected to require approximately -$3bn in investment capital over the next three to four years. Six brokers covering generate four Hold ratings and two Sell-equivalents.

XRO - Xero BEAT 0 1 4/2/0 165.28 196.15 6

Xero's H1 performance contained both 'beats' and 'misses' with higher ARPU and slower subscriber growth a stand out on both sides. The removal of some -160,000 inactive subscribers meant subscriber number were always going to disappoint, but ARPU has been lifted as a result. Morgans also highlights cash flow was better-than-expected and the company beat its own Rule of 40 target. Macquarie applauds the stringent cost management. Whereas Citi sees potential for upside surprises, Morgans thinks further progress in the USA will be slower-than-anticipated. Ord Minnett has downgraded to Hold, joining Morgans. Four other brokers all have a Buy rating.

Total: 41

ASX50 TOTAL STOCKS:

10

Beats

2

 20.0% 

In Line

4

 40.0% 

Misses

4

 40.0% 

Total Rating Upgrades:

0

Total Rating Downgrades:

5

Total target price movement in aggregate:

5.51%

Average individual target price change:

3.77%

Beat/Miss Ratio:

0.50

ASX200 TOTAL STOCKS:

28

Beats

8

 28.6% 

In Line

10

 35.7% 

Misses

10

 35.7% 

Total Rating Upgrades:

6

Total Rating Downgrades:

10

Total target price movement in aggregate:

5.20%

Average individual target price change:

5.04%

Beat/Miss Ratio:

0.80

Yet to Report

Indicates that the company is also found on your portfolio

SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/02'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/02'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Monday
2 December

earnings report


SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/03'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/03'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Tuesday
3 December

earnings report


SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/04'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/04'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Wednesday
4 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/05'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/05'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Thursday
5 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/06'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/06'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Friday
6 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/09'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/09'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Monday
9 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/10'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/10'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Tuesday
10 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/11'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/11'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Wednesday
11 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/12'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/12'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Thursday
12 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/13'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/13'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Friday
13 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/16'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/16'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Monday
16 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/17'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/17'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Tuesday
17 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/18'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/18'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Wednesday
18 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/19'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/19'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Thursday
19 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/20'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/20'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Friday
20 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/23'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/23'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Monday
23 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/24'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/24'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Tuesday
24 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/25'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/25'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Wednesday
25 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/26'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/26'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Thursday
26 December
SELECT calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone, max(p.portfolioID) as portfolioID,
					sec.sector,CASE WHEN (sec.sectorurl IS NULL OR sec.sectorurl = '')
                        THEN 'sector'
                        ELSE sec.sectorurl
                    END as SectorURL   
					FROM (
					select seasonReport,calendarID, source, externalID, title, symbol, itemdate, isDisplayed, 1 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/27'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol != '')
					
					UNION
					
					select seasonReport,calendarID, source, externalID, title, type AS symbol, itemdate, isDisplayed, 0 as display, timezone
					from calendar c left join countrycode cc on c.type = cc.code
					where convert(varchar(10),itemDate,111) = '2024/12/27'
					AND isDisplayed = 1
					AND seasonReport = 1
					AND (symbol = '') 
				) AS calendar
				left join (select p.* from portfolio p inner join customerportfolio cp on p.CustomerPortfolioID = cp.CustomerPortfolioID where cp.customerid = '' and cp.archived is NULL) 
				p on calendar.symbol = p.symbol
				LEFT JOIN (SELECT sr.symbol, s.sector,s.sectorID,dbo.RemoveNonAlphaCharacters(s.sector) as sectorurl FROM sector s 
                    INNER JOIN SectorRelationship sr on s.sectorID = sr.sectorID 
                    WHERE isPriority = 1) AS sec on calendar.symbol = sec.symbol
				GROUP BY calendar.calendarID,calendar.source,calendar.externalID,
					calendar.title,calendar.symbol,calendar.itemdate,calendar.isDisplayed,
					calendar.display,calendar.timezone,sec.Sector,sec.sectorurl
				ORDER BY calendar.display, calendar.timezone desc, calendar.symbol, calendar.title 
Friday
27 December

Listed Companies on the Calendar

Date Code
03/12/2024CKFearnings report
Date Code
02/12/2024MTSearnings report