Skills

Minute Analysis

Minute-level data analysis and backtesting.

Install

npx skills add HKUDS/Vibe-Trading --skill minute-analysis -g -a claude-code -y
Repository
HKUDS/Vibe-Trading37.4k
Category
Data and ML
Updated
3d ago
License
MIT
Context cost
Lightabout 809 tokens
Runs scripts
Yes, review before use

What it does

Minute-level data analysis and backtesting. Retrieves minute candlesticks through OKX/Tushare/yfinance and can be used both for analysis and as input to the backtest engine.

Minute-Level Data Analysis and Backtesting

Purpose

Retrieve minute-level candlestick data through data-source APIs and calculate intraday indicators (VWAP, TWAP, volume distribution, and more). Supports minute-level backtesting: set "interval": "5m" in config.json and use the backtest tool to run intraday strategies.

Backtest Configuration

For minute-level backtests, simply add the interval field in config.json:

{
  "source": "okx",
  "codes": ["BTC-USDT"],
  "start_date": "2026-03-01",
  "end_date": "2026-03-15",
  "interval": "5m",
  "initial_cash": 1000000,
  "commission": 0.0005
}
  • The annualization factor is inferred automatically from source + interval (OKX 5m = 365 x 288 = 105120)
  • Minute-level datasets are large. Recommended time limits: no more than 7 days for 1m, no more than 30 days for 5m, and no more than 1 year for 1H

Supported Data Sources and Intervals

Data SourceSupported IntervalsNotes
OKX1m/5m/15m/30m/1H/4HCryptocurrency, trades 7x24
Tushare1m/5m/15m/30m/1HChina A-shares, requires score >= 2000
yfinance1m/5m/15m/30m/1HHong Kong / US equities (free, no key required)

OKX Minute Candlestick API

import requests
import pandas as pd

resp = requests.get("https://www.okx.com/api/v5/market/candles", params={
    "instId": "BTC-USDT",
    "bar": "1m",       # 1m/5m/15m/30m/1H/4H
    "limit": "300",    # At most 300 rows per request
})
data = resp.json()["data"]
columns = ["ts", "open", "high", "low", "close", "vol", "volCcy", "volCcyQuote", "confirm"]
df = pd.DataFrame(reversed(data), columns=columns)
df["ts"] = pd.to_datetime(df["ts"].astype("int64"), unit="ms")
for col in ["open", "high", "low", "close", "vol"]:
    df[col] = df[col].astype(float)

Indicator Calculation Templates

VWAP (Volume-Weighted Average Price)

Read the whole SKILL.md on GitHub

More in Data and ML