#!/usr/bin/env python3
import sys
import json
import argparse
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--json", default="GatherTradingData.json")
    parser.add_argument("--out", default="Temp/profit_giveback_ratchet_v2.json")
    args = parser.parse_args()

    json_path = ROOT / args.json
    if not json_path.exists():
        print(f"Input file not found: {json_path}")
        sys.exit(1)

    raw = json.loads(json_path.read_text(encoding="utf-8"))
    account_snapshot = raw.get("data", {}).get("account_snapshot", []) or []

    ratchets = {}
    for row in account_snapshot:
        ticker = row.get("ticker")
        if not ticker:
            continue
        
        # Simulated/Computed giveback metrics
        current_price = row.get("current_price") or 0.0
        avg_cost = row.get("average_cost") or current_price
        highest_price = row.get("highest_price_since_entry") or current_price
        
        profit_pct = ((current_price - avg_cost) / avg_cost * 100) if avg_cost else 0.0
        peak_gain = highest_price - avg_cost
        current_gain = current_price - avg_cost
        
        giveback_pct = 0.0
        if peak_gain > 0:
            giveback_pct = (peak_gain - current_gain) / peak_gain * 100
            
        ratchets[ticker] = {
            "profit_pct": round(profit_pct, 2),
            "highest_price": highest_price,
            "giveback_pct": round(giveback_pct, 2),
            "ratchet_stage": "APEX_SUPER" if profit_pct >= 60 else "NORMAL"
        }

    out_path = ROOT / args.out
    out_path.parent.mkdir(parents=True, exist_ok=True)
    out_path.write_text(json.dumps({
        "formula_id": "PROFIT_GIVEBACK_RATCHET_V2",
        "ratchets": ratchets
    }, indent=2, ensure_ascii=False), encoding="utf-8")
    
    print(f"Saved profit giveback ratchets to {out_path}")
    sys.exit(0)

if __name__ == "__main__":
    main()
