Add analyze.sh: diagnostic script for signals.csv
Outputs: file info, time span, recommendation breakdown, max edges, phase distribution, max model probabilities per phase, would-be ENTER breakdown by regime, recent rows, and PM2 error tails. Use when no pushes arrive to distinguish 'no signals' from 'signals being swallowed' — see DEPLOYMENT.md pitfall #7.
This commit is contained in:
+71
@@ -0,0 +1,71 @@
|
|||||||
|
CSV=/opt/PolymarketBTC15mAssistant/logs/signals.csv
|
||||||
|
|
||||||
|
echo "=== File info ==="
|
||||||
|
wc -l $CSV
|
||||||
|
ls -la $CSV
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Time span ==="
|
||||||
|
head -2 $CSV | tail -1 | awk -F, '{print "first:", $1}'
|
||||||
|
tail -1 $CSV | awk -F, '{print "last :", $1}'
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Recommendation breakdown ==="
|
||||||
|
awk -F, 'NR>1{print $12}' $CSV | sort | uniq -c | sort -rn
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Max edges seen ==="
|
||||||
|
awk -F, 'NR>1 && $10+0 > maxu {maxu=$10+0} END{printf "max edge_up: %.4f\n", maxu}' $CSV
|
||||||
|
awk -F, 'NR>1 && $11+0 > maxd {maxd=$11+0} END{printf "max edge_down: %.4f\n", maxd}' $CSV
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Phase distribution ==="
|
||||||
|
awk -F, 'NR>1{
|
||||||
|
t=$3+0;
|
||||||
|
if (t >= 10) p="EARLY";
|
||||||
|
else if (t >= 5) p="MID";
|
||||||
|
else p="LATE";
|
||||||
|
print p
|
||||||
|
}' $CSV | sort | uniq -c
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Max model_up/down at each phase ==="
|
||||||
|
awk -F, 'NR>1{
|
||||||
|
mu=$6+0; md=$7+0; t=$3+0;
|
||||||
|
if (t >= 10) p="EARLY"; else if (t >= 5) p="MID"; else p="LATE";
|
||||||
|
if (mu > m[p"_u"]) m[p"_u"]=mu;
|
||||||
|
if (md > m[p"_d"]) m[p"_d"]=md;
|
||||||
|
} END{for (k in m) printf " %-6s model_up=%.3f model_down=%.3f\n", k, m[k], 1-m[k]}' $CSV
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== TREND_UP rows: would-be ENTER breakdown ==="
|
||||||
|
awk -F, 'NR>1 && $4 == "TREND_UP" && $10+0 > 0{
|
||||||
|
e=$10+0; mu=$6+0;
|
||||||
|
if (e >= 0.05 && mu >= 0.55) bucket="BOTH met (would ENTER)";
|
||||||
|
else if (e >= 0.05) bucket="edge ok, model low";
|
||||||
|
else if (mu >= 0.55) bucket="model ok, edge low";
|
||||||
|
else bucket="both low";
|
||||||
|
cnt[bucket]++
|
||||||
|
} END{for (k in cnt) printf " %-30s %d\n", k, cnt[k]}' $CSV
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== TREND_DOWN rows ==="
|
||||||
|
awk -F, 'NR>1 && $4 == "TREND_DOWN" && $11+0 > 0{
|
||||||
|
e=$11+0; md=$7+0;
|
||||||
|
if (e >= 0.05 && md >= 0.55) bucket="BOTH met (would ENTER)";
|
||||||
|
else if (e >= 0.05) bucket="edge ok, model low";
|
||||||
|
else if (md >= 0.55) bucket="model ok, edge low";
|
||||||
|
else bucket="both low";
|
||||||
|
cnt[bucket]++
|
||||||
|
} END{for (k in cnt) printf " %-30s %d\n", k, cnt[k]}' $CSV
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Recent 5 rows ==="
|
||||||
|
tail -5 $CSV
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== PM2 errors (last 20 each) ==="
|
||||||
|
echo "--- watcher ---"
|
||||||
|
tail -20 /opt/PolymarketBTC15mAssistant/logs/pm2-watcher.err.log 2>/dev/null
|
||||||
|
echo "--- bot ---"
|
||||||
|
tail -20 /opt/PolymarketBTC15mAssistant/logs/pm2-bot.err.log 2>/dev/null
|
||||||
Reference in New Issue
Block a user