Jitendra12421 commited on
Commit
8e6f49b
·
verified ·
1 Parent(s): 0353a43

Upload runtime.py

Browse files
Files changed (1) hide show
  1. runtime.py +3 -88
runtime.py CHANGED
@@ -1399,9 +1399,9 @@ def load_live_accuracy() -> dict[str, Any]:
1399
  except Exception:
1400
  pass
1401
  return {
1402
- "tomorrow": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0, "backtest_count": 0, "live_count": 0},
1403
- "t5": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0, "backtest_count": 0, "live_count": 0},
1404
- "tplus1": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0, "backtest_count": 0, "live_count": 0},
1405
  }
1406
 
1407
 
@@ -1410,74 +1410,6 @@ def save_live_accuracy(data: dict[str, Any]) -> None:
1410
  LIVE_ACCURACY_PATH.write_text(json.dumps(data, indent=2), encoding="utf-8")
1411
 
1412
 
1413
- def seed_live_accuracy_from_backtest() -> dict[str, Any]:
1414
- """Seed the live accuracy ledger from backtest test predictions."""
1415
- ledger = {
1416
- "tomorrow": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0, "backtest_count": 0, "live_count": 0},
1417
- "t5": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0, "backtest_count": 0, "live_count": 0},
1418
- "tplus1": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0, "backtest_count": 0, "live_count": 0},
1419
- }
1420
-
1421
- # T+5
1422
- t5_test = load_test_predictions()
1423
- if not t5_test.empty and "correct" in t5_test.columns:
1424
- for _, row in t5_test.iterrows():
1425
- day = pd.to_datetime(row.get("date")).date().isoformat()
1426
- pred = str(row.get("prediction", "")).upper()
1427
- correct = bool(row.get("correct"))
1428
- actual = pred if correct else ("DOWN" if pred == "UP" else "UP")
1429
- if pred in ("UP", "DOWN"):
1430
- ledger["t5"]["entries"].append({
1431
- "date": day, "prediction": pred, "actual": actual, "correct": correct, "source": "backtest"
1432
- })
1433
- ledger["t5"]["backtest_count"] = len(ledger["t5"]["entries"])
1434
-
1435
- # Tomorrow
1436
- tom_test = load_tomorrow_test_predictions()
1437
- if not tom_test.empty:
1438
- if "pred" in tom_test.columns and "prediction" not in tom_test.columns:
1439
- tom_test["prediction"] = np.where(pd.to_numeric(tom_test["pred"], errors="coerce") == 1, "UP", "DOWN")
1440
- if "correct" not in tom_test.columns and {"target", "pred"}.issubset(tom_test.columns):
1441
- tom_test["correct"] = pd.to_numeric(tom_test["target"], errors="coerce") == pd.to_numeric(tom_test["pred"], errors="coerce")
1442
- if "correct" in tom_test.columns:
1443
- for _, row in tom_test.iterrows():
1444
- target_date = row.get("target_date")
1445
- if pd.isna(target_date):
1446
- continue
1447
- day = pd.to_datetime(target_date).date().isoformat()
1448
- pred = str(row.get("prediction", "")).upper()
1449
- correct = bool(row.get("correct"))
1450
- actual = pred if correct else ("DOWN" if pred == "UP" else "UP")
1451
- if pred in ("UP", "DOWN"):
1452
- ledger["tomorrow"]["entries"].append({
1453
- "date": day, "prediction": pred, "actual": actual, "correct": correct, "source": "backtest"
1454
- })
1455
- ledger["tomorrow"]["backtest_count"] = len(ledger["tomorrow"]["entries"])
1456
-
1457
- # T+1
1458
- t1_test = load_tplus1_test_predictions()
1459
- if not t1_test.empty:
1460
- if "correct" not in t1_test.columns and {"target", "prediction"}.issubset(t1_test.columns):
1461
- t1_test["correct"] = t1_test["prediction"].str.upper() == np.where(pd.to_numeric(t1_test["target"], errors="coerce") == 1, "UP", "DOWN")
1462
- if "correct" in t1_test.columns:
1463
- for _, row in t1_test.iterrows():
1464
- target_date = row.get("target_date")
1465
- if pd.isna(target_date):
1466
- continue
1467
- day = pd.to_datetime(target_date).date().isoformat()
1468
- pred = str(row.get("prediction", "")).upper()
1469
- correct = bool(row.get("correct"))
1470
- actual = pred if correct else ("DOWN" if pred == "UP" else "UP")
1471
- if pred in ("UP", "DOWN"):
1472
- ledger["tplus1"]["entries"].append({
1473
- "date": day, "prediction": pred, "actual": actual, "correct": correct, "source": "backtest"
1474
- })
1475
- ledger["tplus1"]["backtest_count"] = len(ledger["tplus1"]["entries"])
1476
-
1477
- save_live_accuracy(ledger)
1478
- return ledger
1479
-
1480
-
1481
  def update_live_accuracy(session_date: date) -> dict[str, Any]:
1482
  """Score today's predictions against actual outcomes and update the ledger.
1483
 
@@ -1487,11 +1419,6 @@ def update_live_accuracy(session_date: date) -> dict[str, Any]:
1487
  we want to score).
1488
  """
1489
  ledger = load_live_accuracy()
1490
-
1491
- # If ledger is empty (or unseeded), seed from backtest first
1492
- if not any(ledger[m]["entries"] for m in ("t5", "tomorrow", "tplus1")):
1493
- ledger = seed_live_accuracy_from_backtest()
1494
-
1495
  daily = pd.read_parquet(NIFTY_1D_PATH)
1496
  daily["_date"] = pd.to_datetime(daily["date"], errors="coerce").dt.normalize()
1497
  today_rows = daily[daily["_date"].dt.date == session_date]
@@ -1518,7 +1445,6 @@ def update_live_accuracy(session_date: date) -> dict[str, Any]:
1518
  "prediction": pred,
1519
  "actual": actual_close_gt_open,
1520
  "correct": pred == actual_close_gt_open,
1521
- "source": "live"
1522
  })
1523
  except Exception:
1524
  pass
@@ -1536,7 +1462,6 @@ def update_live_accuracy(session_date: date) -> dict[str, Any]:
1536
  "prediction": pred,
1537
  "actual": actual_close_gt_open,
1538
  "correct": pred == actual_close_gt_open,
1539
- "source": "live"
1540
  })
1541
  except Exception:
1542
  pass
@@ -1570,7 +1495,6 @@ def update_live_accuracy(session_date: date) -> dict[str, Any]:
1570
  "prediction": pred,
1571
  "actual": t1_actual,
1572
  "correct": pred == t1_actual,
1573
- "source": "live"
1574
  })
1575
  except Exception:
1576
  pass
@@ -1580,18 +1504,9 @@ def update_live_accuracy(session_date: date) -> dict[str, Any]:
1580
  entries = ledger[model_id]["entries"]
1581
  total = len(entries)
1582
  correct = sum(1 for e in entries if e.get("correct"))
1583
- backtest_count = sum(1 for e in entries if e.get("source") == "backtest")
1584
- live_count = sum(1 for e in entries if e.get("source") == "live")
1585
-
1586
- # If we have entries but no source is set, assume they need re-seeding
1587
- if backtest_count == 0 and live_count == 0 and total > 0:
1588
- pass # The user can delete the file to force a re-seed. Or we just keep them.
1589
-
1590
  ledger[model_id]["total"] = total
1591
  ledger[model_id]["correct_count"] = correct
1592
  ledger[model_id]["accuracy"] = correct / total if total > 0 else None
1593
- ledger[model_id]["backtest_count"] = backtest_count
1594
- ledger[model_id]["live_count"] = live_count
1595
 
1596
  save_live_accuracy(ledger)
1597
  clear_dashboard_payload_cache()
 
1399
  except Exception:
1400
  pass
1401
  return {
1402
+ "tomorrow": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0},
1403
+ "t5": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0},
1404
+ "tplus1": {"entries": [], "accuracy": None, "total": 0, "correct_count": 0},
1405
  }
1406
 
1407
 
 
1410
  LIVE_ACCURACY_PATH.write_text(json.dumps(data, indent=2), encoding="utf-8")
1411
 
1412
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1413
  def update_live_accuracy(session_date: date) -> dict[str, Any]:
1414
  """Score today's predictions against actual outcomes and update the ledger.
1415
 
 
1419
  we want to score).
1420
  """
1421
  ledger = load_live_accuracy()
 
 
 
 
 
1422
  daily = pd.read_parquet(NIFTY_1D_PATH)
1423
  daily["_date"] = pd.to_datetime(daily["date"], errors="coerce").dt.normalize()
1424
  today_rows = daily[daily["_date"].dt.date == session_date]
 
1445
  "prediction": pred,
1446
  "actual": actual_close_gt_open,
1447
  "correct": pred == actual_close_gt_open,
 
1448
  })
1449
  except Exception:
1450
  pass
 
1462
  "prediction": pred,
1463
  "actual": actual_close_gt_open,
1464
  "correct": pred == actual_close_gt_open,
 
1465
  })
1466
  except Exception:
1467
  pass
 
1495
  "prediction": pred,
1496
  "actual": t1_actual,
1497
  "correct": pred == t1_actual,
 
1498
  })
1499
  except Exception:
1500
  pass
 
1504
  entries = ledger[model_id]["entries"]
1505
  total = len(entries)
1506
  correct = sum(1 for e in entries if e.get("correct"))
 
 
 
 
 
 
 
1507
  ledger[model_id]["total"] = total
1508
  ledger[model_id]["correct_count"] = correct
1509
  ledger[model_id]["accuracy"] = correct / total if total > 0 else None
 
 
1510
 
1511
  save_live_accuracy(ledger)
1512
  clear_dashboard_payload_cache()