{
  "generated_at_utc": "2026-03-27T13:06:50.819800+00:00",
  "prices_csv": "/opt/bots/uranus_monitor/data/prices.csv",
  "events_csv": "/opt/bots/uranus_monitor/data/events.csv",
  "prices_analysis": {
    "total_rows": 5330,
    "overall": {
      "first_timestamp": "2026-03-23T19:37:38.177730+00:00",
      "last_timestamp": "2026-03-27T13:06:05.287097+00:00",
      "first_price": 1.4381,
      "last_price": 1.3333,
      "high": 1.4398,
      "low": 1.3261,
      "range_pct": 8.574014,
      "net_change_pct": -7.287393,
      "max_up_step_pct": 1.062092,
      "max_down_step_pct": -0.535874
    },
    "daily": {
      "2026-03-23": {
        "rows": 261,
        "open": 1.4381,
        "close": 1.4326,
        "high": 1.4398,
        "low": 1.4244,
        "range_pct": 1.081157,
        "max_up_step_pct": 0.238279,
        "max_down_step_pct": -0.265308
      },
      "2026-03-24": {
        "rows": 1429,
        "open": 1.4319,
        "close": 1.4156,
        "high": 1.4345,
        "low": 1.3846,
        "range_pct": 3.603929,
        "max_up_step_pct": 0.53698,
        "max_down_step_pct": -0.328052
      },
      "2026-03-25": {
        "rows": 1429,
        "open": 1.4156,
        "close": 1.4143,
        "high": 1.4364,
        "low": 1.4025,
        "range_pct": 2.417112,
        "max_up_step_pct": 0.402912,
        "max_down_step_pct": -0.319557
      },
      "2026-03-26": {
        "rows": 1430,
        "open": 1.4144,
        "close": 1.36,
        "high": 1.416,
        "low": 1.3366,
        "range_pct": 5.940446,
        "max_up_step_pct": 1.062092,
        "max_down_step_pct": -0.443164
      },
      "2026-03-27": {
        "rows": 781,
        "open": 1.3602,
        "close": 1.3333,
        "high": 1.3718,
        "low": 1.3261,
        "range_pct": 3.446196,
        "max_up_step_pct": 0.285071,
        "max_down_step_pct": -0.535874
      }
    }
  },
  "events_analysis": {
    "total_rows": 445,
    "rule_counts": {
      "SELL_PANIC": 196,
      "SELL_STD": 7,
      "BUY_PANIC": 15,
      "BUY_PROFITLESS": 213,
      "SELL_PROFITLESS": 4
    },
    "daily_rule_counts": {
      "2026-03-23": {
        "SELL_PANIC": 194,
        "SELL_STD": 6
      },
      "2026-03-24": {
        "SELL_STD": 1,
        "BUY_PANIC": 2,
        "SELL_PANIC": 2,
        "BUY_PROFITLESS": 3,
        "SELL_PROFITLESS": 2
      },
      "2026-03-25": {
        "SELL_PROFITLESS": 2,
        "BUY_PANIC": 13
      },
      "2026-03-26": {
        "BUY_PROFITLESS": 150
      },
      "2026-03-27": {
        "BUY_PROFITLESS": 60
      }
    },
    "buy_sell_cycles": {
      "count": 6,
      "avg_return_pct": 0.198761,
      "median_return_pct": 0.633166,
      "min_return_pct": -1.090551,
      "max_return_pct": 1.186453,
      "samples": [
        {
          "buy_ts": "2026-03-24T00:35:21.223496+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4213,
          "sell_ts": "2026-03-24T05:04:07.155290+00:00",
          "sell_rule": "SELL_PANIC",
          "sell_price": 1.4058,
          "return_pct": -1.090551
        },
        {
          "buy_ts": "2026-03-24T05:19:09.716860+00:00",
          "buy_rule": "BUY_PROFITLESS",
          "buy_price": 1.4136,
          "sell_ts": "2026-03-24T08:16:04.323378+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.426,
          "return_pct": 0.877193
        },
        {
          "buy_ts": "2026-03-24T14:52:05.658544+00:00",
          "buy_rule": "BUY_PROFITLESS",
          "buy_price": 1.4042,
          "sell_ts": "2026-03-24T17:05:10.795333+00:00",
          "sell_rule": "SELL_PANIC",
          "sell_price": 1.3895,
          "return_pct": -1.046859
        },
        {
          "buy_ts": "2026-03-24T18:32:05.804663+00:00",
          "buy_rule": "BUY_PROFITLESS",
          "buy_price": 1.3907,
          "sell_ts": "2026-03-24T21:08:05.967299+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.4072,
          "return_pct": 1.186453
        },
        {
          "buy_ts": "2026-03-24T21:11:13.204888+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4068,
          "sell_ts": "2026-03-25T01:18:10.124083+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.4164,
          "return_pct": 0.6824
        },
        {
          "buy_ts": "2026-03-25T01:43:06.457651+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4214,
          "sell_ts": "2026-03-25T11:19:04.874156+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.4297,
          "return_pct": 0.583931
        }
      ]
    },
    "sell_buy_cycles": {
      "count": 207,
      "avg_move_pct": 3.481707,
      "median_move_pct": 3.676417,
      "min_move_pct": -1.789663,
      "max_move_pct": 4.376882,
      "samples": [
        {
          "sell_ts": "2026-03-23T14:41:39.603996+00:00",
          "sell_rule": "SELL_STD",
          "sell_price": 1.4472,
          "buy_ts": "2026-03-24T00:35:21.223496+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4213,
          "move_pct": -1.789663
        },
        {
          "sell_ts": "2026-03-23T14:41:49.608368+00:00",
          "sell_rule": "SELL_STD",
          "sell_price": 1.4472,
          "buy_ts": "2026-03-24T00:35:21.223496+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4213,
          "move_pct": -1.789663
        },
        {
          "sell_ts": "2026-03-23T14:41:59.608093+00:00",
          "sell_rule": "SELL_STD",
          "sell_price": 1.4472,
          "buy_ts": "2026-03-24T00:35:21.223496+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4213,
          "move_pct": -1.789663
        },
        {
          "sell_ts": "2026-03-24T00:32:13.997305+00:00",
          "sell_rule": "SELL_STD",
          "sell_price": 1.4205,
          "buy_ts": "2026-03-24T00:35:21.223496+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4213,
          "move_pct": 0.056318
        },
        {
          "sell_ts": "2026-03-24T05:04:07.155290+00:00",
          "sell_rule": "SELL_PANIC",
          "sell_price": 1.4058,
          "buy_ts": "2026-03-24T05:19:09.716860+00:00",
          "buy_rule": "BUY_PROFITLESS",
          "buy_price": 1.4136,
          "move_pct": 0.554844
        },
        {
          "sell_ts": "2026-03-24T08:16:04.323378+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.426,
          "buy_ts": "2026-03-24T14:52:05.658544+00:00",
          "buy_rule": "BUY_PROFITLESS",
          "buy_price": 1.4042,
          "move_pct": -1.528752
        },
        {
          "sell_ts": "2026-03-24T17:05:10.795333+00:00",
          "sell_rule": "SELL_PANIC",
          "sell_price": 1.3895,
          "buy_ts": "2026-03-24T18:32:05.804663+00:00",
          "buy_rule": "BUY_PROFITLESS",
          "buy_price": 1.3907,
          "move_pct": 0.086362
        },
        {
          "sell_ts": "2026-03-24T21:08:05.967299+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.4072,
          "buy_ts": "2026-03-24T21:11:13.204888+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4068,
          "move_pct": -0.028425
        },
        {
          "sell_ts": "2026-03-25T01:18:10.124083+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.4164,
          "buy_ts": "2026-03-25T01:43:06.457651+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4214,
          "move_pct": 0.353008
        },
        {
          "sell_ts": "2026-03-25T11:19:04.874156+00:00",
          "sell_rule": "SELL_PROFITLESS",
          "sell_price": 1.4297,
          "buy_ts": "2026-03-25T11:32:04.593342+00:00",
          "buy_rule": "BUY_PANIC",
          "buy_price": 1.4364,
          "move_pct": 0.46863
        }
      ]
    },
    "suggestions": {
      "suggested_std_threshold_pct": 4.033,
      "profitless_dominance": 217,
      "panic_event_count": 211,
      "suggested_thresholds": {
        "std_sell": {
          "value_pct": 4.033,
          "status": "estimated",
          "sample_count": 0,
          "source": "overall_market_move"
        },
        "profitless_sell": {
          "value_pct": 0.78,
          "status": "measured",
          "sample_count": 4,
          "source": "profitless_sell_events"
        },
        "panic_sell": {
          "value_pct": 1.069,
          "status": "measured",
          "sample_count": 2,
          "source": "panic_sell_events"
        },
        "std_buy": {
          "value_pct": 4.033,
          "status": "estimated",
          "sample_count": 0,
          "source": "overall_market_move"
        },
        "profitless_buy": {
          "value_pct": 0.555,
          "status": "measured",
          "sample_count": 3,
          "source": "profitless_buy_events"
        },
        "panic_buy": {
          "value_pct": 3.676,
          "status": "measured",
          "sample_count": 204,
          "source": "panic_buy_events"
        }
      },
      "note": "Ha a PROFITLESS események dominálnak, akkor a profitless szabály túl gyakran aktiválódhat. A becsült értékek kevés adat mellett még csak előzetes javaslatok."
    }
  }
}