File size: 2,898 Bytes
865aa70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env python3
"""
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)
    
    # Initialize with $10k paper bankroll
    brain = BuilderBrain(
        bankroll_usd=10000,
        paper_trade=True,
        builder_code="builderbrain_demo_v1",
        min_edge=0.03,  # 3% minimum edge
        max_positions=15,
    )
    
    # Run 3 cycles to simulate 48h of operation
    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()
        
        # Print top signal from this 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}")
    
    # Final stats
    print(f"\n{'=' * 70}")
    print("  FINAL PORTFOLIO STATS")
    print(f"{'=' * 70}")
    
    stats = brain.get_portfolio_stats()
    print(json.dumps(stats, indent=2, default=str))
    
    # Export audit log
    audit_file = brain.export_audit_log("builderbrain_audit.json")
    print(f"\n  📄 Audit log exported: {audit_file}")
    
    # Print top 5 signals
    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()