Skip to main content
history Trade history tracking, sync, and performance analytics
インストールへ移動 Skills Marketplace コミュニティが作成したAIスキルを発見・探索
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/shreed27/DAIN --skill historyコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Zipをダウンロード ダウンロード中... name history description Trade history tracking, sync, and performance analytics emoji 📊 gates {"envs":{"anyOf":["POLY_API_KEY","KALSHI_API_KEY"]}}
Trade History - Complete API Reference
Fetch, sync, and analyze trade history from Polymarket and Kalshi with detailed performance metrics.
Chat Commands
Fetch & Sync
/history fetch # Fetch all trades from APIs
/history fetch poly # Fetch Polymarket only
/history fetch --from 2024-01-01 # From specific date
/history sync # Sync to local database
View History
/history list # Recent trades
/history list --limit 50 # Last 50 trades
/history list --platform poly # Polymarket only
/history list --market <id> # Specific market
Statistics
/history stats # Overall statistics
/history stats --period 30d # Last 30 days
/history stats --platform kalshi # Platform-specific
P&L Analysis
/history daily-pnl # Daily P&L
/history weekly-pnl # Weekly P&L
/history monthly-pnl # Monthly P&L
/history by-market # P&L by market category
Export
/history export # Export to CSV
/history export --format json # Export as JSON
/history export --from 2024-01-01 # Date range
Filtering /history filter --side buy # Only buys
/history filter --pnl positive # Only winners
/history filter --pnl negative # Only losers
/history filter --min-size 100 # Min $100 trades
TypeScript API Reference
Create History Service import { createTradeHistoryService } from 'clodds/history' ;
const history = createTradeHistoryService ({
polymarket : {
apiKey : process.env .POLY_API_KEY ,
address : process.env .POLY_ADDRESS ,
},
kalshi : {
apiKey : process.env .KALSHI_API_KEY ,
},
dbPath : './trade-history.db' ,
});
Fetch Trades from APIs
const trades = await history.fetchTrades ({
platforms : ['polymarket' , 'kalshi' ],
from : '2024-01-01' ,
});
console .log (`Fetched ${trades.length} trades` );
const polyTrades = await history.fetchTrades ({
platforms : ['polymarket' ],
limit : 100 ,
});
Sync to Database
await history.syncToDatabase ();
console .log ('Trades synced to database' );
Get Trades
const trades = await history.getTrades ({
platform : 'polymarket' ,
from : '2024-01-01' ,
to : '2024-12-31' ,
limit : 100 ,
});
for (const trade of trades) {
console .log (`${trade.timestamp} : ${trade.side} ${trade.market} ` );
console .log (` Size: $${trade.size} ` );
console .log (` Price: ${trade.price} ` );
console .log (` P&L: $${trade.pnl?.toFixed(2 ) || 'open' } ` );
}
Statistics
const stats = await history.getStats ({
period : '30d' ,
platform : 'polymarket' ,
});
console .log (`=== Trading Statistics (30d) ===` );
console .log (`Total trades: ${stats.totalTrades} ` );
console .log (`Winning trades: ${stats.winningTrades} ` );
console .log (`Losing trades: ${stats.losingTrades} ` );
console .log (`Win rate: ${(stats.winRate * 100 ).toFixed(1 )} %` );
console .log (`\nP&L:` );
console .log (` Total: $${stats.totalPnl.toLocaleString()} ` );
console .log (` Gross profit: $${stats.grossProfit.toLocaleString()} ` );
console .log (` Gross loss: $${stats.grossLoss.toLocaleString()} ` );
console .log (` Profit factor: ${stats.profitFactor.toFixed(2 )} ` );
console .log (`\nTrade sizes:` );
console .log (` Average: $${stats.avgTradeSize.toFixed(2 )} ` );
console .log (` Largest win: $${stats.largestWin.toFixed(2 )} ` );
console .log (` Largest loss: $${stats.largestLoss.toFixed(2 )} ` );
console .log (`\nRisk metrics:` );
console .log (` Sharpe ratio: ${stats.sharpeRatio.toFixed(2 )} ` );
console .log (` Max drawdown: ${(stats.maxDrawdown * 100 ).toFixed(1 )} %` );
Daily P&L
const dailyPnl = await history.getDailyPnL ({
days : 30 ,
platform : 'polymarket' ,
});
console .log ('=== Daily P&L ===' );
for (const day of dailyPnl) {
const sign = day.pnl >= 0 ? '+' : '' ;
const bar = day.pnl >= 0
? '█' .repeat (Math .min (Math .floor (day.pnl / 10 ), 20 ))
: '▓' .repeat (Math .min (Math .floor (Math .abs (day.pnl ) / 10 ), 20 ));
console .log (`${day.date} | ${sign} $${day.pnl.toFixed(2 ).padStart(8 )} | ${bar} ` );
}
Performance by Market
const byMarket = await history.getPerformanceByMarket ({
period : '30d' ,
});
console .log ('=== Performance by Market Category ===' );
for (const [category, data] of Object .entries (byMarket)) {
console .log (`\n${category} :` );
console .log (` Trades: ${data.trades} ` );
console .log (` Win rate: ${(data.winRate * 100 ).toFixed(1 )} %` );
console .log (` P&L: $${data.pnl.toLocaleString()} ` );
console .log (` Avg trade: $${data.avgTrade.toFixed(2 )} ` );
}
Export
await history.exportCsv ({
path : './trades.csv' ,
from : '2024-01-01' ,
to : '2024-12-31' ,
columns : ['timestamp' , 'platform' , 'market' , 'side' , 'size' , 'price' , 'pnl' ],
});
const json = await history.exportJson ({
from : '2024-01-01' ,
});
Database Schema CREATE TABLE trades (
id TEXT PRIMARY KEY ,
platform TEXT NOT NULL ,
market_id TEXT NOT NULL ,
market_question TEXT,
side TEXT NOT NULL ,
outcome TEXT,
size REAL NOT NULL ,
price REAL NOT NULL ,
fee REAL DEFAULT 0 ,
pnl REAL ,
timestamp INTEGER NOT NULL ,
created_at INTEGER DEFAULT (strftime('%s' , 'now' ))
);
CREATE INDEX idx_trades_platform ON trades(platform);
CREATE INDEX idx_trades_timestamp ON trades(timestamp );
CREATE INDEX idx_trades_market ON trades(market_id);
Best Practices
Sync regularly - Keep local database up to date
Export backups - Periodically export to CSV
Review weekly - Analyze performance patterns
Track by category - Identify strong/weak areas
Monitor drawdown - Set alerts for max drawdown