Tushare Data
zillionare/zillionare
面向中文自然语言的 Tushare 数据研究技能。用于把“看看这只股票最近怎么样”“帮我查财报趋势”“最近哪个板块最强”“北向资金在买什么”“给我导出一份行情数据”这类请求,转成可执行的数据获取、清洗、对比、筛选、导出与简要分析流程。适用于 A 股、指数、ETF/基金、财务、估值、资金流、公告新闻、板块概念与宏观数据等研究场景。
Scores news, announcements and macro events with the LLM, stores them in an event CSV and blends the decaying event signal with technical signals in signal_engine.py.
$ npx skills add HKUDS/Vibe-Trading --skill event-driven -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install HKUDS/Vibe-Trading event-driven --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent/src/skills/event-driven .claude/skills/event-driven && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "event-driven" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-driven into .claude/skills/event-driven/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "event-driven", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-drivenType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add HKUDS/Vibe-Trading --skill event-driven -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install HKUDS/Vibe-Trading event-driven --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent/src/skills/event-driven .agents/skills/event-driven && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "event-driven" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-driven into .agents/skills/event-driven/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "event-driven", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add HKUDS/Vibe-Trading --skill event-driven -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install HKUDS/Vibe-Trading event-driven --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent/src/skills/event-driven .cursor/skills/event-driven && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "event-driven" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-driven into .cursor/skills/event-driven/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "event-driven", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/HKUDS/Vibe-Trading.git --path agent/src/skills/event-driven--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add HKUDS/Vibe-Trading --skill event-driven -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install HKUDS/Vibe-Trading event-driven --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent/src/skills/event-driven .gemini/skills/event-driven && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "event-driven" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-driven into .gemini/skills/event-driven/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "event-driven", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install HKUDS/Vibe-Trading event-drivenInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add HKUDS/Vibe-Trading --skill event-driven -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent/src/skills/event-driven .github/skills/event-driven && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "event-driven" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-driven into .github/skills/event-driven/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "event-driven", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add HKUDS/Vibe-Trading --skill event-driven -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install HKUDS/Vibe-Trading event-driven --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent/src/skills/event-driven .opencode/skills/event-driven && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "event-driven" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/event-driven into .opencode/skills/event-driven/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "event-driven", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
event-drivenScores news, announcements and macro events with the LLM, stores them in an event CSV and blends the decaying event signal with technical signals in signal_engine.py.
The agent collects news and announcements with the read_url tool, reads each one and gives it a sentiment score from -1.0 to 1.0, then writes the scores into an event CSV with the columns date, event_type, score, source and summary. The date must be when the event became knowable, so an after-close release moves to the next trading day. The CSV is the data layer and signal_engine.py is the logic layer, and the two are kept separate.
Six event types are defined: earnings, macro, policy, sentiment, insider and technical_break, each with a typical impact and duration of a few days to several weeks. In signal_engine.py the event scores decay exponentially over time and are combined by weighted aggregation with the technical signal to give the final trading decision. An example_signal_engine.py file shows the pattern.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 14cabaf. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Event-Driven Sentiment Signals loads about 2.1k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 639 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from HKUDS/Vibe-Trading at commit 14cabaf, republished under its MIT licence (© HKUDS). 639 words, ~2,125 tokens.
.claude/skills/event-driven/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Uses event information such as news, announcements, and macro policy updates. The LLM analyzes sentiment and impact magnitude to generate event-driven trading signals. Event data is managed in CSV format, and technical signals are combined with event signals through weighted aggregation to form the final trading decision.
read_url tool to fetch the full text of news and announcements-1.0 to 1.0 with a standardized prompt (extremely bearish to extremely bullish)date,event_type,score,source,summary schemasignal_engine.py reads the event CSV, applies time decay, and combines it with the technical signalKey principle: the event CSV is the data layer, and signal_engine.py is the logic layer. Keep them decoupled.
date,event_type,score,source,summary
2024-01-15,earnings,0.8,read_url,Q4 revenue beat expectations by 30%
2024-01-20,macro,-0.5,read_url,Central bank raised rates by 25bp
2024-02-01,policy,0.3,read_url,New-energy subsidies extended
2024-02-10,sentiment,-0.7,read_url,Bearish sentiment surged on social media
2024-03-05,insider,0.4,read_url,CEO bought 5 million sharesField descriptions:
| Field | Type | Description |
|---|---|---|
| date | str (YYYY-MM-DD) | Date when the event became knowable (publication date, not occurrence date. If released after market close → use the next trading day) |
| event_type | str | earnings / macro / policy / sentiment / insider / technical_break |
| score | float | -1.0 ~ 1.0 (standardized LLM score) |
| source | str | Data-source tag (such as read_url) |
| summary | str | Event summary (one sentence, no commas) |
| Type | Meaning | Typical Impact | Duration |
|---|---|---|---|
| earnings | Earnings release | Short-term shock | 1-5 days |
| macro | Macro data / central-bank policy | Medium-term impact | 5-20 days |
| policy | Industry policy / regulatory change | Long-term impact | 20-60 days |
| sentiment | Market sentiment / public opinion | Short-term shock | 1-3 days |
| insider | Insider trading / block trade | Medium-term signal | 5-10 days |
| technical_break | Break of a key technical level | Short-term catalyst | 1-5 days |
Event impact decays exponentially over time:
import numpy as np
import pandas as pd
def compute_event_signal(event_df: pd.DataFrame, dates: pd.DatetimeIndex,
decay_lambda: float = 0.1,
min_score_threshold: float = 0.2,
event_lookback: int = 30) -> pd.Series:
"""Compute an event-driven signal with time decay.
Args:
event_df: DataFrame loaded from the event CSV, with date/event_type/score/source/summary columns.
dates: Backtest date sequence (DatetimeIndex).
decay_lambda: Decay coefficient. Higher values decay faster. Default 0.1 (decays to ~37% in about 10 days).
min_score_threshold: Minimum score threshold. Events with |score| below this value are ignored.
event_lookback: Event lookback window in days. Events older than this are excluded.
Returns:
Event signal Series aligned with dates, with value range [-1.0, 1.0].
"""
event_df = event_df[event_df["score"].abs() >= min_score_threshold].copy()
event_df["date"] = pd.to_datetime(event_df["date"])
signal = pd.Series(0.0, index=dates)
for trade_date in dates:
# Only consider events published on or before trade_date (avoid look-ahead)
mask = (event_df["date"] <= trade_date) & \
(event_df["date"] >= trade_date - pd.Timedelta(days=event_lookback))
relevant = event_df[mask]
if relevant.empty:
continue
days_since = (trade_date - relevant["date"]).dt.days.values
scores = relevant["score"].values
# Exponential decay: score * exp(-lambda * days)
decayed = scores * np.exp(-decay_lambda * days_since)
# Sum multiple events and clip to [-1, 1]
signal[trade_date] = np.clip(decayed.sum(), -1.0, 1.0)
return signaldef combine_signals(tech_signal: pd.Series, event_signal: pd.Series,
alpha: float = 0.6) -> pd.Series:
"""Combine technical and event signals with weights.
Args:
tech_signal: Technical signal, range [-1.0, 1.0].
event_signal: Event-driven signal, range [-1.0, 1.0].
alpha: Weight of the technical signal, default 0.6 (technical primary, event secondary).
Returns:
Combined signal, range [-1.0, 1.0].
"""
combined = alpha * tech_signal + (1 - alpha) * event_signal
return combined.clip(-1.0, 1.0)Default alpha = 0.6: technical signal 60%, event signal 40%.
| Parameter | Default | Description |
|---|---|---|
| alpha | 0.6 | Weight of the technical signal (1-alpha is the event weight) |
| decay_lambda | 0.1 | Decay coefficient (higher values decay faster; 0.1 ≈ decays to 37% in 10 days) |
| event_lookback | 30 | Event lookback window in days (older events are excluded) |
| min_score_threshold | 0.2 | Minimum score threshold (events with |
After fetching news with read_url, use the following standardized prompt to keep scoring consistent:
You are a financial event analyst. Read the following news / announcement and score its impact on the stock price.
Scoring scale:
- 1.0: extremely bullish (for example, earnings far above expectations, major favorable policy)
- 0.5: moderately bullish (for example, earnings slightly above expectations, favorable industry news)
- 0.2: mildly bullish
- 0.0: neutral (no obvious impact)
- -0.2: mildly bearish
- -0.5: moderately bearish (for example, earnings below expectations, tighter industry regulation)
- -1.0: extremely bearish (for example, accounting fraud, major violations, black-swan event)
Score strictly on the scale above. Output one number only. Do not explain.
News content:
{news_content}
Score:date in the event CSV must be the "knowable date" — announcements released after market close should use the next trading day, not the same day. In backtests, strictly enforce event_date <= trade_date(date, event_type) or average the scoressummary field: a common reason for CSV parsing errors — avoid commas in summary, or read with pd.read_csv(quoting=csv.QUOTE_ALL)decay_lambda makes event impact disappear too quickly, while overly small values keep stale events active for too long. In theory, different event types should use different decay profiles, but the default simplifies all of them to 0.1pip install pandas numpyNo additional dependencies. LLM analysis is handled by the Agent itself, and the read_url tool is built in.
[-1.0, 1.0] (computed from event score + time decay)alpha * tech_signal + (1 - alpha) * event_signal, clipped to [-1.0, 1.0]event_signal = 0, so the combined signal collapses to the pure technical signal© HKUDS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in agent/src/skills/event-driven of HKUDS/Vibe-Trading.
Open the folder on GitHubat commit 14cabaf
Event-Driven Sentiment Signals next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Event-Driven Sentiment Signals this skillHKUDS/Vibe-Trading | 35k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Tushare Datazillionare/zillionare | 319 | 2 repos | ~2.3k | Automated safety check: Pass | None | |
| Quant Blog Writingzillionare/zillionare | 319 | — | ~895 | Automated safety check: Pass | None | |
| Quant Analystmajiayu000/claude-skill-registry | 666 | 1 repos | ~964 | Automated safety check: Pass | MIT | |
| Backtestinggauss314/skills | 246 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Option Pricinggauss314/skills | 246 | — | ~4.7k | Automated safety check: Pass | MIT |
zillionare/zillionare
面向中文自然语言的 Tushare 数据研究技能。用于把“看看这只股票最近怎么样”“帮我查财报趋势”“最近哪个板块最强”“北向资金在买什么”“给我导出一份行情数据”这类请求,转成可执行的数据获取、清洗、对比、筛选、导出与简要分析流程。适用于 A 股、指数、ETF/基金、财务、估值、资金流、公告新闻、板块概念与宏观数据等研究场景。
zillionare/zillionare
撰写文笔精炼、富有深度的量化交易博文,论点清晰、证据确凿、叙事层次更加丰富。适用于量化交易博文、因子研究、回测复盘、数据源排查、市场微观结构、策略原理、风险控制、职业观察、量化人物故事等选题。文章将聚焦具体角度,提供详实的大纲、证据规划及成稿,力求内容兼具思想深度与诚实性,而非单纯口号式宣传;同时,通过人物经历、引言、贡献及行业背景的融入,让文章更具可读性和吸引力。
majiayu000/claude-skill-registry
Expert in quantitative finance, algorithmic trading, and financial data analysis using Python (Pandas/NumPy), statistical modeling, and machine learning.
gauss314/skills
Academic backtesting framework for quantitative research. An agent skill from gauss314/skills.
gauss314/skills
Pricing completo de opciones europeas y americanas. An agent skill from gauss314/skills.
agiprolabs/claude-trading-skills
High-performance vectorized backtesting with parameter optimization, portfolio simulation, and rich performance metrics
HKUDS/Vibe-Trading
Index of Eastmoney's free, no-token market data interfaces for China A-shares and Hong Kong stocks: fund flows, dragon-tiger lists, margin trading, reports and news.
HKUDS/Vibe-Trading
Retrieves public OKX cryptocurrency market data such as spot prices, candlesticks, funding rates and open interest through the OKX V5 REST API, with no authentication.
HKUDS/Vibe-Trading
Fetches U.S. SEC EDGAR data: resolves tickers to CIK numbers, lists recent 10-K, 10-Q and 8-K filings with document URLs, and pulls XBRL financial series.
HKUDS/Vibe-Trading
Predicts whether a mainland China A-share company risks an ST or *ST warning after its next annual report, using financial thresholds and Sina penalty records.
HKUDS/Vibe-Trading
Breaks a structural trend such as AI infrastructure into its physical supply chain and ranks lesser-known listed companies sitting on each bottleneck.
HKUDS/Vibe-Trading
Plans and drafts an eight-part, roughly 120k-word investigative series on one company, built around a strict fact-check pass rather than fast drafting.
Scores news, announcements and macro events with the LLM, stores them in an event CSV and blends the decaying event signal with technical signals in signal_engine.py. 0, then writes the scores into an event CSV with the columns date, event_type, score, source and summary. The date must be when the event became knowable, so an after-close release moves to the next trading day.
Event-Driven Sentiment Signals fits situations like: turning news and announcements into dated sentiment scores for a backtest; combining event signals with technical signals through weights; setting the time decay for earnings, macro or policy events; structuring event data as a CSV that signal_engine.py reads.
Run `npx skills add HKUDS/Vibe-Trading --skill event-driven -a claude-code`. Or copy the skill folder (agent/src/skills/event-driven in HKUDS/Vibe-Trading) into .claude/skills/event-driven in your project. Claude Code loads it when a task matches its description.
Run `npx skills add HKUDS/Vibe-Trading --skill event-driven -a codex`. Or copy the skill folder (agent/src/skills/event-driven in HKUDS/Vibe-Trading) into .agents/skills/event-driven in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add HKUDS/Vibe-Trading --skill event-driven -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/event-driven, .gemini/skills/event-driven, .github/skills/event-driven and .opencode/skills/event-driven in your project.
Going by SKILL.md and its folder, Event-Driven Sentiment Signals needs Python for the scripts in its folder and the command-line tools its instructions call (pip). Our summary lists: The read_url tool for fetching articles; Python with pandas and numpy.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Event-Driven Sentiment Signals is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Event-Driven Sentiment Signals: Tushare Data (zillionare/zillionare, 319 stars), Quant Blog Writing (zillionare/zillionare, 319 stars), Quant Analyst (majiayu000/claude-skill-registry, 666 stars) and Backtesting (gauss314/skills, 246 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
HKUDS (a GitHub organization) maintains it in HKUDS/Vibe-Trading, which has 34,949 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 8, 2026.
Source: HKUDS/Vibe-Trading on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.