1+ {
2+ "methods" : {
3+ "fetchMarkets" : {
4+ "python" : {
5+ "example" : " markets = poly.fetch_markets(pmxt.MarketFilterParams(\n limit=20,\n sort='volume' # 'volume' | 'liquidity' | 'newest'\n ))"
6+ },
7+ "typescript" : {
8+ "example" : " const markets = await polymarket.fetchMarkets({ \n limit: 20, \n offset: 0,\n sort: 'volume' // 'volume' | 'liquidity' | 'newest'\n });"
9+ }
10+ },
11+ "searchMarkets" : {
12+ "python" : {
13+ "example" : " results = kalshi.search_markets('Fed rates', pmxt.MarketFilterParams(\n limit=10,\n search_in='title' # 'title' (default) | 'description' | 'both'\n ))"
14+ },
15+ "typescript" : {
16+ "example" : " const results = await kalshi.searchMarkets('Fed rates', { \n limit: 10,\n searchIn: 'title' // 'title' (default) | 'description' | 'both'\n });"
17+ }
18+ },
19+ "getMarketsBySlug" : {
20+ "python" : {
21+ "example" : " # Polymarket: use URL slug\n poly_markets = poly.get_markets_by_slug('who-will-trump-nominate-as-fed-chair')\n\n # Kalshi: use market ticker (auto-uppercased)\n kalshi_markets = kalshi.get_markets_by_slug('KXFEDCHAIRNOM-29')"
22+ },
23+ "typescript" : {
24+ "example" : " // Polymarket: use URL slug\n const polyMarkets = await polymarket.getMarketsBySlug('who-will-trump-nominate-as-fed-chair');\n\n // Kalshi: use market ticker (auto-uppercased)\n const kalshiMarkets = await kalshi.getMarketsBySlug('KXFEDCHAIRNOM-29');"
25+ }
26+ },
27+ "fetchOHLCV" : {
28+ "python" : {
29+ "example" : " markets = poly.search_markets('Trump')\n outcome_id = markets[0].outcomes[0].id # Get the outcome ID\n\n candles = poly.fetch_ohlcv(outcome_id, pmxt.HistoryFilterParams(\n resolution='1h', # '1m' | '5m' | '15m' | '1h' | '6h' | '1d'\n start=datetime(2024, 1, 1),\n end=datetime(2024, 1, 31),\n limit=100\n ))"
30+ },
31+ "typescript" : {
32+ "example" : " const markets = await polymarket.searchMarkets('Trump');\n const outcomeId = markets[0].outcomes[0].id; // Get the outcome ID\n\n const candles = await polymarket.fetchOHLCV(outcomeId, {\n resolution: '1h', // '1m' | '5m' | '15m' | '1h' | '6h' | '1d'\n start: new Date('2024-01-01'),\n end: new Date('2024-01-31'),\n limit: 100\n });"
33+ },
34+ "notes" : [
35+ " **CRITICAL**: Use `outcome.id`, not `market.id`." ,
36+ " - **Polymarket**: `outcome.id` is the CLOB Token ID" ,
37+ " - **Kalshi**: `outcome.id` is the Market Ticker"
38+ ]
39+ },
40+ "fetchOrderBook" : {
41+ "python" : {
42+ "example" : " order_book = kalshi.fetch_order_book('FED-25JAN')\n print(f'Best bid: {order_book.bids[0].price}')\n print(f'Best ask: {order_book.asks[0].price}')"
43+ },
44+ "typescript" : {
45+ "example" : " const orderBook = await kalshi.fetchOrderBook('FED-25JAN');\n console.log('Best bid:', orderBook.bids[0].price);\n console.log('Best ask:', orderBook.asks[0].price);"
46+ }
47+ },
48+ "fetchTrades" : {
49+ "python" : {
50+ "example" : " trades = kalshi.fetch_trades('FED-25JAN', pmxt.HistoryFilterParams(\n resolution='1h',\n limit=100\n ))"
51+ },
52+ "typescript" : {
53+ "example" : " const trades = await kalshi.fetchTrades('FED-25JAN', {\n resolution: '1h',\n limit: 100\n });"
54+ },
55+ "notes" : [
56+ " **Note**: Polymarket requires API key. Use `fetchOHLCV` for public historical data."
57+ ]
58+ },
59+ "fetchBalance" : {
60+ "python" : {
61+ "example" : " balances = poly.fetch_balance()\n print(balances)\n # [Balance(currency='USDC', total=1000, available=950, locked=50)]"
62+ },
63+ "typescript" : {
64+ "example" : " const balances = await polymarket.fetchBalance();\n console.log(balances);\n // [{ currency: 'USDC', total: 1000, available: 950, locked: 50 }]"
65+ }
66+ },
67+ "fetchPositions" : {
68+ "python" : {
69+ "example" : " positions = kalshi.fetch_positions()\n for pos in positions:\n print(f\" {pos.outcome_label}: {pos.size} @ ${pos.entry_price}\" )\n print(f\" Unrealized P&L: ${pos.unrealized_pnl}\" )"
70+ },
71+ "typescript" : {
72+ "example" : " const positions = await kalshi.fetchPositions();\n positions.forEach(pos => {\n console.log(`${pos.outcomeLabel}: ${pos.size} @ $${pos.entryPrice}`);\n console.log(`Unrealized P&L: $${pos.unrealizedPnL}`);\n });"
73+ }
74+ },
75+ "createOrder" : {
76+ "python" : {
77+ "example" : " # Limit Order Example\n order = poly.create_order(pmxt.CreateOrderParams(\n market_id='663583',\n outcome_id='109918492287...',\n side='buy',\n type='limit',\n amount=10, # Number of contracts\n price=0.55 # Required for limit orders (0.0-1.0)\n ))\n\n print(f'Order {order.id}: {order.status}')\n\n # Market Order Example\n order = kalshi.create_order(pmxt.CreateOrderParams(\n market_id='FED-25JAN',\n outcome_id='FED-25JAN-YES',\n side='sell',\n type='market',\n amount=5 # Price not needed for market orders\n ))"
78+ },
79+ "typescript" : {
80+ "example" : " // Limit Order Example\n const order = await polymarket.createOrder({\n marketId: '663583',\n outcomeId: '10991849228756847439673778874175365458450913336396982752046655649803657501964',\n side: 'buy',\n type: 'limit',\n amount: 10, // Number of contracts\n price: 0.55 // Required for limit orders (0.0-1.0)\n });\n\n console.log(`Order ${order.id}: ${order.status}`);\n\n // Market Order Example\n const order = await kalshi.createOrder({\n marketId: 'FED-25JAN',\n outcomeId: 'FED-25JAN-YES',\n side: 'sell',\n type: 'market',\n amount: 5 // Price not needed for market orders\n });"
81+ }
82+ },
83+ "cancelOrder" : {
84+ "python" : {
85+ "example" : " cancelled_order = poly.cancel_order('order-123')\n print(cancelled_order.status) # 'cancelled'"
86+ },
87+ "typescript" : {
88+ "example" : " const cancelledOrder = await polymarket.cancelOrder('order-123');\n console.log(cancelledOrder.status); // 'cancelled'"
89+ }
90+ },
91+ "fetchOrder" : {
92+ "python" : {
93+ "example" : " order = kalshi.fetch_order('order-456')\n print(f'Filled: {order.filled}/{order.amount}')"
94+ },
95+ "typescript" : {
96+ "example" : " const order = await kalshi.fetchOrder('order-456');\n console.log(`Filled: ${order.filled}/${order.amount}`);"
97+ }
98+ },
99+ "fetchOpenOrders" : {
100+ "python" : {
101+ "example" : " # All open orders\n all_orders = poly.fetch_open_orders()\n\n # Open orders for specific market\n market_orders = kalshi.fetch_open_orders('FED-25JAN')\n\n for order in all_orders:\n print(f'{order.side} {order.amount} @ {order.price}')"
102+ },
103+ "typescript" : {
104+ "example" : " // All open orders\n const allOrders = await polymarket.fetchOpenOrders();\n\n // Open orders for specific market\n const marketOrders = await kalshi.fetchOpenOrders('FED-25JAN');\n\n allOrders.forEach(order => {\n console.log(`${order.side} ${order.amount} @ ${order.price}`);\n });"
105+ }
106+ }
107+ },
108+ "workflowExample" : {
109+ "python": "import pmxt\nimport os\n\nexchange = pmxt.Polymarket(\n private_key=os.getenv('POLYMARKET_PRIVATE_KEY')\n)\n\n# 1. Check balance\nbalances = exchange.fetch_balance()\nif balances:\n balance = balances[0]\n print(f'Available: ${balance.available}')\n\n# 2. Search for a market\nmarkets = exchange.search_markets('Trump')\nmarket = markets[0]\noutcome = market.outcomes[0]\n\n# 3. Place a limit order\norder = exchange.create_order(pmxt.CreateOrderParams(\n market_id=market.id,\n outcome_id=outcome.id,\n side='buy',\n type='limit',\n amount=10,\n price=0.50\n))\n\nprint(f'Order placed: {order.id}')\n\n# 4. Check order status\nupdated_order = exchange.fetch_order(order.id)\nprint(f'Status: {updated_order.status}')\nprint(f'Filled: {updated_order.filled}/{updated_order.amount}')\n\n# 5. Cancel if needed\nif updated_order.status == 'open':\n exchange.cancel_order(order.id)\n print('Order cancelled')\n\n# 6. Check positions\npositions = exchange.fetch_positions()\nfor pos in positions:\n pnl_sign = '+' if pos.unrealized_pnl > 0 else ''\n print(f'{pos.outcome_label}: {pnl_sign}${pos.unrealized_pnl:.2f}')",
110+ "typescript": "import pmxt from 'pmxtjs';\n\nconst exchange = new pmxt.Polymarket({\n privateKey: process.env.POLYMARKET_PRIVATE_KEY\n});\n\n// 1. Check balance\nconst [balance] = await exchange.fetchBalance();\nconsole.log(`Available: $${balance.available}`);\n\n// 2. Search for a market\nconst markets = await exchange.searchMarkets('Trump');\nconst market = markets[0];\nconst outcome = market.outcomes[0];\n\n// 3. Place a limit order\nconst order = await exchange.createOrder({\n marketId: market.id,\n outcomeId: outcome.id,\n side: 'buy',\n type: 'limit',\n amount: 10,\n price: 0.50\n});\n\nconsole.log(`Order placed: ${order.id}`);\n\n// 4. Check order status\nconst updatedOrder = await exchange.fetchOrder(order.id);\nconsole.log(`Status: ${updatedOrder.status}`);\nconsole.log(`Filled: ${updatedOrder.filled}/${updatedOrder.amount}`);\n\n// 5. Cancel if needed\nif (updatedOrder.status === 'open') {\n await exchange.cancelOrder(order.id);\n console.log('Order cancelled');\n}\n\n// 6. Check positions\nconst positions = await exchange.fetchPositions();\npositions.forEach(pos => {\n console.log(`${pos.outcomeLabel}: ${pos.unrealizedPnL > 0 ? '+' : ''}$${pos.unrealizedPnL.toFixed(2)}`);\n});"
111+ }
112+ }
0 commit comments