Analyze Taiwan stocks using TWSE OpenAPI, TPEX/MOPS, Yahoo Finance, web search/news, and contrarian sentiment signals to produce structured research reports.
Resources
6Install
npx skillscat add aznitro/tw-stock-agent Install via the SkillsCat registry.
Taiwan Stock Analysis Agent
Purpose
Use this skill when the user wants analysis of Taiwanese equities, the Taiwan market, a watchlist, a sector, or a single stock.
This skill is designed to combine:
- TWSE OpenAPI for official market data
- TPEX / MOPS for OTC and financial disclosure data
- Yahoo Finance for analyst estimates, targets, peer context, and headlines
- Web search / news crawling for fresh catalysts and narrative shifts
- Contrarian sentiment signals (e.g. Banini-style reverse-indicator analysis) as an auxiliary risk layer
Repository Status
This repository is documentation-first. The Python files in scripts/ are placeholders for future data integrations, so the skill should be written to work even when some sources are unavailable.
What this skill should produce
Return analysis in a way that is:
- source-aware: distinguish official data, analyst estimates, news, and sentiment
- structured: give a clear summary, evidence, risks, and conclusion
- practical: avoid vague commentary; tie claims to observed data
- uncertain when appropriate: if sources conflict, say so explicitly
Core principles
- Official data is the anchor
- Prefer TWSE/MOPS/TPEX for facts about price, volume, disclosures, financials, and market structure.
- Yahoo Finance is a narrative and expectation layer
- Use analyst estimates, price targets, and related news to understand consensus and revision trends.
- News is catalyst context, not truth by default
- Verify important claims against official filings when possible.
- Contrarian sentiment is auxiliary
- Reverse-indicator / hype / panic signals can highlight crowded positioning, but must never override hard data.
- Separate signal from interpretation
- Report what was observed first, then what it may imply.
Recommended workflow
1) Normalize the request
Identify:
- ticker(s)
- market scope: listed / OTC / sector / index
- time horizon: intraday / 1D / weekly / medium-term
- output type: quick take / full report / compare watchlist / event analysis
If the user gives a Taiwan ticker, normalize common formats like:
23302330.TW2330.TWO- company name aliases
2) Collect official data first
Prefer these data types where available:
- price, change, open/high/low/close
- volume vs average volume
- P/E, P/B, dividend yield
- margin trading / short selling
- major announcements / disclosures
- corporate governance / penalty notices
- financial statements and revenue trends
3) Mid-session / 11:30 market checks: use official daily proxies when live intraday is limited
For a mid-session Taiwan market note, the best available live signal is often not a direct 11:30 tape snapshot. If intraday feeds are unavailable or partial, use TWSE official historical / daily pages as a proxy and state the limitation clearly.
Recommended fallback order:
- TWSE Highlights of Daily Trading (
fmtqik) to compare today’s total trade value / volume / index vs previous sessions. - TWSE Top 20 by Volume (
mi-stock20) to identify where the day’s real liquidity is concentrating. - Yahoo Finance quote pages for narrative context, valuation, and whether a bellwether like TSMC is near earnings / guidance.
- Reuters / fresh web search to validate whether the headline tape is already saturated with the same bullish/bearish theme.
When doing a mid-session read, explicitly compare:
- today’s trade value vs yesterday
- today’s volume vs yesterday
- whether index is up while liquidity is down
- whether leaders are still expanding or starting to stall
Interpretation rules:
- Price up + volume down = rising caution; rally may be losing sponsorship.
- Strong leaders but ETF-heavy turnover = sentiment can be hot but fragile.
- Broad index strength with fading top names = possible rotation / late-cycle feel.
- Repeated bullish headlines around the same bellwether = contrarian risk signal, not confirmation.
4) Add market narrative data
From Yahoo Finance, extract:
- current quote context
- analyst estimate tables
- revenue and EPS forecast trends
- target price range
- recent upgrades/downgrades if available
- peer comparison context
- headline/news themes
5) Add fresh news and event context
Use web search or crawling to gather:
- company announcements
- earnings / guidance / investor presentation
- macro or sector news
- supply chain / policy / regulatory catalysts
- repeated headlines that indicate a theme
6) Add contrarian sentiment
Treat hype/panic/repetition as a risk modifier.
Useful signals include:
- extremely bullish language with no new facts
- crowded consensus
- retail FOMO or panic language
- market overreaction relative to fundamentals
If a separate Banini / reverse-indicator skill exists in the workspace, use it as an optional sentiment adapter rather than a core dependency. The core agent should still work without it by using general contrarian heuristics from news, search results, and market crowding signals.
7) Synthesize into a scorecard
When enough data exists, provide a scorecard with:
- Trend: bullish / neutral / bearish
- Fundamentals: improving / stable / weakening
- Valuation: cheap / fair / rich / unclear
- Catalysts: positive / neutral / negative
- Sentiment: crowded / balanced / fearful / euphoric
- Risk: low / medium / high
- Confidence: low / medium / high
If signals conflict, prefer “uncertain” over forced certainty.
Output Expectations
When answering the user, keep the result compact and evidence-led:
- start with the most important conclusion
- cite the sources used or clearly name them in prose
- separate raw observations from interpretation
- mention missing data explicitly instead of filling gaps with guesses
Minimal Implementation Guidance
If you later wire this skill into code, keep these boundaries:
- fetch official market data first
- enrich with Yahoo Finance only after the official view is collected
- use news as event context, not as final proof
- treat contrarian signals as a warning layer only
Output format
Use this default structure unless the user asks otherwise.
For a single stock
- Snapshot
- ticker, company name, market, price context
- What the market is saying
- analyst targets, revisions, consensus, related headlines
- What the official data says
- price action, volume, valuation, disclosures, financials
- Catalysts and risks
- upcoming earnings, guidance, news, sector conditions
- Contrarian view
- possible overheat / panic / crowded trade warning
- Conclusion
- concise verdict with caveats
For a watchlist or comparison
Provide a table with:
- ticker
- price trend
- valuation
- earnings momentum
- news intensity
- sentiment score
- risk rating
- final note
For market / sector analysis
Provide:
- macro context
- sector strength/weakness
- breadth / concentration
- leading names
- key risks
- conclusion
Suggested language for conclusions
Use cautious, decision-support wording such as:
- “偏多,但估值已偏高,追價風險上升。”
- “基本面支撐仍在,但短線情緒過熱。”
- “消息面偏正向,但需等待財報 / 指引確認。”
- “反指標訊號升溫,應提高風險意識。”
Avoid absolute buy/sell language unless the user explicitly asks for a trading-style opinion.
Important caveats
- Do not claim real-time certainty unless the underlying data was fetched successfully.
- If Yahoo pages fail or partially render, say so and fall back to whatever visible data was available.
- If news is duplicated across many outlets, mention that it is syndicated rather than treating it as independent confirmation.
- If only partial data is available, clearly label the report as partial.
Best practices
- Prefer facts first, interpretation second.
- Cross-check important claims across at least two sources when possible.
- Treat analyst estimates as expectations, not facts.
- Treat contrarian signals as a warning layer, not a standalone decision rule.
- Keep the report readable: concise bullets plus a short verdict.
Example use cases
- “分析 2330.TW 今天為什麼漲”
- “幫我看 2317.TW 的基本面、籌碼和新聞”
- “比較 2330.TW 與 2454.TW 哪個更有機會”
- “做一份台股盤前重點摘要”
- “用反指標角度看目前市場是否過熱”
Maintenance Notes
If the repository grows, keep the following files aligned:
README.mdandREADME_zh.mdreferences/data-sources.mdreferences/output-schema.mdreferences/scoring-rules.md
Update them together whenever source priority, schema fields, or scoring labels change.
If you need to extend this skill later
Future extensions can add:
- a dedicated cache layer
- formal JSON output schema
- sector rotation logic
- backtesting hooks
- alerting / cron support
- a separate OTC or small-cap mode