Add complete test data preparation system for energy trading strategy demo. Includes configuration, data generation scripts, and validation tools for 7 datasets covering electricity prices, battery capacity, renewable/conventional generation, load profiles, data centers, and mining data. Excluded from git: Actual parquet data files (data/raw/, data/processed/) can be regenerated using the provided scripts. Datasets: - electricity_prices: Day-ahead and real-time prices (5 regions) - battery_capacity: Storage system charge/discharge cycles - renewable_generation: Solar, wind, hydro with forecast errors - conventional_generation: Gas, coal, nuclear plant outputs - load_profiles: Regional demand with weather correlations - data_centers: Power demand profiles including mining operations - mining_data: Hashrate, price, profitability (mempool.space API)
239 lines
5.3 KiB
JSON
239 lines
5.3 KiB
JSON
{
|
|
"generated_at": "2026-02-10T16:10:53.614368",
|
|
"summary": {
|
|
"total_datasets": 7,
|
|
"passed": 2,
|
|
"warnings": 5,
|
|
"failed": 0,
|
|
"total_size_mb": 17.72,
|
|
"total_rows": 734451
|
|
},
|
|
"datasets": [
|
|
{
|
|
"dataset": "electricity_prices",
|
|
"rows": 72005,
|
|
"columns": 7,
|
|
"memory_mb": 1.99,
|
|
"missing_values": {},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 72005
|
|
},
|
|
"data_ranges": [],
|
|
"data_types": [],
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"dataset": "battery_capacity",
|
|
"rows": 144010,
|
|
"columns": 7,
|
|
"memory_mb": 3.98,
|
|
"missing_values": {
|
|
"capacity_mwh": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
},
|
|
"charge_level_mwh": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
},
|
|
"charge_rate_mw": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
},
|
|
"discharge_rate_mw": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
},
|
|
"efficiency": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
}
|
|
},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 144010
|
|
},
|
|
"data_ranges": [
|
|
{
|
|
"column": "efficiency",
|
|
"rule": "min >= 0.5",
|
|
"violations": 36,
|
|
"severity": "error"
|
|
},
|
|
{
|
|
"column": "efficiency",
|
|
"rule": "max <= 1.0",
|
|
"violations": 4371,
|
|
"severity": "error"
|
|
}
|
|
],
|
|
"data_types": [],
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"dataset": "renewable_generation",
|
|
"rows": 216015,
|
|
"columns": 7,
|
|
"memory_mb": 5.36,
|
|
"missing_values": {
|
|
"generation_mw": {
|
|
"count": 1080,
|
|
"percentage": 0.5
|
|
},
|
|
"forecast_mw": {
|
|
"count": 1080,
|
|
"percentage": 0.5
|
|
},
|
|
"actual_mw": {
|
|
"count": 1080,
|
|
"percentage": 0.5
|
|
},
|
|
"capacity_factor": {
|
|
"count": 1080,
|
|
"percentage": 0.5
|
|
}
|
|
},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 216015
|
|
},
|
|
"data_ranges": [
|
|
{
|
|
"column": "capacity_factor",
|
|
"rule": "max <= 1.0",
|
|
"violations": 6382,
|
|
"severity": "error"
|
|
}
|
|
],
|
|
"data_types": [],
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"dataset": "conventional_generation",
|
|
"rows": 144010,
|
|
"columns": 6,
|
|
"memory_mb": 3.02,
|
|
"missing_values": {
|
|
"generation_mw": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
},
|
|
"marginal_cost": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
},
|
|
"heat_rate": {
|
|
"count": 720,
|
|
"percentage": 0.5
|
|
}
|
|
},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 144010
|
|
},
|
|
"data_ranges": [
|
|
{
|
|
"column": "heat_rate",
|
|
"rule": "min >= 5",
|
|
"violations": 29,
|
|
"severity": "error"
|
|
},
|
|
{
|
|
"column": "heat_rate",
|
|
"rule": "max <= 15",
|
|
"violations": 867,
|
|
"severity": "error"
|
|
}
|
|
],
|
|
"data_types": [],
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"dataset": "load_profiles",
|
|
"rows": 72005,
|
|
"columns": 6,
|
|
"memory_mb": 1.72,
|
|
"missing_values": {},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 72005
|
|
},
|
|
"data_ranges": [],
|
|
"data_types": [],
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"dataset": "data_centers",
|
|
"rows": 72005,
|
|
"columns": 6,
|
|
"memory_mb": 1.31,
|
|
"missing_values": {
|
|
"power_demand_mw": {
|
|
"count": 360,
|
|
"percentage": 0.5
|
|
},
|
|
"max_bid_price": {
|
|
"count": 360,
|
|
"percentage": 0.5
|
|
}
|
|
},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 72005
|
|
},
|
|
"data_ranges": [
|
|
{
|
|
"column": "power_demand_mw",
|
|
"rule": "min >= 0",
|
|
"violations": 137,
|
|
"severity": "error"
|
|
}
|
|
],
|
|
"data_types": [],
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"dataset": "bitcoin_mining",
|
|
"rows": 14401,
|
|
"columns": 6,
|
|
"memory_mb": 0.34,
|
|
"missing_values": {},
|
|
"duplicated_rows": 0,
|
|
"timestamp_continuity": {
|
|
"status": "checked",
|
|
"expected_frequency": "1min",
|
|
"gaps_detected": 0,
|
|
"total_rows": 14401
|
|
},
|
|
"data_ranges": [
|
|
{
|
|
"column": "btc_price_usd",
|
|
"rule": "min >= 1000",
|
|
"violations": 456,
|
|
"severity": "error"
|
|
}
|
|
],
|
|
"data_types": [],
|
|
"status": "warning"
|
|
}
|
|
]
|
|
} |