Senior Data Scientist
Raidriar7170/hermes-skilleval
World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics.
Trains scikit-learn models with walk-forward validation on features from OHLCV data to predict return direction and turn the predictions into trading signals.
$ npx skills add HKUDS/Vibe-Trading --skill ml-strategy -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install HKUDS/Vibe-Trading ml-strategy --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/ml-strategy .claude/skills/ml-strategy && 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 "ml-strategy" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/ml-strategy into .claude/skills/ml-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-strategy", 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/ml-strategyType 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 ml-strategy -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install HKUDS/Vibe-Trading ml-strategy --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/ml-strategy .agents/skills/ml-strategy && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ml-strategy" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/ml-strategy into .agents/skills/ml-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-strategy", 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 ml-strategy -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install HKUDS/Vibe-Trading ml-strategy --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/ml-strategy .cursor/skills/ml-strategy && 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 "ml-strategy" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/ml-strategy into .cursor/skills/ml-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-strategy", 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/ml-strategy--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 ml-strategy -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install HKUDS/Vibe-Trading ml-strategy --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/ml-strategy .gemini/skills/ml-strategy && 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 "ml-strategy" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/ml-strategy into .gemini/skills/ml-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-strategy", 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 ml-strategyInstalls 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 ml-strategy -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/ml-strategy .github/skills/ml-strategy && 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 "ml-strategy" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/ml-strategy into .github/skills/ml-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-strategy", 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 ml-strategy -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 ml-strategy --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/ml-strategy .opencode/skills/ml-strategy && 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 "ml-strategy" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/ml-strategy into .opencode/skills/ml-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-strategy", 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.
ml-strategyTrains scikit-learn models with walk-forward validation on features from OHLCV data to predict return direction and turn the predictions into trading signals.
The skill predicts the direction of future returns with RandomForest, GradientBoosting or Ridge models from scikit-learn. The pipeline validates the OHLCV input, builds features such as momentum, volatility, RSI, moving-average ratios and volume ratio with guards against infinities and division by zero, labels each row by whether the future N-day return is positive, and trains with an expanding or sliding window on past data only.
Predictions are mapped to signals between -1.0 and 1.0 from predicted probabilities, or to discrete -1, 0 and 1, with the output guaranteed free of NaN and clipped to range. A complete SignalEngine example is provided as the recommended pipeline, followed by a table of the default features, with build_features() as the place to customize them, and a model selection guide.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e532650. 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.
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.
Machine Learning Trading Strategy loads about 3.2k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 576 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 e532650, republished under its MIT licence (© HKUDS). 576 words, ~3,164 tokens.
.claude/skills/ml-strategy/SKILL.md (or your agent's skills folder).Use sklearn machine-learning models (RandomForest / GradientBoosting / Ridge) to predict the direction of future returns and generate trading signals. Walk-forward training is used to avoid future data leakage, and feature engineering extracts useful factors from OHLCV data.
1), < 0 is the negative class (0)predict_proba[:, 1] to [-1.0, 1.0], or use discrete signals from predict in {-1, 0, 1}. Output is guaranteed clean (no NaN, clipped to range)This is the recommended full pipeline. Copy and customise — safety is built in.
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
def validate_data(df: pd.DataFrame, min_rows: int = 300) -> bool:
"""Check that OHLCV data meets minimum quality for ML training.
Args:
df: DataFrame with DatetimeIndex.
min_rows: Minimum number of rows required.
Returns:
True if data is usable.
"""
required = {"open", "high", "low", "close", "volume"}
if not required.issubset(df.columns):
return False
if len(df) < min_rows:
return False
if df["close"].isnull().mean() > 0.2:
return False
return True
def build_features(df: pd.DataFrame) -> pd.DataFrame:
"""Build a machine-learning feature matrix from OHLCV data.
All features are guarded against division-by-zero and sanitized
(inf replaced with NaN) so downstream code never sees inf values.
Args:
df: DataFrame containing open, high, low, close, and volume columns.
Returns:
DataFrame with feature columns prefixed by 'f_'.
"""
c = df["close"]
v = df["volume"]
ret = c.pct_change(fill_method=None)
features = pd.DataFrame(index=df.index)
features["f_ret_5d"] = c.pct_change(5, fill_method=None)
features["f_ret_20d"] = c.pct_change(20, fill_method=None)
features["f_vol_20d"] = ret.rolling(20).std()
features["f_ma_ratio"] = c / c.rolling(20).mean()
features["f_volume_ratio"] = v / v.rolling(20).mean()
# RSI(14) — guard: loss=0 in zero-volatility periods produces inf
delta = c.diff()
gain = delta.clip(lower=0).rolling(14).mean()
loss = (-delta.clip(upper=0)).rolling(14).mean()
rs = gain / loss.replace(0, np.nan)
features["f_rsi_14"] = 100 - (100 / (1 + rs))
# Bollinger Band position — guard: bb_upper == bb_lower when std=0
ma20 = c.rolling(20).mean()
std20 = c.rolling(20).std()
bb_upper = ma20 + 2 * std20
bb_lower = ma20 - 2 * std20
bb_range = (bb_upper - bb_lower).replace(0, np.nan)
features["f_bb_position"] = (c - bb_lower) / bb_range
# Intraday features
features["f_high_low_ratio"] = (df["high"] - df["low"]) / c
features["f_close_open_ratio"] = (c - df["open"]) / df["open"]
features["f_skew_20d"] = ret.rolling(20).skew()
# Sanitize: replace all inf with NaN (NaN handled by walk-forward)
features = features.replace([np.inf, -np.inf], np.nan)
return features
def walk_forward_predict(
features: pd.DataFrame,
labels: pd.Series,
min_train_size: int = 252,
retrain_freq: int = 20,
model_type: str = "random_forest",
window_type: str = "expanding",
sliding_size: int = 504,
prediction_horizon: int = 5,
) -> pd.Series:
"""Walk-forward training and prediction to avoid future data leakage.
Args:
features: Feature matrix aligned with labels by row index.
labels: Binary labels (0/1), representing the direction of future N-day returns.
min_train_size: Minimum training-set size in trading days.
retrain_freq: Retrain the model every N days.
model_type: One of "random_forest" / "gradient_boosting" / "ridge".
window_type: "expanding" uses all history; "sliding" uses a fixed lookback.
sliding_size: Lookback window size when window_type is "sliding".
prediction_horizon: Number of bars each target label looks ahead.
Returns:
Predicted signal series with range [-1.0, 1.0], no NaN values.
"""
predictions = pd.Series(0.0, index=features.index)
model = None
scaler = None
if prediction_horizon < 1:
raise ValueError("prediction_horizon must be >= 1")
for i in range(min_train_size, len(features)):
# Retrain every retrain_freq days
if model is None or (i - min_train_size) % retrain_freq == 0:
# A label at row t is observable only once t + horizon <= i.
train_stop = max(0, i - prediction_horizon + 1)
start = (
max(0, train_stop - sliding_size)
if window_type == "sliding"
else 0
)
X_train = features.iloc[start:train_stop].values
y_train = labels.iloc[start:train_stop].values
# Drop rows with NaN
valid = ~(np.isnan(X_train).any(axis=1) | np.isnan(y_train))
X_train = X_train[valid]
y_train = y_train[valid]
# Too few rows, or a single class (a sustained one-directional
# trend, which crashes fit()/predict_proba() on every model type
# below): skip the retrain. The previous model keeps serving; before
# the first model there is no prediction.
if len(X_train) >= 50 and len(np.unique(y_train)) >= 2:
# Standardization: fit only on training set
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
# Build the model
if model_type == "random_forest":
model = RandomForestClassifier(
n_estimators=100, max_depth=5, random_state=42,
)
elif model_type == "gradient_boosting":
model = GradientBoostingClassifier(
n_estimators=100, max_depth=3, learning_rate=0.05,
random_state=42,
)
elif model_type == "ridge":
model = LogisticRegression(penalty="l2", C=1.0, random_state=42)
else:
raise ValueError(f"Unsupported model_type: {model_type}")
model.fit(X_train, y_train)
if model is None:
continue
# Predict today
X_today = features.iloc[i : i + 1].values
if np.isnan(X_today).any():
predictions.iloc[i] = 0.0
continue
X_today = scaler.transform(X_today)
if hasattr(model, "predict_proba"):
prob = model.predict_proba(X_today)[0, 1]
predictions.iloc[i] = prob * 2 - 1 # [0,1] -> [-1,1]
else:
predictions.iloc[i] = float(model.predict(X_today)[0])
# Output contract: no NaN, clipped to [-1, 1]
predictions = predictions.fillna(0.0).clip(-1.0, 1.0)
return predictions
class SignalEngine:
"""Complete ML strategy with built-in data validation and safety."""
def generate(self, data_map: dict) -> dict:
"""Generate signals for each symbol.
Args:
data_map: code -> OHLCV DataFrame.
Returns:
code -> signal Series in [-1.0, 1.0].
"""
signals = {}
for code, df in data_map.items():
if not validate_data(df):
print(f"[WARN] {code}: data quality insufficient, skipping")
continue
features = build_features(df)
prediction_horizon = 5
future_returns = (
df["close"].shift(-prediction_horizon) / df["close"] - 1
)
labels = (future_returns > 0).astype(float).where(future_returns.notna())
signal = walk_forward_predict(
features,
labels,
prediction_horizon=prediction_horizon,
)
signals[code] = signal
return signalsThe table below lists all default features. Add or remove features as needed — build_features() is the customisation point.
| Feature Name | Formula | Meaning |
|---|---|---|
| ret_5d | close.pct_change(5, fill_method=None) | Past 5-day return (short-term momentum) |
| ret_20d | close.pct_change(20, fill_method=None) | Past 20-day return (medium-term momentum) |
| vol_20d | returns.rolling(20).std() | 20-day volatility |
| rsi_14 | See RSI formula in code | Relative Strength Index (division-by-zero guarded) |
| ma_ratio | close / close.rolling(20).mean() | Degree of deviation from the 20-day moving average |
| volume_ratio | volume / volume.rolling(20).mean() | Volume ratio (current volume vs 20-day average) |
| bb_position | (close - bb_lower) / (bb_upper - bb_lower) | Bollinger Band position (zero-bandwidth guarded) |
| high_low_ratio | (high - low) / close | Intraday range ratio |
| close_open_ratio | (close - open) / open | Intraday return |
| skew_20d | returns.rolling(20).skew() | Return skewness |
| Model | Advantages | Disadvantages | Applicable Scenario |
|---|---|---|---|
| RandomForestClassifier | Hard to overfit, robust to hyperparameters, can output feature importance | Weaker at capturing trend-style features | Default first-choice model, medium data size |
| GradientBoostingClassifier | High accuracy, captures complex nonlinear relationships | Easy to overfit, slow to train, requires careful tuning | Sufficient data and tuning experience |
| Ridge / LogisticRegression | Fast training, interpretable, difficult to overfit | Captures only linear relationships | Fast baseline, few features, small dataset |
| Parameter | Default | Description |
|---|---|---|
| model_type | "random_forest" | Model type: random_forest / gradient_boosting / ridge |
| min_train_size | 252 | Minimum training-set size (starting length of the expanding window) |
| retrain_freq | 20 | Retraining frequency (every N trading days) |
| prediction_horizon | 5 | Prediction horizon (future N-day return) |
| n_estimators | 100 | Number of trees for tree-based models |
| max_depth | 5 | Maximum tree depth (prevents overfitting) |
| threshold | 0.0 | Signal filtering threshold (abs(signal) < threshold is set to 0) |
| window_type | "expanding" | Training window: expanding (all history) or sliding (fixed lookback) |
| sliding_size | 504 | Lookback size for sliding window (2 years of trading days) |
The pipeline code above already handles data leakage, standardization leakage, inf/NaN propagation, and retraining frequency. The following pitfalls still require your judgement:
max_depth > 10), too many features, or too small a training set. Keep max_depth=3~5 and feature count < 15class_weight="balanced" or SMOTE if neededpip install scikit-learn pandas numpypredict_proba[:, 1] mapped through prob * 2 - 1 to [-1.0, 1.0] (continuous-strength signal)predict() in {-1, 0, 1} (short, neutral, long)[-1.0, 1.0]© HKUDS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in agent/src/skills/ml-strategy of HKUDS/Vibe-Trading.
Open the folder on GitHubat commit e532650
Machine Learning Trading Strategy 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 |
|---|---|---|---|---|---|---|
| Machine Learning Trading Strategy this skillHKUDS/Vibe-Trading | 35k | — | ~3.2k | Automated safety check: Pass | MIT | |
| Senior Data ScientistRaidriar7170/hermes-skilleval | 125 | 5 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Senior Data Scientistalirezarezvani/claude-skills | 28k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Scikit Learn Machine Learningjaechang-hits/SciAgent-Skills | 371 | 1 repos | ~4k | Automated safety check: Pass | BSD-3-Clause | |
| Statistical Data Analysislingzhi227/agent-research-skills | 386 | — | ~886 | Automated safety check: Pass | None | |
| Optimize For GPUK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.4k | Automated safety check: Pass | MIT |
Raidriar7170/hermes-skilleval
World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics.
alirezarezvani/claude-skills
World-class senior data scientist skill specialising in statistical modeling, experiment design, causal inference, and predictive analytics.
jaechang-hits/SciAgent-Skills
Classical ML in Python: classification, regression, clustering, dim reduction, evaluation, tuning, preprocessing pipelines.
lingzhi227/agent-research-skills
Writes statistical analysis code for experimental data, runs it through a four-round review, and reports effect sizes, p-values and confidence intervals.
K-Dense-AI/scientific-agent-skills
GPU-accelerates scientific Python on NVIDIA hardware and verifies that the result is correct and faster.
probabl-ai/skills
Pick how to write a figure before custom plot code. An agent skill from probabl-ai/skills.
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.
Works with
Categories
Trains scikit-learn models with walk-forward validation on features from OHLCV data to predict return direction and turn the predictions into trading signals. The skill predicts the direction of future returns with RandomForest, GradientBoosting or Ridge models from scikit-learn. The pipeline validates the OHLCV input, builds features such as momentum, volatility, RSI, moving-average ratios and volume ratio with guards against infinities and division by zero, labels each row by whether the future N-day return is positive, and trains with an expanding or sliding window on past data only.
Machine Learning Trading Strategy fits situations like: building a walk-forward machine learning signal engine for any OHLCV data; adding or changing features in build_features(); avoiding future data leakage when training a trading model; choosing between RandomForest, GradientBoosting and Ridge for a signal.
Run `npx skills add HKUDS/Vibe-Trading --skill ml-strategy -a claude-code`. Or copy the skill folder (agent/src/skills/ml-strategy in HKUDS/Vibe-Trading) into .claude/skills/ml-strategy in your project. Claude Code loads it when a task matches its description.
Run `npx skills add HKUDS/Vibe-Trading --skill ml-strategy -a codex`. Or copy the skill folder (agent/src/skills/ml-strategy in HKUDS/Vibe-Trading) into .agents/skills/ml-strategy 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 ml-strategy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ml-strategy, .gemini/skills/ml-strategy, .github/skills/ml-strategy and .opencode/skills/ml-strategy in your project.
Going by SKILL.md and its folder, Machine Learning Trading Strategy needs the command-line tools its instructions call (pip). Our summary lists: Python with scikit-learn, pandas and numpy; OHLCV price data.
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.
Machine Learning Trading Strategy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k 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 Machine Learning Trading Strategy: Senior Data Scientist (Raidriar7170/hermes-skilleval, 125 stars), Senior Data Scientist (alirezarezvani/claude-skills, 28k stars), Scikit Learn Machine Learning (jaechang-hits/SciAgent-Skills, 371 stars) and Statistical Data Analysis (lingzhi227/agent-research-skills, 386 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 35,043 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.