From 9c713ad3f61a47c155d8c428104a7f0b7a1dd484 Mon Sep 17 00:00:00 2001 From: gavindiaz Date: Wed, 22 Jul 2026 02:21:11 +0800 Subject: [PATCH] Add analyze.sh: diagnostic script for signals.csv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- analyze.sh | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 analyze.sh diff --git a/analyze.sh b/analyze.sh new file mode 100644 index 0000000..7fc17a2 --- /dev/null +++ b/analyze.sh @@ -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 \ No newline at end of file