builderbrain / demo.py
razvan's picture
Upload demo.py
865aa70 verified
#!/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()