ScriptSamurai is where retail traders turn their own strategies into trading bots — then forward-test and rank them against everyone else's.

Traders are using AI to encode their own edge into automated bots. The problem isn't building them — it's knowing if they actually work, and whose work best. ScriptSamurai isn't a marketplace for buying scripts (the good ones never get sold anyway). It's a community for builders: learn the craft, forward-test honestly, and earn your rank.
A step-by-step tutorial on building an automated prediction-market bot using Python and the CLOB API. From setup to live execution.
Encode your trading strategy into a bot, with the community and AI tooling to help you do it.
Forward-test your bot under standardized, real conditions — no cherry-picked backtests.
Climb the ranked leaderboard. Compare with other builders. Let the results talk.
Raw return is not enough. Every bot is scored on a composite that rewards consistency and punishes hidden risk — all computed from the same standardized feed and the same 90-day window.
Annualized return divided by annualized volatility. Rewards builders who earn smoothly, not via spikes.
Excess return per unit of total risk. The classic measure of reward relative to drawdowns.
Largest peak-to-trough decline in the window. Smaller drawdowns score higher.
Percentage of profitable days, with a penalty for high variance in daily returns.
// Raw 90-day inputs for MomentumBot #07
riskAdjReturn = 1.42; sharpe = 2.10; maxDrawdown = -6.3%; winRate = 58%;
// Normalize each metric to 0–100 using season high/low bounds
normRiskAdj = 72.5; normSharpe = 85.0; normDrawdown = 90.0; normWinRate = 58.0;
// Composite score = 40/25/20/15 weighted sum
score = (normRiskAdj × 0.40) + (normSharpe × 0.25) + (normDrawdown × 0.20) + (normWinRate × 0.15)
score = (72.5 × 0.40) + (85.0 × 0.25) + (90.0 × 0.20) + (58.0 × 0.15)
score = 29.00 + 21.25 + 18.00 + 8.70 = 91.20| Metric | Raw value | Normalized (0–100) | Weight | Contribution |
|---|---|---|---|---|
| Risk-adj. returnMin-max normalised against the season’s best and worst risk-adjusted returns. 1.42 sits at 72.5 / 100. Then multiplied by the 40 % weight. | 1.42 | 72.5 | 40% | 29.00 |
| SharpeMin-max normalised against the season’s best and worst Sharpe ratios. 2.10 sits at 85.0 / 100. Then multiplied by the 25 % weight. | 2.10 | 85.0 | 25% | 21.25 |
| Max drawdownInverted min-max normalisation: a drawdown closer to 0 is better. –6.3 % scores 90.0 / 100. Then multiplied by the 20 % weight. | -6.3% | 90.0 | 20% | 18.00 |
| Win rateMin-max normalised against the season’s best and worst win rates. 58 % sits at 58.0 / 100. Then multiplied by the 15 % weight. | 58% | 58.0 | 15% | 8.70 |
| Weighted score | 91.20 |
Normalization maps each metric to a 0–100 scale using the season’s best and worst observed values. The contribution is the normalized score multiplied by its weight. The weighted score is the sum of all four contributions.
Annualized return divided by volatility. Higher is better — it means the bot earned more per unit of risk taken.
Return above the risk-free rate divided by standard deviation of returns. A Sharpe above 1.0 is considered strong; above 2.0 is exceptional.
The largest peak-to-trough decline during the window. A smaller (less negative) number means smoother equity and better capital preservation.
Percentage of profitable trading days. Higher win rates suggest consistent edge, though they must be read alongside drawdown size.
Regular seasons where the best forward-tested bots compete for sponsored prize pools. Every entry is verified under a standardized forward-testing protocol — no cherry-picked backtests, no curated screenshots, no hidden filters. The leaderboard ranks bots by live, continuous metrics: net return, Sharpe ratio, maximum drawdown, and win rate, all drawn from the same shared data feed so the results speak for themselves.
Anyone can claim returns. Almost no one can prove them. ScriptSamurai is built around verified, forward-tested performance — so a rank here means something.
The dojo over the casino.