kid / feature_engineering.py
nastaseshot's picture
feature_engineering.py
96603ba verified
# 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