| |
| """ |
| BuilderBrain Hackathon Demo |
| ============================ |
| |
| Run this script to demonstrate the full BuilderBrain pipeline: |
| 1. Fetch live Polymarket data |
| 2. Generate reasoning traces with Kelly sizing |
| 3. Route via builder codes |
| 4. Settle via Arc nanopayments |
| |
| Usage: |
| python demo.py |
| |
| Expected output: |
| - 20-50 trade signals with reasoning traces |
| - Portfolio stats with risk metrics |
| - Audit log ready for on-chain anchoring |
| """ |
|
|
| import json |
| from builderbrain import BuilderBrain |
|
|
|
|
| def main(): |
| print("=" * 70) |
| print(" BuilderBrain β Agentic Prediction Market Intelligence") |
| print(" Agora Agents Hackathon | Canteen Γ Circle") |
| print("=" * 70) |
| |
| |
| brain = BuilderBrain( |
| bankroll_usd=10000, |
| paper_trade=True, |
| builder_code="builderbrain_demo_v1", |
| min_edge=0.03, |
| max_positions=15, |
| ) |
| |
| |
| for i in range(3): |
| print(f"\n{'β' * 70}") |
| print(f" Cycle {i+1}/3 β Simulating live market scanning...") |
| print(f"{'β' * 70}") |
| |
| signals = brain.run_cycle() |
| |
| |
| if signals: |
| top = max(signals, key=lambda s: s.expected_return) |
| print(f"\n π― Top Signal:") |
| print(f" Market: {top.market_id}") |
| print(f" Side: {top.side} | Size: {top.size_fraction:.2%} bankroll") |
| print(f" Expected Return: {top.expected_return:.4f}") |
| print(f" Confidence: {top.confidence:.1%}") |
| print(f" Urgency: {top.urgency}") |
| print(f" Trace Hash: {top.reasoning_trace.reasoning_hash}") |
| |
| |
| print(f"\n{'=' * 70}") |
| print(" FINAL PORTFOLIO STATS") |
| print(f"{'=' * 70}") |
| |
| stats = brain.get_portfolio_stats() |
| print(json.dumps(stats, indent=2, default=str)) |
| |
| |
| audit_file = brain.export_audit_log("builderbrain_audit.json") |
| print(f"\n π Audit log exported: {audit_file}") |
| |
| |
| print(f"\n{'=' * 70}") |
| print(" TOP 5 SIGNALS (by expected return)") |
| print(f"{'=' * 70}") |
| |
| for i, sig in enumerate(brain.get_top_signals(5), 1): |
| print(f"\n #{i} {sig.market_id}") |
| print(f" {sig.side} @ {sig.size_fraction:.2%} bankroll") |
| print(f" E[return]: {sig.expected_return:.4f} | Conf: {sig.confidence:.1%}") |
| print(f" Trace: {sig.reasoning_trace.reasoning_hash}") |
| print(f" Arguments: {len(sig.reasoning_trace.arguments)}") |
| print(f" Risks: {len(sig.reasoning_trace.risk_factors)}") |
| |
| print(f"\n{'=' * 70}") |
| print(" Demo complete. Ready for hackathon submission.") |
| print(f"{'=' * 70}") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|