Spaces:
No application file
No application file
| # feature_engineering.py | |
| import numpy as np | |
| def calculate_wallet_concentration(holder_data): | |
| """ | |
| holder_data: list of (wallet, %_owned) | |
| Returns: concentration score (0 to 1) | |
| """ | |
| top10 = sorted(holder_data, key=lambda x: x[1], reverse=True)[:10] | |
| total_top10 = sum(x[1] for x in top10) | |
| return total_top10 / 100 # As a ratio | |
| def calculate_volume_acceleration(volume_timeseries): | |
| """ | |
| volume_timeseries: list of (timestamp, volume) | |
| Returns: acceleration value | |
| """ | |
| volumes = [v for _, v in sorted(volume_timeseries)] | |
| if len(volumes) < 3: | |
| return 0 | |
| v1, v2, v3 = volumes[-3:] | |
| accel = ((v3 - v2) - (v2 - v1)) / max(v1, 1) | |
| return accel | |
| def simulate_slippage(liquidity, order_size): | |
| """ | |
| liquidity: USD in pool | |
| order_size: USD value to simulate buy | |
| Returns: simulated slippage percentage | |
| """ | |
| if liquidity == 0: | |
| return 1.0 # 100% slippage | |
| slippage = min(order_size / liquidity, 1.0) | |
| return slippage | |