Generating Daily Stock Market Report
with AI
May 19, 2026
Introduction
In this blog post, we will discuss a very simple way of generating a daily stock market report using a simple "agent". The word "agent" is used loosely here as this is probably a simple usecase.
Pre-requisite
| What is needed | What is used |
|---|---|
| Coding Agent | OpenCode |
| LLM Provider | LM Studio setup locally |
| Model | Qwen3.6-27B (Q4_K_M) from lmstudio_community |
OpenCode Installation
- Install OpenCode if it is not installed yet. Only the OpenCode CLI is needed. Follow the instruction at https://github.com/anomalyco/opencode#installation
- Configure the
providerin~/.config/opencode/opencode.json. The wholejsonfile is provided here for completenessopencode.json
{ "$schema": "https://opencode.ai/config.json", "plugin": [ "oh-my-openagent@latest", "superpowers@git+https://github.com/obra/superpowers.git", "opencode-large-image-optimizer@latest" ], "model": "Unsloth Studio (remote)/Qwen3.6-27B-GGUF", "provider": { "LM Studio (local)": { "npm": "@ai-sdk/openai-compatible", "options": { "baseURL": "http://192.168.68.105:1234/v1" }, "models": { "qwen/qwen3.6-27b": { "name": "QWen3.6 27B", "limit": { "context": 65525, "output": 65535 }, "tools": true } } } }, "mcp": { "desktop-automation": { "type": "local", "enabled": false, "command": ["/home/linus/dev/misc/mcps/gceu_workshop_mcp_live/mcp-server"] }, "chrome-devtools": { "type": "local", "enabled": false, "command": ["npx", "-y", "chrome-devtools-mcp@latest"] }, "kubernetes": { "type": "local", "enabled": false, "command": ["npx", "-y", "kubernetes-mcp-server@latest"] } } }
Create the Market Analyst Agent
Create the Agent Specification
Create a markdown file for the agent, this specifies "what" the agent should do:market-analyst.md
---
description: Daily ASX market analyst producing concise, data-first reports for portfolio managers
mode: primary
model: "Unsloth Studio (remote)/Qwen3.6-27B-GGUF"
temperature: 0.3
---
You are a senior market analyst at a Sydney-based fund. Your job is to produce concise, actionable daily ASX market reports for portfolio managers who have zero time for fluff.
## Output Format
Every report follows this structure:
### Market Snapshot
- ASX 200 (XJO) with points change, % change, and closing level
- All Ordinaries (XAO) if notable divergence
- ASX futures (SPI 200) and what they're signalling for next session
- VIX equivalent — VXA (ASX 200 VIX) level and what it signals
### US & Global Session Recap
- S&P 500, NASDAQ, DJIA — closing levels, % changes, key drivers
- US Treasury yields (2Y, 10Y) and curve movement
- What US session means for ASX positioning (risk-on/risk-off flow)
- Asian session wrap (Nikkei, Hang Seng, Shanghai) if relevant to ASX open
### Commodity Markets
- Iron ore (SGX/CFR China) — critical for BHP, RIO, FMG
- Coal (Newcastle thermal, metallurgical) — WHITE, NCZ impact
- Copper (LME) — freeport/global growth signal
- Lithium & rare earths — IGO, PIL, LYC catalysts
- Oil (Brent, WTI) — energy sector and inflation signal
- Gold (spot, COMEX) — ASX gold miners are ~8% of index
- Agricultural (wheat, cattle) if materially moving ag stocks
- Note: Always tie commodity moves back to specific ASX names
### Sector Performance
- Top 3 and bottom 3 ASX sectors with brief reasoning
- Any notable rotation (e.g., miners vs banks, defensives vs cyclicals)
- Key sector index moves (XJO banks, XJO miners, XJO tech, XJO REITs)
### Key Movers
- 3-5 ASX-listed stocks with significant moves (>3%) and WHY
- Notable block trades or unusual volume
- Any ASX announcements (ASX Announcements platform) that drove moves
- Small/mid-cap movers worth flagging
### Macro & Domestic
- RBA developments (rate decisions, meeting minutes, speeches)
- Key Australian economic data releases (ABS, RBA, NAB, Westpac)
- Chinese data/market impact on ASX (CSI 300, Shanghai Composite, property sector)
- 2-3 headlines that actually matter — skip ASX PR noise
### Cross-Asset
- AUD/USD direction and key drivers (commodity FX correlation)
- USD index (DXY) — inverse relationship with commodities/ASX
- Bitcoin/crypto if materially moving tech or retail sentiment
### Stock Recommendations
- 2-4 actionable stock ideas (buy/sell/hold) with ASX ticker, entry zone, target price, and stop-loss
- Each recommendation must include: thesis (1-2 sentences), key catalyst, and risk factor
- Separate into conviction levels: High Conviction / Watch List
- Tie each pick back to data from earlier sections (commodity moves, sector rotation, announcements)
- Note position sizing guidance relative to portfolio risk (e.g., "2-3% portfolio weight")
### Forward Look
- Tomorrow's key events: US data, earnings, RBA speakers, Chinese data
- Ex-dividend stocks to note
- Technical levels on ASX 200 to watch
- Risk factors on the radar (Fed policy, China stimulus, commodity swings)
## Rules
1. Lead with numbers, not narratives. "XJO -45pts (-0.6%) dragged by miners on iron ore selloff" not "The Australian market struggled today..."
2. Every claim needs a source or data point. No vague "analysts expect."
3. Flag uncertainty. If something is unclear, say so.
4. ASX is heavily weighted to financials (~30%) and miners (~15%). Contextualise moves against this.
5. Always connect the dots: US close → commodity moves → China data → ASX positioning.
6. Commodity prices are the #1 external driver of ASX direction. Always check them.
7. No generic advice. Every insight should be specific to today's market action.
8. Keep it under 800 words. Brevity is a feature.
9. Use bullet points. No paragraphs longer than 3 sentences.
## Tone
Write like you're briefing a PM at 9:30am AEST before the open. Direct. Data-first. No hedging language unless the data warrants it. Skip the "as we can see" filler.
## Data Gathering
When fetching data:
- Prioritise official sources: ASX.com.au, RBA, ABS, Bloomberg, Reuters, CME, LME, SGX
- Cross-reference at least 2 sources for significant claims
- Note the timestamp of your data — markets move fast
- If real-time data is unavailable, state the data cutoff time clearly
- Check ASX Announcements (asx.com.au/announcements) for company-specific catalysts
- For commodities: check SGX iron ore, LME metals, ICE Brent, COMEX gold
Create the Report Template
To have a consistent style for the HTML output when we change models, create the following HTML:asx-report-template.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ASX Daily Market Report — Mon 18 May 2026</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background: #0f1117; color: #e0e0e0; line-height: 1.55; max-width: 900px; margin: 0 auto; padding: 32px 24px; }
h1 { font-size: 26px; color: #fff; border-bottom: 3px solid #e63946; padding-bottom: 8px; margin-bottom: 4px; }
.subtitle { color: #888; font-size: 13px; margin-bottom: 28px; }
h2 { font-size: 17px; color: #e63946; margin: 28px 0 10px 0; text-transform: uppercase; letter-spacing: 0.5px; border-left: 4px solid #e63946; padding-left: 10px; }
h3 { font-size: 14px; color: #aaa; margin: 14px 0 6px 0; text-transform: uppercase; letter-spacing: 0.3px; }
ul { margin: 6px 0 12px 20px; }
li { margin-bottom: 5px; font-size: 14px; }
.tag-up { color: #2ecc71; font-weight: 600; }
.tag-down { color: #e74c3c; font-weight: 600; }
.tag-neutral { color: #f39c12; font-weight: 600; }
table { width: 100%; border-collapse: collapse; margin: 10px 0 16px 0; font-size: 13px; }
th { background: #1a1d28; color: #aaa; text-align: left; padding: 8px 10px; border-bottom: 2px solid #333; font-weight: 600; text-transform: uppercase; font-size: 11px; letter-spacing: 0.5px; }
td { padding: 7px 10px; border-bottom: 1px solid #222; }
tr:hover td { background: #1a1d28; }
.conviction-high { border-left: 4px solid #2ecc71; background: #0d1f14; padding: 12px 14px; margin: 8px 0; border-radius: 0 4px 4px 0; }
.conviction-watch { border-left: 4px solid #f39c12; background: #1f1a0d; padding: 12px 14px; margin: 8px 0; border-radius: 0 4px 4px 0; }
.conviction-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 4px; }
.conviction-high .conviction-label { color: #2ecc71; }
.conviction-watch .conviction-label { color: #f39c12; }
.ticker { font-weight: 700; color: #fff; }
.note { font-size: 12px; color: #666; font-style: italic; margin-top: 20px; padding-top: 12px; border-top: 1px solid #333; }
.data-cutoff { background: #1a1d28; padding: 8px 12px; border-radius: 4px; font-size: 12px; color: #888; margin-bottom: 20px; }
.highlight-box { background: #1a1d28; border: 1px solid #333; border-radius: 6px; padding: 14px; margin: 10px 0; }
.highlight-box .label { font-size: 11px; color: #888; text-transform: uppercase; }
.highlight-box .value { font-size: 20px; font-weight: 700; color: #fff; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 10px 0; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 10px 0; }
@media (max-width: 600px) { .grid-3, .grid-4 { grid-template-columns: 1fr; } }
</style>
</head>
<body>
<h1>ASX Daily Market Report</h1>
<p class="subtitle">Monday 18 May 2026 — Pre-open briefing • Data as of close Fri 15 May 2026 / overnight US session</p>
<div class="data-cutoff">
<strong>Data cutoff:</strong> ASX close 15 May 2026 4:10pm AEST | US close 15 May 2026 4:00pm ET | Commodities/FX as of 17 May 2026 weekend settlement. Monday open pending.
</div>
<!-- MARKET SNAPSHOT -->
<h2>Market Snapshot</h2>
<div class="grid-4">
<div class="highlight-box"><div class="label">ASX 200 (XJO)</div><div class="value tag-down">8,630.80</div><div style="font-size:12px;color:#e74c3c;">-9.91 (-0.11%)</div></div>
<div class="highlight-box"><div class="label">All Ordinaries</div><div class="value tag-down">8,858</div><div style="font-size:12px;color:#e74c3c;">-0.16%</div></div>
<div class="highlight-box"><div class="label">SPI 200 Futures</div><div class="value tag-down">~8,590</div><div style="font-size:12px;color:#e74c3c;">Indicative -30 to -40pts</div></div>
<div class="highlight-box"><div class="label">VIX (CBOE)</div><div class="value tag-neutral">18.43</div><div style="font-size:12px;color:#f39c12;">+6.78% — elevated</div></div>
</div>
<ul>
<li>XJO closed flat at 8,631 after a choppy session — 15th decline in 19 sessions. Index down <span class="tag-down">-3.62% month</span>, +3.44% YoY.</li>
<li>All Ords diverged slightly (-0.16%), Small Caps underperformed (-0.27%).</li>
<li>Resources index dragged -2.24% on iron ore/copper weakness; All Tech bucked the trend +2.25%.</li>
<li>SPI 200 futures signalling a lower open: US indices sold off Friday (S&P -1.24%, Nasdaq -1.54%), VIX spiked 6.8%. Expect XJO to open 30-40pts lower near 8,590-8,600.</li>
<li>VXA (ASX VIX) tracking CBOE VIX direction — 18.43 signals elevated but not panic-level fear. Above 20 would warrant defensive positioning.</li>
</ul>
<h2>US & Global Session Recap</h2>
<table>
<tr><th>Index</th><th>Close</th><th>Change</th><th>% Chg</th></tr>
<tr><td>S&P 500</td><td>7,408.50</td><td class="tag-down">-92.74</td><td class="tag-down">-1.24%</td></tr>
<tr><td>NASDAQ Composite</td><td>26,225.15</td><td class="tag-down">-410.08</td><td class="tag-down">-1.54%</td></tr>
<tr><td>Dow Jones</td><td>49,526.17</td><td class="tag-down">-537.29</td><td class="tag-down">-1.07%</td></tr>
<tr><td>Russell 2000</td><td>2,793.30</td><td class="tag-down">-69.79</td><td class="tag-down">-2.44%</td></tr>
</table>
<ul>
<li><strong>Driver:</strong> 10Y Treasury yield hit ~4.6% (1-year high). WTI crude above $100/bbl reignited inflation fears. Fed rate-cut expectations pushed out — market now pricing <em>higher for longer</em>.</li>
<li>AI/tech bellwethers led the selloff: Nvidia, Amazon, Applied Materials all lagged. Russell 2000 (-2.44%) worst performer — small caps most rate-sensitive.</li>
<li>VIX surged +6.78% to 18.43 — highest since early May. Risk-off flow confirmed.</li>
<li><strong>ASX implication:</strong> Negative carry-through. US tech weakness hits XJO tech (WTC, XRO, TNE). Higher yields pressure bank valuations (CBA, NAB, WBC, ANZ). Oil-sensitive names (WDS, STO) get a bid from higher crude.</li>
</ul>
<h3>Asian Session Wrap (Fri 15 May)</h3>
<table>
<tr><th>Index</th><th>Close</th><th>% Chg</th></tr>
<tr><td>Nikkei 225</td><td>61,409</td><td class="tag-down">-1.98%</td></tr>
<tr><td>Hang Seng</td><td>25,963</td><td class="tag-down">-1.62%</td></tr>
<tr><td>Shanghai Composite</td><td>4,135</td><td class="tag-down">-1.02%</td></tr>
<tr><td>CSI 300</td><td>4,860</td><td class="tag-down">-1.12%</td></tr>
</table>
<ul>
<li>Trump-Xi summit in Beijing produced limited concrete outcomes — "fantastic trade deals" claimed but no specifics. China to buy 200 Boeing aircraft + ag imports. Market underwhelmed.</li>
<li>Shanghai lost -1.07% for the week. BYD -2.42%, Foxconn Industrial -1.43%. Negative read-through for ASX China-exposed names (JHX, RMD, CSL).</li>
</ul>
<h2>Commodity Markets</h2>
<table>
<tr><th>Commodity</th><th>Price</th><th>Move</th><th>ASX Impact</th></tr>
<tr><td>Iron Ore (SGX 62% Fe)</td><td>~$110.93/t</td><td class="tag-down">Softening</td><td><span class="ticker">BHP</span> -2.6%, <span class="ticker">RIO</span> -3.2%, <span class="ticker">FMG</span> pressured</td></tr>
<tr><td>Newcastle Coal (ICE)</td><td>$131.70/t</td><td class="tag-neutral">Flat</td><td><span class="ticker">WHC</span>, <span class="ticker">NCZ</span> — neutral</td></tr>
<tr><td>Copper (LME 3M)</td><td>~$13,100/t</td><td class="tag-down">Off ATH $13,445</td><td><span class="ticker">S32</span> +5.1% (divergent), <span class="ticker">FMG</span> (Iron Bridge copper)</td></tr>
<tr><td>Brent Crude</td><td>$109.26/bbl</td><td class="tag-up">+3.35%</td><td><span class="ticker">WDS</span>, <span class="ticker">STO</span>, <span class="ticker">BPT</span> — direct beneficiaries</td></tr>
<tr><td>WTI Crude</td><td>$102.64/bbl</td><td class="tag-up">+1.60%</td><td>Inflation signal — negative for rate-sensitive sectors</td></tr>
<tr><td>Gold (spot)</td><td>$4,561.90/oz</td><td class="tag-down">-2.63%</td><td><span class="ticker">EVN</span> -5.5%, <span class="ticker">NST</span>, <span class="ticker">RRL</span> — gold miners sold off</td></tr>
</table>
<ul>
<li><strong>Iron ore:</strong> CFR Qingdao 62% fines at ~$110.90/t. Chinese property sector remains the anchor — stimulus talk without concrete action. BHP and RIO both dragged XJO lower on Friday. Watch SGX Monday session for direction.</li>
<li><strong>Oil:</strong> Brent at $109 on Strait of Hormuz disruption. Saudi Aramco CEO warns market losing ~100M bbl/week supply. EIA forecasts Brent averaging $106 in May/Jun. Structural support for energy stocks but inflation headwind for broader market.</li>
<li><strong>Gold:</strong> Sharp -2.6% pullback to $4,562 as higher yields and stronger USD hit bullion. Gold miners were Friday's worst ASX sector. Structural bull case intact (central bank buying, geopolitical risk) but near-term pain.</li>
<li><strong>Copper:</strong> Consolidating off ATH. LME backwardation signals physical tightness. Net longs at 80th percentile — correction risk. S32 bucked the trend Friday (+5.1%) on diversified base metals exposure.</li>
</ul>
<h2>Sector Performance</h2>
<h3>Top 3 Sectors (Fri 15 May)</h3>
<ul>
<li><span class="tag-up">Technology (+2.25%)</span> — SiteMinder, WiseTech led rally. Defensive rotation into growth as miners/banks sold off.</li>
<li><span class="tag-up">Energy</span> — Brent +3.35% lifted WDS (+1.02%), STO. Oil price tailwind from Hormuz disruption.</li>
<li><span class="tag-up">Materials (selective)</span> — S32 +5.1% on copper/diversified metals strength. Broad materials index still negative.</li>
</ul>
<h3>Bottom 3 Sectors</h3>
<ul>
<li><span class="tag-down">Gold Miners</span> — EVN -5.5%, NST, RRL all hit by gold selloff. ~8% of XJO weight — material drag.</li>
<li><span class="tag-down">Resources (-2.24%)</span> — BHP -2.6%, RIO -3.2%, PLS -5.8%. Iron ore + lithium weakness.</li>
<li><span class="tag-down">Financials</span> — Budget negative gearing/CGT changes + CBA Q3 update anxiety. NAB -2.1%, ANZ -1.9%. Banks ~30% of XJO — key drag.</li>
</ul>
<ul>
<li><strong>Rotation:</strong> Clear flight from commodity-linked defensives (gold miners) into tech growth. Banks caught between budget risk and rate uncertainty. Energy the only clean beneficiary of the macro setup.</li>
</ul>
<h2>Key Movers</h2>
<table>
<tr><th>Stock</th><th>Price</th><th>Chg</th><th>Driver</th></tr>
<tr><td><span class="ticker">PLS</span> Pilbara Minerals</td><td class="tag-down">-5.8%</td><td>Lithium price pressure + broader resource selloff</td></tr>
<tr><td><span class="ticker">EVN</span> Evolution Mining</td><td class="tag-down">-5.5%</td><td>Gold -2.6% — yield-driven bullion selloff</td></tr>
<tr><td><span class="ticker">RIO</span> Rio Tinto</td><td class="tag-down">-3.2%</td><td>Iron ore softness; China demand concerns post Trump-Xi</td></tr>
<tr><td><span class="ticker">BHP</span> BHP Group</td><td class="tag-down">-2.6%</td><td>Same as RIO; $60.46 close. Index heavyweight drag.</td></tr>
<tr><td><span class="ticker">S32</span> South32</td><td class="tag-up">+5.1%</td><td>Copper/diversified metals bid; outperformer in weak session</td></tr>
<tr><td><span class="ticker">CBA</span> Commonwealth Bank</td><td class="tag-up">+1.9%</td><td>Bounce after steep prior drop; Q3 trading update due</td></tr>
</table>
<ul>
<li><strong>Unusual volume:</strong> BHP 7.3M shares traded (above average). RIO 1.2M. PLS heavy selling on lithium sentiment.</li>
<li><strong>Small/mid-cap:</strong> European Lithium (EUR) +75.7% on announcement; 1414 Degrees (14D) +133% on volume of 152M shares — speculative flow, not institutional.</li>
</ul>
<h2>Macro & Domestic</h2>
<ul>
<li><strong>RBA cash rate: 4.35%</strong> — third hike of 2026 (May 5 decision, 8-1 vote). Board language firmer on inflation: "early signs firms passing on cost pressures," "inflation expectations risen." Middle East conflict now framed as <em>clear inflationary impulse</em>, not just uncertainty.</li>
<li><strong>Federal Budget:</strong> Negative gearing curbs + CGT changes announced. Residential mortgages = 45-50% of big four bank assets. Any sustained property price decline = mortgage stress + bad debt risk. Banks remain exposed.</li>
<li><strong>China:</strong> Trump-Xi summit produced vague "trade deals" — 200 Boeing aircraft order + ag imports. No property stimulus. Shanghai -1.07% for week. CSI 300 -1.12%. Negative for ASX iron ore demand narrative.</li>
<li><strong>US-Iran:</strong> Ceasefire "on life support" per Trump. Strait of Hormuz effectively disrupted. Brent $109. EIA forecasts $106/bbl for Q2. This is the #1 macro variable — drives oil, inflation, rates, and ASX direction.</li>
<li><strong>Upcoming data:</strong> Flash PMI (May), RBA minutes, April jobs data — all due this week.</li>
</ul>
<h2>Cross-Asset</h2>
<table>
<tr><th>Asset</th><th>Level</th><th>Move</th><th>Signal</th></tr>
<tr><td>AUD/USD</td><td>0.7152</td><td class="tag-down">-1.14% (7d)</td><td>Commodity FX weakness; oil-driven USD strength</td></tr>
<tr><td>DXY (USD Index)</td><td>99.25</td><td class="tag-up">+0.04%</td><td>Stable but firm — inverse pressure on commodities</td></tr>
<tr><td>10Y US Treasury</td><td>~4.60%</td><td class="tag-up">1-year high</td><td>Hawkish Fed repricing — negative for equity valuations</td></tr>
<tr><td>Bitcoin</td><td>$78,258</td><td class="tag-neutral">+0.06%</td><td>Flat — no material ASX tech/retail sentiment impact</td></tr>
</table>
<ul>
<li>AUD/USD at 0.7152, down from 0.7259 peak on May 13. Commodity currency under pressure from oil-driven USD strength and China growth concerns. Further AUD weakness would support ASX exporters (miners) but hurt importers.</li>
<li>10Y yield at 4.6% is the critical level — above this, equity multiples compress. Banks benefit from higher NIM but suffer from mortgage stress risk.</li>
</ul>
<h2>Stock Recommendations</h2>
<div class="conviction-high">
<div class="conviction-label">High Conviction — BUY</div>
<p><span class="ticker">WDS</span> Woodside Energy — <strong>Entry: $30.50-$31.00</strong> | <strong>Target: $34.00</strong> | <strong>Stop: $28.50</strong></p>
<ul>
<li><strong>Thesis:</strong> Brent at $109 with structural supply disruption (Strait of Hormuz). EIA forecasts $106/bbl through Q2. WDS is the cleanest ASX-listed oil producer with direct leverage to Brent. Saudi Aramco warns 100M bbl/week supply loss.</li>
<li><strong>Catalyst:</strong> Any further Hormuz escalation or OPEC+ production decision. WDS Q2 production update.</li>
<li><strong>Risk:</strong> US-Iran ceasefire breakthrough would crash oil 15-20% overnight. Position size: <strong>3-4% portfolio weight</strong>.</li>
</ul>
</div>
<div class="conviction-high">
<div class="conviction-label">High Conviction — BUY</div>
<p><span class="ticker">S32</span> South32 — <strong>Entry: $3.80-$4.00</strong> | <strong>Target: $4.60</strong> | <strong>Stop: $3.50</strong></p>
<ul>
<li><strong>Thesis:</strong> Diversified base metals (copper, aluminium, zinc) at LME copper ~$13,100/t with backwardation signalling physical tightness. S32 was Friday's best large-cap performer (+5.1%) — momentum confirmed. Less iron ore exposure than BHP/RIO.</li>
<li><strong>Catalyst:</strong> Copper supply constraints (Samsung labour unrest, SHFE net shorts at widest since 2021). Any China infrastructure stimulus.</li>
<li><strong>Risk:</strong> Copper correction from stretched net longs (80th percentile). Global recession would hit base metals hard. Position size: <strong>2-3% portfolio weight</strong>.</li>
</ul>
</div>
<div class="conviction-watch">
<div class="conviction-label">Watch List — ACCUMULATE ON WEAKNESS</div>
<p><span class="ticker">CBA</span> Commonwealth Bank — <strong>Entry: $155-$158</strong> | <strong>Target: $170</strong> | <strong>Stop: $148</strong></p>
<ul>
<li><strong>Thesis:</strong> Bounced +1.9% Friday after steep prior drop. Q3 trading update due this week — if results beat, re-rating catalyst. RBA at 4.35% supports NIM expansion. Budget negative gearing changes already priced in.</li>
<li><strong>Catalyst:</strong> Q3 trading update (due this week). Any better-than-expected mortgage book quality data.</li>
<li><strong>Risk:</strong> Budget-driven property price decline = bad debt spike. 10Y yield at 4.6% pressures valuation multiples. Position size: <strong>2% portfolio weight</strong>, scale in on dips.</li>
</ul>
</div>
<div class="conviction-watch">
<div class="conviction-label">Watch List — WAIT FOR ENTRY</div>
<p><span class="ticker">EVN</span> Evolution Mining — <strong>Entry: $4.80-$5.00</strong> | <strong>Target: $6.20</strong> | <strong>Stop: $4.40</strong></p>
<ul>
<li><strong>Thesis:</strong> Gold sold off -2.6% to $4,562 on yield spike, but structural bull case intact (central bank buying, geopolitical risk, de-dollarisation). EVN -5.5% Friday creates entry opportunity. Long-term gold forecasts $5,750 by end-2026.</li>
<li><strong>Catalyst:</strong> Any Fed pivot signal (rate cut talk), further Middle East escalation, or USD weakness.</li>
<li><strong>Risk:</strong> 10Y yield staying above 4.5% = continued gold headwind. Position size: <strong>1.5-2% portfolio weight</strong>, wait for gold to stabilise above $4,500.</li>
</ul>
</div>
<h2>Forward Look — Tuesday 19 May</h2>
<h3>Key Events</h3>
<ul>
<li><strong>RBA Meeting Minutes</strong> — release Wed 20 May. Market will scrutinise inflation language and any hint of further hikes.</li>
<li><strong>Flash PMI (May)</strong> — due this week. Key read on Australian economic momentum post rate hikes.</li>
<li><strong>April Jobs Data</strong> — due this week. Labour market strength = RBA hawkishness = bank pressure.</li>
<li><strong>CBA Q3 Trading Update</strong> — due this week. Critical for bank sector direction.</li>
<li><strong>US data:</strong> Fed speakers, existing home sales, initial jobless claims. Any hawkish Fed commentary = further yield pressure.</li>
<li><strong>China:</strong> No major data scheduled, but property sector updates and PBOC MLF rate decision watched.</li>
</ul>
<h3>Ex-Dividend</h3>
<ul>
<li>Monitor ASX ex-div calendar for this week — major miners and banks typically pay in May/Jun window.</li>
</ul>
<h3>Technical Levels — ASX 200</h3>
<ul>
<li><strong>Support:</strong> 8,580 (20-day MA) → 8,500 (psychological) → 8,400 (March low zone)</li>
<li><strong>Resistance:</strong> 8,700 → 8,794 (May 6 high) → 8,878 (May 7 high)</li>
<li>XJO trading below all major MAs — bearish technical setup. A break below 8,580 opens 8,500 quickly.</li>
</ul>
<h3>Risk Factors on Radar</h3>
<ul>
<li><strong>Fed policy:</strong> 10Y at 4.6% — any move above 4.7% triggers equity multiple compression globally.</li>
<li><strong>China stimulus:</strong> Trump-Xi summit produced no property support. Iron ore demand narrative weakens if China doesn't act.</li>
<li><strong>Commodity swings:</strong> Oil at $109 is a double-edged sword — supports energy stocks but fuels inflation = higher rates = equity headwind.</li>
<li><strong>Iran ceasefire:</strong> Any breakthrough = oil crashes 15-20% = energy stocks tank, but broader market rallies on inflation relief. Binary risk.</li>
<li><strong>AUD:</strong> Below 0.7100 would signal commodity FX capitulation — typically coincides with ASX bottoms.</li>
</ul>
<p class="note">
<strong>Disclaimer:</strong> This report is for informational purposes only and does not constitute financial advice. All data sourced from ASX, Yahoo Finance, Trading Economics, Investing.com, RBA, EIA, HKEX, FRED, and Barchart. Prices as of market close 15 May 2026 unless otherwise noted. Position sizing guidance is illustrative and should be adjusted to individual portfolio risk parameters.
</p>
</body>
</html>
Generate the Report
Finally, we can generate the report using the following prompt:Terminal
opencode run --agent market-analyst "Generate ASX daily stock market report. Write into an html file with the template in .opencode/agents/asx-report-template.html with the filename asx-daily-report-YYYY-MM-DD.html" --model "LM Studio (local)/qwen/qwen3.6-27b"
Sample Generated Reports
Here are sample reports generated using the agent defined above:
- ASX Daily Market Report for Tue 19 May 2026 using Qwen3.6 27B hosted locally (LM Studio)
- ASX Daily Market Report for Tue 19 May 2026 using DeepSeek v4 Flash
- ASX Daily Market Report for Tue 19 May 2026 using MiniMax M2.5
- ASX Daily Market Report for Tue 19 May 2026 using Claude Opus 4.7
- ASX Daily Market Report for Tue 19 May 2026 using Claude Sonnet 4.6