Commit Graph
38 Commits
Author SHA1 Message Date
Patrick SelamyandGitHub c100bbfdfb Merge pull request #44 from pselamy/fix/10
feat: implement FundingTracer for wallet funding source analysis (#10)
2026-01-04 16:52:24 -05:00
Patrick SelamyandClaude Opus 4.5 b9c0d8304f feat: implement FundingTracer for wallet funding source analysis (#10)
Add FundingTracer class that traces USDC transfers backwards from a target
wallet to identify funding sources. Key features:

- Traces funding chain up to configurable max hops (default 3)
- Identifies terminal entities (CEX hot wallets, bridges) using EntityRegistry
- Parses ERC20 Transfer event logs from Polygon blockchain
- Calculates suspiciousness scores based on funding patterns
- Supports batch tracing multiple addresses concurrently

Also adds FundingTransfer and FundingChain dataclasses to models.py
for representing funding chain data.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:51:57 -05:00
Patrick SelamyandGitHub c68a6cc32d Merge pull request #43 from pselamy/fix/12
feat: add known entity registry for CEX and bridge detection (#12)
2026-01-04 16:43:29 -05:00
Patrick SelamyandClaude Opus 4.5 0c4d2bebea feat: add known entity registry for CEX and bridge detection (#12)
- Add EntityType enum for classifying blockchain entities
- Add entity_data.py with Polygon CEX hot wallets, bridges, DEX contracts
- Add EntityRegistry class with classify/is_terminal methods
- Support custom entity additions and overrides
- Include 49 comprehensive unit tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:43:03 -05:00
Patrick SelamyandGitHub 4111d1ee00 Merge pull request #42 from pselamy/fix/11
feat: add wallet profile database schema and repositories (#11)
2026-01-04 16:38:10 -05:00
Patrick SelamyandClaude Opus 4.5 0003d228e5 feat: add wallet profile database schema and repositories (#11)
- Add SQLAlchemy models for wallet profiles, funding transfers, and relationships
- Add WalletRepository, FundingRepository, RelationshipRepository with async support
- Add DatabaseManager for connection and session management
- Add Alembic migration for initial schema
- Include comprehensive test suite with 21 tests using in-memory SQLite

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:37:40 -05:00
Patrick SelamyandGitHub 656bd6469c Merge pull request #41 from pselamy/fix/22
feat: add alert history storage and deduplication (#22)
2026-01-04 16:30:02 -05:00
Patrick SelamyandClaude Opus 4.5 87f51a9c32 feat: add alert history storage and deduplication (#22)
- Add AlertHistory class for Redis-based alert tracking
- Add AlertRecord dataclass for serialization/deserialization
- Implement deduplication by wallet/market/hour combination
- Add time-based indexes for efficient querying
- Support user feedback tracking on alerts
- Include cleanup of old alerts beyond retention period

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:29:19 -05:00
Patrick SelamyandGitHub 6f60e2fb6d Merge pull request #40 from pselamy/fix/21
feat: add Discord and Telegram webhook dispatcher
2026-01-04 16:22:27 -05:00
Patrick SelamyandClaude Opus 4.5 b0314fee57 feat: add Discord and Telegram webhook dispatcher (#21)
Implements AlertDispatcher with multi-channel delivery support:
- DiscordChannel using webhook URL with embed formatting
- TelegramChannel using Bot API with MarkdownV2
- Rate limiting per channel (configurable)
- Circuit breaker pattern for failing channels
- Async delivery with retry and exponential backoff
- 23 comprehensive tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:22:01 -05:00
Patrick SelamyandGitHub f91dbb6b6d Merge pull request #39 from pselamy/fix/20
feat: add alert message formatter with multi-channel support
2026-01-04 16:16:23 -05:00
Patrick SelamyandClaude Opus 4.5 ccae51c466 feat: add alert message formatter with multi-channel support (#20)
Implements AlertFormatter class that transforms RiskAssessment objects
into formatted messages for Discord (embeds), Telegram (markdown), and
plain text channels. Includes FormattedAlert dataclass, helper functions
for address truncation and risk level display, and comprehensive tests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:15:49 -05:00
Patrick SelamyandGitHub 4acc7916dd Merge pull request #38 from pselamy/fix/18
feat(detector): add composite risk scorer for signal aggregation (#18)
2026-01-04 16:07:16 -05:00
Patrick SelamyandClaude Opus 4.5 4981277eef feat(detector): add composite risk scorer for signal aggregation (#18)
Implement RiskScorer that combines signals from multiple detectors into
a unified risk assessment with weighted scoring and deduplication.

Features:
- SignalBundle for collecting signals for a single trade
- RiskAssessment dataclass with complete scoring metadata
- Configurable weights for each signal type
- Multi-signal bonus (1.2x for 2 signals, 1.3x for 3+)
- Redis-based deduplication (1 hour window by default)
- Alert threshold configuration (default: 0.6)
- Batch assessment for processing multiple trades
- A/B testing support via dynamic weight updates

Default weights:
- fresh_wallet: 0.40
- size_anomaly: 0.35
- niche_market: 0.25

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 16:06:47 -05:00
Patrick SelamyandGitHub d5e04593f1 Merge pull request #37 from pselamy/fix/15
feat(detector): add position size anomaly detection (#15)
2026-01-04 15:59:14 -05:00
Patrick SelamyandClaude Opus 4.5 a0bec521b6 feat(detector): add position size anomaly detection (#15)
Implement SizeAnomalyDetector for identifying trades with unusually
large position sizes relative to market liquidity.

Features:
- Volume impact analysis (trade size / 24h volume)
- Order book impact analysis (trade size / book depth)
- Niche market detection using category heuristics
- Confidence scoring with configurable thresholds
- Batch analysis for processing multiple trades

The detector gracefully handles missing volume/book data by falling
back to category-based heuristics for identifying niche markets
where large trades are more significant.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:58:27 -05:00
Patrick SelamyandGitHub 89bf80e3d8 Merge pull request #36 from pselamy/fix/14
feat: implement fresh wallet detection algorithm (#14)
2026-01-04 15:51:03 -05:00
Patrick SelamyandClaude Opus 4.5 78243a6fb8 feat: implement fresh wallet detection algorithm (#14)
Add FreshWalletDetector class that identifies trades from fresh wallets
and generates alert signals with confidence scores.

Features:
- FreshWalletSignal dataclass with trade/wallet data and confidence
- Configurable thresholds for nonce, age, and minimum trade size
- Confidence scoring based on wallet freshness and trade characteristics
- Batch analysis support with parallel processing
- Integration with WalletAnalyzer from profiler module

Confidence scoring:
- Base: 0.5 (fresh wallet detected)
- +0.2 if nonce == 0 (brand new)
- +0.1 if age < 2 hours (very young)
- +0.1 if trade size > $10,000 (large trade)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:49:52 -05:00
Patrick SelamyandGitHub cda3200987 Merge pull request #35 from pselamy/fix/9
feat: implement wallet age analyzer with fresh wallet detection (#9)
2026-01-04 15:42:11 -05:00
Patrick SelamyandClaude Opus 4.5 b81ac7c29f feat: implement wallet age analyzer with fresh wallet detection (#9)
## Summary
- Add WalletAnalyzer class for detecting fresh/suspicious wallets
- Add WalletProfile dataclass with freshness scoring
- Comprehensive test coverage (31 new tests, 82 total)

## Features
- Fresh wallet detection based on nonce threshold (default <5)
- Wallet age calculation from first transaction
- USDC balance tracking on Polygon
- Freshness score (0-1) combining nonce and age factors
- Result caching with configurable TTL
- Batch analysis support for multiple wallets

## Usage
```python
analyzer = WalletAnalyzer(polygon_client, redis=redis)

# Full analysis
profile = await analyzer.analyze("0x...")
print(f"Fresh: {profile.is_fresh}, Score: {profile.freshness_score}")

# Quick check
is_fresh = await analyzer.is_fresh("0x...")

# Batch analysis
fresh_wallets = await analyzer.get_fresh_wallets(addresses)
```

## Test plan
- [x] All 82 profiler tests pass
- [x] Ruff lint passes
- [x] Mypy type check passes

Closes #9

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:41:34 -05:00
Patrick SelamyandGitHub 9c13e4ca07 Merge pull request #34 from pselamy/fix/8
feat: implement Polygon RPC client with caching and rate limiting (#8)
2026-01-04 15:34:29 -05:00
Patrick SelamyandClaude Opus 4.5 7eee2a3b24 feat: implement Polygon RPC client with caching and rate limiting (#8)
## Summary
- Add PolygonClient for blockchain data queries with rate limiting, retry logic, and Redis caching
- Implement Transaction and WalletInfo data models with unit conversions
- Add comprehensive test coverage (51 tests)

## Features
- Token bucket rate limiter to respect RPC provider limits
- Exponential backoff retry logic with configurable attempts
- Automatic failover to secondary RPC URL
- Redis caching with configurable TTL
- Methods: get_transaction_count, get_balance, get_token_balance, get_block, get_wallet_info

## Test plan
- [x] All 51 profiler tests pass
- [x] Ruff lint passes
- [x] Mypy type check passes

Closes #8

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:33:49 -05:00
Patrick SelamyandGitHub 0293610b23 Merge pull request #33 from pselamy/fix/6
feat: add connection health monitor with metrics (#6)
2026-01-04 15:22:57 -05:00
Patrick SelamyandClaude Opus 4.5 7d32135bb9 feat: add connection health monitor with metrics (#6)
Implements the HealthMonitor class for tracking connection health:
- Tracks connection states per stream (active, stale, disconnected)
- Records events and calculates throughput (events/second)
- Detects stale streams (no events for configurable threshold)
- Exposes Prometheus-compatible metrics endpoint (/metrics)
- Provides HTTP health endpoints (/health, /ready, /live)

Exports: HealthMonitor, HealthReport, HealthStatus, StreamHealth, StreamStatus

Tests: 47 comprehensive unit tests covering all functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:22:10 -05:00
Patrick SelamyandGitHub 3bf8e228b8 Merge pull request #32 from pselamy/fix/5
feat: add Redis Streams event publisher for trade events (#5)
2026-01-04 15:05:11 -05:00
Patrick SelamyandClaude Opus 4.5 2eabbad738 feat: add Redis Streams event publisher for trade events (#5)
Implement EventPublisher class for publishing trade events to Redis
Streams, enabling decoupled downstream processing. Key features:

- EventPublisher wrapping Redis Streams XADD/XREADGROUP commands
- Single and batch publishing with configurable max stream length
- Consumer group management (create/ensure)
- Event reading with pending entry recovery
- Acknowledgment helpers for exactly-once semantics
- Stream info and trimming utilities
- Full TradeEvent serialization/deserialization

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:04:34 -05:00
Patrick SelamyandGitHub f07f6f17ca Merge pull request #31 from pselamy/fix/4
feat: add market metadata synchronizer with Redis caching (#4)
2026-01-04 14:57:36 -05:00
Patrick SelamyandClaude Opus 4.5 8db2516001 feat: add market metadata synchronizer with Redis caching (#4)
Implement MarketMetadataSync class for background synchronization of
market metadata with Redis-based caching. Key features:

- MarketMetadata dataclass with derived category field
- Automatic category derivation from market title (politics, crypto,
  sports, entertainment, finance, tech, science, other)
- Background sync loop with configurable interval (default: 5 min)
- Redis caching with TTL-based expiration (default: 10 min)
- Cache-first lookups via get_market() method
- State management with callbacks for monitoring
- Comprehensive test suite (29 tests)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 14:56:39 -05:00
Patrick SelamyandGitHub 20d272b6c3 Merge pull request #30 from pselamy/fix/3
feat: implement WebSocket trade stream handler (#3)
2026-01-04 14:47:14 -05:00
Patrick SelamyandClaude Opus 4.5 85010a3ea5 feat: implement WebSocket trade stream handler with reconnection
- Add TradeEvent dataclass for trade data from WebSocket feed
- Implement TradeStreamHandler with async WebSocket streaming
- Add automatic reconnection with exponential backoff (1s-30s)
- Support event/market filtering for targeted subscriptions
- Include connection state management and statistics tracking
- Add websockets>=12.0 dependency

Acceptance Criteria:
- [x] TradeStreamHandler class using websockets library
- [x] Connects to Polymarket WSS endpoint
- [x] Subscribes to market trade channel on connection
- [x] Parses trade messages into TradeEvent dataclass
- [x] Implements heartbeat/ping-pong for connection health
- [x] Auto-reconnects on disconnect with exponential backoff
- [x] Emits events via callback pattern
- [x] Logs connection state changes

Closes #3

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 14:46:38 -05:00
Patrick SelamyandGitHub 1299cfe0b7 Merge pull request #29 from pselamy/fix/2
feat: implement Polymarket CLOB client wrapper (#2)
2026-01-04 14:41:29 -05:00
Patrick SelamyandClaude Opus 4.5 bb5fc086ae feat: implement Polymarket CLOB client wrapper with rate limiting
- Add ClobClient class wrapping py-clob-client library
- Implement rate limiting (10 requests/second) with token bucket
- Add retry logic with exponential backoff (3 retries)
- Load API key from POLYMARKET_API_KEY environment variable
- Create Market, Orderbook, Token dataclass models
- Add comprehensive unit tests with mocked responses

Acceptance Criteria:
- [x] ClobClient class that wraps py-clob-client
- [x] Loads POLYMARKET_API_KEY from environment
- [x] Implements get_markets() returning all active markets
- [x] Implements get_market(market_id) returning market details
- [x] Implements get_orderbook(market_id) returning current book
- [x] Rate limiting: max 10 requests/second with automatic throttling
- [x] Retry logic: 3 retries with exponential backoff on errors
- [x] Unit tests with mocked responses
- [x] Type hints for all public methods

Closes #2

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 14:40:43 -05:00
Patrick SelamyandGitHub bc05af2fd7 Merge pull request #28 from pselamy/fix/25
feat: set up Python project structure with pyproject.toml (#25)
2026-01-04 14:35:33 -05:00
Patrick SelamyandClaude Opus 4.5 8211e57b61 feat: set up Python project structure with pyproject.toml
- Add pyproject.toml with core and dev dependencies
- Configure Ruff for linting and formatting
- Configure MyPy for strict type checking
- Configure pytest with asyncio support
- Create src/polymarket_insider_tracker package structure
- Add py.typed marker for PEP 561 compliance
- Add pre-commit hooks configuration
- Add comprehensive .gitignore
- Create test directory structure with basic tests

Closes #25

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 14:34:37 -05:00
Patrick SelamyandGitHub 9c4006b9aa Merge pull request #27 from pselamy/feat/priority-issue-resolution-skill
feat: add priority-issue-resolution skill for autonomous issue handling
2026-01-04 14:05:05 -05:00
Patrick Selamy c4c9f96668 feat: add priority-issue-resolution skill for autonomous issue handling 2026-01-04 14:04:21 -05:00
Patrick Selamy 32656b2f2f Add comprehensive README with project vision and technical overview 2026-01-04 13:12:55 -05:00
Patrick SelamyandGitHub c27d788c96 Initial commit 2026-01-04 13:10:50 -05:00