Pine Backtester
TradersPost/pinescript-agents
Implements comprehensive backtesting and performance metrics.
Backtest trading strategies with historical data. An agent skill from Signal-Execution-Labs/forex-trading-ai-agent.
$ npx skills add Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Signal-Execution-Labs/forex-trading-ai-agent backtester --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/Signal-Execution-Labs/forex-trading-ai-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/backtester .claude/skills/backtester && 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 "backtester" agent skill from https://github.com/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtester into .claude/skills/backtester/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backtester", 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/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtesterType 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 Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Signal-Execution-Labs/forex-trading-ai-agent backtester --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Signal-Execution-Labs/forex-trading-ai-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/backtester .agents/skills/backtester && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "backtester" agent skill from https://github.com/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtester into .agents/skills/backtester/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backtester", 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 Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Signal-Execution-Labs/forex-trading-ai-agent backtester --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Signal-Execution-Labs/forex-trading-ai-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/backtester .cursor/skills/backtester && 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 "backtester" agent skill from https://github.com/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtester into .cursor/skills/backtester/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backtester", 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/Signal-Execution-Labs/forex-trading-ai-agent.git --path skills/backtester--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 Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Signal-Execution-Labs/forex-trading-ai-agent backtester --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Signal-Execution-Labs/forex-trading-ai-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/backtester .gemini/skills/backtester && 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 "backtester" agent skill from https://github.com/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtester into .gemini/skills/backtester/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backtester", 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 Signal-Execution-Labs/forex-trading-ai-agent backtesterInstalls 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 Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Signal-Execution-Labs/forex-trading-ai-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/backtester .github/skills/backtester && 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 "backtester" agent skill from https://github.com/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtester into .github/skills/backtester/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backtester", 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 Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Signal-Execution-Labs/forex-trading-ai-agent backtester --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Signal-Execution-Labs/forex-trading-ai-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/backtester .opencode/skills/backtester && 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 "backtester" agent skill from https://github.com/Signal-Execution-Labs/forex-trading-ai-agent/tree/main/skills/backtester into .opencode/skills/backtester/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backtester", 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.
backtesterBacktest trading strategies with historical data. An agent skill from Signal-Execution-Labs/forex-trading-ai-agent.
Backtester is an agent skill from Signal-Execution-Labs/forex-trading-ai-agent. Backtest trading strategies with historical data. Calculate performance metrics and generate reports.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/backtest_runner.py`).
It sits in Business, Finance & HR, covering Trading and backtesting and OKRs and executive reporting. The repository describes itself as: About AI quantitative trading platform for crypto, stocks, and forex with backtesting, live trading, market data, and multi-agent research.vibe-trading…. The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b8a6047. 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 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Backtester loads about 2.7k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 153 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); the scripts in this folder are not scanned.
The full file from Signal-Execution-Labs/forex-trading-ai-agent at commit b8a6047, republished under its MIT licence (© Signal-Execution-Labs). 153 words, ~2,659 tokens.
.claude/skills/backtester/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Test trading strategies against historical data before risking real money.
python3 -c "
import ccxt
import pandas as pd
from datetime import datetime, timedelta
symbol = 'BTC/USDT'
timeframe = '1d'
exchange = ccxt.binance()
# Fetch 1 year of data
since = exchange.parse8601((datetime.now() - timedelta(days=365)).isoformat())
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, since=since, limit=365)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['date'] = pd.to_datetime(df['timestamp'], unit='ms')
print(f'📊 HISTORICAL DATA: {symbol}')
print('=' * 50)
print(f'Timeframe: {timeframe}')
print(f'Period: {df[\"date\"].iloc[0].date()} to {df[\"date\"].iloc[-1].date()}')
print(f'Candles: {len(df)}')
print(f'Price Range: \${df[\"low\"].min():,.2f} - \${df[\"high\"].max():,.2f}')
# Save for backtesting
# df.to_csv(f'{symbol.replace(\"/\", \"_\")}_{timeframe}.csv', index=False)
"python3 -c "
import ccxt
import ta
import pandas as pd
import numpy as np
# Load data
symbol = 'BTC/USDT'
exchange = ccxt.binance()
ohlcv = exchange.fetch_ohlcv(symbol, '1d', limit=365)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
# Calculate RSI
df['rsi'] = ta.momentum.RSIIndicator(df['close'], 14).rsi()
# Strategy: Buy RSI < 30, Sell RSI > 70
initial_capital = 10000
capital = initial_capital
position = 0
trades = []
for i in range(1, len(df)):
rsi = df['rsi'].iloc[i]
price = df['close'].iloc[i]
if rsi < 30 and position == 0: # Buy signal
position = capital / price
capital = 0
trades.append({'type': 'buy', 'price': price, 'rsi': rsi})
elif rsi > 70 and position > 0: # Sell signal
capital = position * price
position = 0
trades.append({'type': 'sell', 'price': price, 'rsi': rsi})
# Close final position
if position > 0:
capital = position * df['close'].iloc[-1]
final_value = capital
total_return = ((final_value - initial_capital) / initial_capital) * 100
buy_hold_return = ((df['close'].iloc[-1] - df['close'].iloc[0]) / df['close'].iloc[0]) * 100
print(f'📊 RSI STRATEGY BACKTEST: {symbol}')
print('=' * 50)
print(f'Period: {len(df)} days')
print(f'Initial Capital: \${initial_capital:,.2f}')
print(f'Final Value: \${final_value:,.2f}')
print()
print(f'Strategy Return: {total_return:+.2f}%')
print(f'Buy & Hold Return: {buy_hold_return:+.2f}%')
print(f'Outperformance: {total_return - buy_hold_return:+.2f}%')
print()
print(f'Total Trades: {len(trades)}')
"python3 -c "
import ccxt
import ta
import pandas as pd
import numpy as np
symbol = 'BTC/USDT'
exchange = ccxt.binance()
ohlcv = exchange.fetch_ohlcv(symbol, '4h', limit=500)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
# Calculate EMAs
df['ema_12'] = ta.trend.ema_indicator(df['close'], 12)
df['ema_26'] = ta.trend.ema_indicator(df['close'], 26)
# Generate signals
df['signal'] = 0
df.loc[df['ema_12'] > df['ema_26'], 'signal'] = 1 # Long
df.loc[df['ema_12'] < df['ema_26'], 'signal'] = -1 # Out/Short
# Calculate returns
df['returns'] = df['close'].pct_change()
df['strategy_returns'] = df['signal'].shift(1) * df['returns']
# Performance metrics
total_return = (1 + df['strategy_returns'].fillna(0)).prod() - 1
buy_hold_return = (df['close'].iloc[-1] / df['close'].iloc[0]) - 1
# Calculate metrics
returns = df['strategy_returns'].dropna()
sharpe = np.sqrt(252 * 6) * returns.mean() / returns.std() if returns.std() > 0 else 0
# Drawdown
cumulative = (1 + returns).cumprod()
running_max = cumulative.cummax()
drawdown = (cumulative - running_max) / running_max
max_drawdown = drawdown.min()
print(f'📊 MA CROSSOVER BACKTEST: {symbol}')
print('=' * 50)
print(f'Period: {len(df)} candles (4h)')
print()
print('Performance:')
print(f' Strategy Return: {total_return*100:+.2f}%')
print(f' Buy & Hold: {buy_hold_return*100:+.2f}%')
print(f' Sharpe Ratio: {sharpe:.2f}')
print(f' Max Drawdown: {max_drawdown*100:.2f}%')
print()
# Win rate
trades = df[df['signal'] != df['signal'].shift(1)].copy()
print(f'Total Signals: {len(trades)}')
"python3 -c "
import ccxt
import ta
import pandas as pd
import numpy as np
from datetime import datetime
def backtest_strategy(df, strategy_func, initial_capital=10000):
'''Generic backtester'''
capital = initial_capital
position = 0
entry_price = 0
trades = []
equity_curve = [initial_capital]
for i in range(50, len(df)): # Start after indicator warmup
signal = strategy_func(df, i)
price = df['close'].iloc[i]
if signal == 'buy' and position == 0:
position = capital * 0.95 / price # 5% reserved for fees
entry_price = price
capital = capital * 0.05
trades.append({'type': 'buy', 'price': price, 'index': i})
elif signal == 'sell' and position > 0:
capital += position * price * 0.999 # 0.1% fee
pnl = (price - entry_price) / entry_price * 100
trades.append({'type': 'sell', 'price': price, 'pnl': pnl, 'index': i})
position = 0
equity = capital + position * price
equity_curve.append(equity)
return {
'trades': trades,
'equity_curve': equity_curve,
'final_value': equity_curve[-1],
'initial_capital': initial_capital
}
def rsi_strategy(df, i):
rsi = df['rsi'].iloc[i]
if rsi < 30:
return 'buy'
elif rsi > 70:
return 'sell'
return 'hold'
# Load data and calculate indicators
symbol = 'BTC/USDT'
exchange = ccxt.binance()
ohlcv = exchange.fetch_ohlcv(symbol, '1d', limit=365)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['rsi'] = ta.momentum.RSIIndicator(df['close'], 14).rsi()
# Run backtest
results = backtest_strategy(df, rsi_strategy)
# Calculate metrics
equity = pd.Series(results['equity_curve'])
returns = equity.pct_change().dropna()
total_return = (results['final_value'] / results['initial_capital'] - 1) * 100
sharpe = np.sqrt(252) * returns.mean() / returns.std() if returns.std() > 0 else 0
running_max = equity.cummax()
drawdown = (equity - running_max) / running_max
max_drawdown = drawdown.min() * 100
# Trade stats
sell_trades = [t for t in results['trades'] if t['type'] == 'sell']
if sell_trades:
wins = len([t for t in sell_trades if t['pnl'] > 0])
win_rate = wins / len(sell_trades) * 100
avg_win = np.mean([t['pnl'] for t in sell_trades if t['pnl'] > 0]) if wins > 0 else 0
avg_loss = np.mean([t['pnl'] for t in sell_trades if t['pnl'] <= 0]) if wins < len(sell_trades) else 0
else:
win_rate = avg_win = avg_loss = 0
print(f'📊 BACKTEST REPORT: RSI Strategy on {symbol}')
print('=' * 60)
print(f'Period: {len(df)} days')
print(f'Initial Capital: \${results[\"initial_capital\"]:,.2f}')
print(f'Final Value: \${results[\"final_value\"]:,.2f}')
print()
print('PERFORMANCE METRICS')
print('-' * 60)
print(f'Total Return: {total_return:+.2f}%')
print(f'Sharpe Ratio: {sharpe:.2f}')
print(f'Max Drawdown: {max_drawdown:.2f}%')
print()
print('TRADE STATISTICS')
print('-' * 60)
print(f'Total Trades: {len(sell_trades)}')
print(f'Win Rate: {win_rate:.1f}%')
print(f'Avg Win: {avg_win:+.2f}%')
print(f'Avg Loss: {avg_loss:.2f}%')
print(f'Profit Factor: {abs(avg_win/avg_loss) if avg_loss != 0 else \"N/A\":.2f}')
"python3 -c "
import ccxt
import ta
import pandas as pd
import numpy as np
# Load data
symbol = 'BTC/USDT'
exchange = ccxt.binance()
ohlcv = exchange.fetch_ohlcv(symbol, '1d', limit=365)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
# Calculate all indicators
df['rsi'] = ta.momentum.RSIIndicator(df['close'], 14).rsi()
df['ema_12'] = ta.trend.ema_indicator(df['close'], 12)
df['ema_26'] = ta.trend.ema_indicator(df['close'], 26)
bb = ta.volatility.BollingerBands(df['close'], 20, 2)
df['bb_lower'] = bb.bollinger_lband()
df['bb_upper'] = bb.bollinger_hband()
def calc_return(signal_series):
returns = df['close'].pct_change()
strategy_returns = signal_series.shift(1) * returns
return ((1 + strategy_returns.fillna(0)).prod() - 1) * 100
# Strategy 1: RSI
rsi_signal = pd.Series(0, index=df.index)
rsi_signal[df['rsi'] < 30] = 1
rsi_signal[df['rsi'] > 70] = 0
# Strategy 2: EMA Crossover
ema_signal = pd.Series(0, index=df.index)
ema_signal[df['ema_12'] > df['ema_26']] = 1
# Strategy 3: Bollinger Bands
bb_signal = pd.Series(0, index=df.index)
bb_signal[df['close'] < df['bb_lower']] = 1
bb_signal[df['close'] > df['bb_upper']] = 0
# Buy and Hold
buy_hold = ((df['close'].iloc[-1] / df['close'].iloc[0]) - 1) * 100
print('📊 STRATEGY COMPARISON')
print('=' * 50)
print(f'Symbol: {symbol}')
print(f'Period: {len(df)} days')
print()
print('Returns:')
print(f' RSI Strategy: {calc_return(rsi_signal):+.2f}%')
print(f' EMA Crossover: {calc_return(ema_signal):+.2f}%')
print(f' Bollinger Bands: {calc_return(bb_signal):+.2f}%')
print(f' Buy & Hold: {buy_hold:+.2f}%')
"| Metric | Good | Bad |
|---|---|---|
| Total Return | > Buy & Hold | < 0% |
| Sharpe Ratio | > 1.5 | < 0.5 |
| Max Drawdown | < 20% | > 50% |
| Win Rate | > 50% | < 30% |
| Profit Factor | > 1.5 | < 1.0 |
© Signal-Execution-Labs, 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 (scripts) in skills/backtester of Signal-Execution-Labs/forex-trading-ai-agent.
Open the folder on GitHubat commit b8a6047
Backtester 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 |
|---|---|---|---|---|---|---|
| Backtester this skillSignal-Execution-Labs/forex-trading-ai-agent | 162 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Pine BacktesterTradersPost/pinescript-agents | 170 | 1 repos | ~3.9k | Automated safety check: Pass | None | |
| Vectorbtagiprolabs/claude-trading-skills | 410 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Stock PerformanceOctagonAI/skills | 127 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Trading As Businessagentii-ai/agentii-investment-intelligence | 207 | — | ~655 | Automated safety check: Pass | Apache-2.0 | |
| Tushare Datazillionare/zillionare | 321 | 2 repos | ~2.3k | Automated safety check: Pass | None |
TradersPost/pinescript-agents
Implements comprehensive backtesting and performance metrics.
agiprolabs/claude-trading-skills
High-performance vectorized backtesting with parameter optimization, portfolio simulation, and rich performance metrics
OctagonAI/skills
Retrieve stock price data and performance metrics using Octagon MCP.
agentii-ai/agentii-investment-intelligence
Trading as a business, performance review process, trade journaling, capital allocation discipline, business infrastructure for traders, KPI tracking for trading operations
zillionare/zillionare
面向中文自然语言的 Tushare 数据研究技能。用于把“看看这只股票最近怎么样”“帮我查财报趋势”“最近哪个板块最强”“北向资金在买什么”“给我导出一份行情数据”这类请求,转成可执行的数据获取、清洗、对比、筛选、导出与简要分析流程。适用于 A 股、指数、ETF/基金、财务、估值、资金流、公告新闻、板块概念与宏观数据等研究场景。
atilaahmettaner/tradingview-mcp
AI Trading Intelligence — live prices, 30+ technical indicators, backtesting (6 strategies), walk-forward overfitting detection, trade logs, equity curves, licensed news sentiment (Marketaux), and…
Signal-Execution-Labs/forex-trading-ai-agent
Automatic portfolio rebalancing to maintain target allocations.
Signal-Execution-Labs/forex-trading-ai-agent
Set price alerts, volume alerts, indicator alerts (RSI/MACD), and news alerts for crypto trading.
Signal-Execution-Labs/forex-trading-ai-agent
Automated trading with strategy execution, risk management, position sizing, and stop-loss/take-profit.
Signal-Execution-Labs/forex-trading-ai-agent
Connect to DeFi protocols for staking, lending, yield farming, and liquidity provision.
Signal-Execution-Labs/forex-trading-ai-agent
Track dividends, manage DRIP (reinvestment), forecast income, and optimize dividend portfolio.
Signal-Execution-Labs/forex-trading-ai-agent
Connect to crypto exchanges (Binance, Kraken, Coinbase, etc.).
Categories
Backtest trading strategies with historical data. An agent skill from Signal-Execution-Labs/forex-trading-ai-agent. Backtester is an agent skill from Signal-Execution-Labs/forex-trading-ai-agent. Backtest trading strategies with historical data.
Backtester fits situations like: tasks that involve Trading and backtesting; tasks that involve OKRs and executive reporting.
Run `npx skills add Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a claude-code`. Or copy the skill folder (skills/backtester in Signal-Execution-Labs/forex-trading-ai-agent) into .claude/skills/backtester in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a codex`. Or copy the skill folder (skills/backtester in Signal-Execution-Labs/forex-trading-ai-agent) into .agents/skills/backtester 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 Signal-Execution-Labs/forex-trading-ai-agent --skill backtester -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/backtester, .gemini/skills/backtester, .github/skills/backtester and .opencode/skills/backtester in your project.
Going by SKILL.md and its folder, Backtester needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Backtester 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.7k tokens (SKILL.md is roughly 11k 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 Backtester: Pine Backtester (TradersPost/pinescript-agents, 170 stars), Vectorbt (agiprolabs/claude-trading-skills, 410 stars), Stock Performance (OctagonAI/skills, 127 stars) and Trading As Business (agentii-ai/agentii-investment-intelligence, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Signal-Execution-Labs (a GitHub organization) maintains it in Signal-Execution-Labs/forex-trading-ai-agent, which has 162 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 14, 2026.
Source: Signal-Execution-Labs/forex-trading-ai-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.