Market Watch: multiplayer GARP paper trading simulator

- Game engine with multiplayer support (create games, join, leaderboard)
- GARP stock screener (S&P 500 + 400 MidCap, 900+ tickers)
- Automated trading logic for AI player (Case)
- Web portal at marketwatch.local:8889 with dark theme
- Systemd timer for Mon-Fri market hours
- Telegram alerts on trades and daily summary
- Stock analysis deep dive data (BAC, CFG, FITB, INCY)
- Expanded scan results (22 GARP candidates)
- Craigslist account setup + credentials
This commit is contained in:
2026-02-08 15:18:41 -06:00
parent b6095ec964
commit be43231c3f
29 changed files with 4169 additions and 4 deletions

View File

@ -0,0 +1,14 @@
{
"game_id": "7ebf65c7",
"name": "GARP Challenge",
"starting_cash": 100000.0,
"start_date": "2026-02-08",
"end_date": null,
"creator": "case",
"created_at": "2026-02-08T15:15:43.402301",
"players": [
"case",
"testplayer"
],
"status": "active"
}

View File

@ -0,0 +1,4 @@
{
"cash": 100000.0,
"positions": {}
}

View File

@ -0,0 +1,4 @@
{
"cash": 100000.0,
"positions": {}
}

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
{"cash": 100000.0, "positions": {}}

View File

@ -0,0 +1,206 @@
{
"date": "2026-02-08",
"timestamp": "2026-02-08T15:18:03.800566",
"total_scanned": 902,
"candidates_found": 11,
"candidates": [
{
"ticker": "ALLY",
"price": 42.31,
"market_cap": 13052339200,
"market_cap_b": 13.1,
"trailing_pe": 17.85,
"forward_pe": 6.7,
"peg_ratio": null,
"revenue_growth": 12.0,
"earnings_growth": 265.4,
"roe": 5.8,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 44.58,
"week52_high": 47.27,
"pct_from_52wk_high": 10.5,
"score": -21.04
},
{
"ticker": "JHG",
"price": 48.22,
"market_cap": 7448852992,
"market_cap_b": 7.4,
"trailing_pe": 9.22,
"forward_pe": 10.12,
"peg_ratio": null,
"revenue_growth": 61.3,
"earnings_growth": 243.6,
"roe": 16.2,
"quick_ratio": 69.46,
"debt_to_equity": 6.5,
"rsi": 63.83,
"week52_high": 49.42,
"pct_from_52wk_high": 2.4,
"score": -20.37
},
{
"ticker": "INCY",
"price": 108.39,
"market_cap": 21279418368,
"market_cap_b": 21.3,
"trailing_pe": 18.37,
"forward_pe": 13.61,
"peg_ratio": null,
"revenue_growth": 20.0,
"earnings_growth": 290.7,
"roe": 30.4,
"quick_ratio": 2.86,
"debt_to_equity": 0.9,
"rsi": 54.22,
"week52_high": 112.29,
"pct_from_52wk_high": 3.5,
"score": -17.46
},
{
"ticker": "FHN",
"price": 26.23,
"market_cap": 12915496960,
"market_cap_b": 12.9,
"trailing_pe": 14.03,
"forward_pe": 11.19,
"peg_ratio": null,
"revenue_growth": 23.7,
"earnings_growth": 74.9,
"roe": 10.9,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 72.21,
"week52_high": 26.56,
"pct_from_52wk_high": 1.2,
"score": 1.3299999999999992
},
{
"ticker": "FNB",
"price": 18.9,
"market_cap": 6768781312,
"market_cap_b": 6.8,
"trailing_pe": 12.12,
"forward_pe": 9.66,
"peg_ratio": null,
"revenue_growth": 26.4,
"earnings_growth": 56.5,
"roe": 8.7,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 69.25,
"week52_high": 19.04,
"pct_from_52wk_high": 0.7,
"score": 1.37
},
{
"ticker": "EXEL",
"price": 43.9,
"market_cap": 11817991168,
"market_cap_b": 11.8,
"trailing_pe": 18.45,
"forward_pe": 12.79,
"peg_ratio": null,
"revenue_growth": 10.8,
"earnings_growth": 72.5,
"roe": 30.6,
"quick_ratio": 3.5,
"debt_to_equity": 8.2,
"rsi": 49.65,
"week52_high": 49.62,
"pct_from_52wk_high": 11.5,
"score": 4.459999999999999
},
{
"ticker": "CART",
"price": 34.64,
"market_cap": 9125501952,
"market_cap_b": 9.1,
"trailing_pe": 19.03,
"forward_pe": 8.84,
"peg_ratio": null,
"revenue_growth": 10.2,
"earnings_growth": 21.1,
"roe": 15.3,
"quick_ratio": 3.33,
"debt_to_equity": 1.0,
"rsi": 30.92,
"week52_high": 53.5,
"pct_from_52wk_high": 35.3,
"score": 5.709999999999999
},
{
"ticker": "CFG",
"price": 68.12,
"market_cap": 29256599552,
"market_cap_b": 29.3,
"trailing_pe": 17.65,
"forward_pe": 10.85,
"peg_ratio": null,
"revenue_growth": 10.7,
"earnings_growth": 35.9,
"roe": 7.2,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 75.46,
"week52_high": 68.36,
"pct_from_52wk_high": 0.4,
"score": 6.1899999999999995
},
{
"ticker": "EWBC",
"price": 122.5,
"market_cap": 16854236160,
"market_cap_b": 16.9,
"trailing_pe": 12.87,
"forward_pe": 11.18,
"peg_ratio": null,
"revenue_growth": 21.6,
"earnings_growth": 21.3,
"roe": 15.9,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 67.58,
"week52_high": 123.22,
"pct_from_52wk_high": 0.6,
"score": 6.890000000000001
},
{
"ticker": "BAC",
"price": 56.53,
"market_cap": 412810084352,
"market_cap_b": 412.8,
"trailing_pe": 14.84,
"forward_pe": 11.41,
"peg_ratio": null,
"revenue_growth": 13.2,
"earnings_growth": 20.9,
"roe": 10.2,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 71.14,
"week52_high": 57.55,
"pct_from_52wk_high": 1.8,
"score": 8.0
},
{
"ticker": "FITB",
"price": 55.08,
"market_cap": 49574670336,
"market_cap_b": 49.6,
"trailing_pe": 15.6,
"forward_pe": 11.24,
"peg_ratio": null,
"revenue_growth": 11.5,
"earnings_growth": 20.8,
"roe": 12.2,
"quick_ratio": null,
"debt_to_equity": null,
"rsi": 71.83,
"week52_high": 55.36,
"pct_from_52wk_high": 0.5,
"score": 8.01
}
]
}

View File

@ -0,0 +1 @@
[]

File diff suppressed because one or more lines are too long