Files
mev-beta/scripts/test-live-extraction.sh

105 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# Test extraction logic with real log data
# Color codes
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
# Get the last opportunity from logs
line=$(grep "OPPORTUNITY DETECTED" logs/mev_bot.log | tail -1)
echo "════════════════════════════════════════════════════════════"
echo "Testing Extraction Logic with Real Log Data"
echo "════════════════════════════════════════════════════════════"
echo ""
# Extract timestamp
TIMESTAMP=$(echo "$line" | awk '{print $1, $2}')
echo "Timestamp: $TIMESTAMP"
# Check if executable
if echo "$line" | grep -q "isExecutable:true"; then
echo "Status: EXECUTABLE ✅"
else
echo "Status: NOT EXECUTABLE ⚠️"
fi
echo ""
echo "Extracted Fields:"
echo "----------------"
# Token pair (FIXED)
TOKEN_IN=$(echo "$line" | grep -oP 'tokenIn:[^ \]]+' | cut -d: -f2)
TOKEN_OUT=$(echo "$line" | grep -oP 'tokenOut:[^ \]]+' | cut -d: -f2)
echo "Token In: $TOKEN_IN"
echo "Token Out: $TOKEN_OUT"
# Amounts
AMOUNT_IN=$(echo "$line" | grep -oP 'Amount In: [0-9.]+' | grep -oP '[0-9.]+')
AMOUNT_OUT=$(echo "$line" | grep -oP 'Amount Out: [0-9.]+' | grep -oP '[0-9.]+')
echo "Amount In: $AMOUNT_IN"
echo "Amount Out: $AMOUNT_OUT"
# Financial metrics
ESTIMATED_PROFIT=$(echo "$line" | grep -oP 'estimatedProfitETH:[0-9.]+' | cut -d: -f2)
GAS_COST=$(echo "$line" | grep -oP 'gasCostETH:[0-9.eE+-]+' | cut -d: -f2)
NET_PROFIT=$(echo "$line" | grep -oP 'netProfitETH:-?[0-9.eE+-]+' | cut -d: -f2)
echo "Estimated Profit: $ESTIMATED_PROFIT ETH"
echo "Gas Cost: $GAS_COST ETH"
echo "Net Profit: $NET_PROFIT ETH"
# Price impact & margin
PRICE_IMPACT=$(echo "$line" | grep -oP 'priceImpact:[0-9.eE+-]+' | cut -d: -f2)
PROFIT_MARGIN=$(echo "$line" | grep -oP 'profitMargin:-?[0-9.eE+-]+' | cut -d: -f2)
echo "Price Impact: $PRICE_IMPACT"
echo "Profit Margin: $PROFIT_MARGIN"
# Confidence
CONFIDENCE=$(echo "$line" | grep -oP 'confidence:[0-9.]+' | cut -d: -f2)
echo "Confidence: $CONFIDENCE"
# Reject reason (FIXED)
REASON=$(echo "$line" | grep -oP 'rejectReason:[^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+' | cut -d: -f2)
# Trim to just the meaningful part (remove trailing field names)
REASON=$(echo "$REASON" | sed 's/ token[0-9].*$//' | sed 's/ protocol.*$//' | sed 's/ poolAddress.*$//')
echo "Reject Reason: $REASON"
echo ""
echo "════════════════════════════════════════════════════════════"
echo "Now showing formatted output:"
echo "════════════════════════════════════════════════════════════"
echo ""
# Show formatted output
echo -e "${YELLOW}[$TIMESTAMP] 🎯 Opportunity (not executable)${NC}"
echo -e "${CYAN} 🔄 Pair: ${TOKEN_IN}${TOKEN_OUT}${NC}"
echo -e "${CYAN} 📊 Amounts: ${AMOUNT_IN}${AMOUNT_OUT}${NC}"
echo -e "${YELLOW} 💰 Estimated Profit: ${ESTIMATED_PROFIT} ETH${NC}"
echo -e "${RED} ⛽ Gas Cost: ${GAS_COST} ETH${NC}"
echo -e "${RED} 📉 Net After Gas: ${NET_PROFIT} ETH${NC}"
# Price impact as percentage
if [[ -n "$PRICE_IMPACT" ]]; then
PRICE_IMPACT_PCT=$(echo "$PRICE_IMPACT * 100" | bc -l 2>/dev/null || echo "$PRICE_IMPACT")
echo -e "${YELLOW} 📊 Price Impact: $(printf "%.6f" $PRICE_IMPACT_PCT 2>/dev/null || echo "$PRICE_IMPACT")%${NC}"
fi
# Profit margin as percentage
if [[ -n "$PROFIT_MARGIN" ]]; then
PROFIT_MARGIN_PCT=$(echo "$PROFIT_MARGIN * 100" | bc -l 2>/dev/null || echo "$PROFIT_MARGIN")
echo -e "${RED} 📊 Profit Margin: $(printf "%.6f" $PROFIT_MARGIN_PCT 2>/dev/null || echo "$PROFIT_MARGIN")%${NC}"
fi
# Confidence as percentage
if [[ -n "$CONFIDENCE" ]]; then
CONFIDENCE_PCT=$(echo "$CONFIDENCE * 100" | bc -l 2>/dev/null || echo "$CONFIDENCE")
echo -e "${YELLOW} 🎯 Confidence: $(printf "%.1f" $CONFIDENCE_PCT 2>/dev/null || echo "$CONFIDENCE")%${NC}"
fi
echo -e "${RED} ❌ Reason: $REASON${NC}"
echo ""