bbdata-cli 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/bbdata.js +935 -30
- package/dist/bin/bbdata.js.map +1 -1
- package/dist/src/index.d.ts +52 -1
- package/dist/src/index.js +875 -31
- package/dist/src/index.js.map +1 -1
- package/dist/templates/queries/hitter-raw-bip.ts +65 -0
- package/dist/templates/queries/hitter-zone-grid.ts +90 -0
- package/dist/templates/queries/index.ts +27 -24
- package/dist/templates/queries/pitcher-raw-pitches.ts +62 -0
- package/dist/templates/queries/trend-rolling-average.ts +15 -3
- package/dist/templates/reports/advance-sp.hbs +66 -60
- package/dist/templates/reports/pro-hitter-eval.hbs +77 -65
- package/dist/templates/reports/pro-pitcher-eval.hbs +81 -69
- package/package.json +68 -63
- package/src/templates/reports/advance-sp.hbs +66 -60
- package/src/templates/reports/pro-hitter-eval.hbs +77 -65
- package/src/templates/reports/pro-pitcher-eval.hbs +81 -69
|
@@ -1,69 +1,81 @@
|
|
|
1
|
-
# Pro Pitcher Evaluation: {{player}}
|
|
2
|
-
|
|
3
|
-
**Season:** {{season}} | **Audience:** {{audience}} | **Generated:** {{date}}
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Header
|
|
8
|
-
|
|
9
|
-
| Field | Value |
|
|
10
|
-
|-------|-------|
|
|
11
|
-
| Player | {{player}} |
|
|
12
|
-
| Season | {{season}} |
|
|
13
|
-
| Sources | {{sources}} |
|
|
14
|
-
|
|
15
|
-
## Pitch Arsenal
|
|
16
|
-
|
|
17
|
-
{{#if data.pitcher-arsenal}}
|
|
18
|
-
| Pitch Type | Usage % | Avg Velo | Avg Spin | H Break | V Break | Whiff % | Put Away % | Pitches |
|
|
19
|
-
|------------|---------|----------|----------|---------|---------|---------|------------|---------|
|
|
20
|
-
{{#each data.pitcher-arsenal}}
|
|
21
|
-
| {{this.[Pitch Type]}} | {{this.[Usage %]}} | {{this.[Avg Velo]}} | {{this.[Avg Spin]}} | {{this.[H Break]}} | {{this.[V Break]}} | {{this.[Whiff %]}} | {{this.[Put Away %]}} | {{this.Pitches}} |
|
|
22
|
-
{{/each}}
|
|
23
|
-
{{else}}
|
|
24
|
-
*Arsenal data not available*
|
|
25
|
-
{{/if}}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
{{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
*
|
|
1
|
+
# Pro Pitcher Evaluation: {{player}}
|
|
2
|
+
|
|
3
|
+
**Season:** {{season}} | **Audience:** {{audience}} | **Generated:** {{date}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Header
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
|-------|-------|
|
|
11
|
+
| Player | {{player}} |
|
|
12
|
+
| Season | {{season}} |
|
|
13
|
+
| Sources | {{sources}} |
|
|
14
|
+
|
|
15
|
+
## Pitch Arsenal
|
|
16
|
+
|
|
17
|
+
{{#if data.pitcher-arsenal}}
|
|
18
|
+
| Pitch Type | Usage % | Avg Velo | Avg Spin | H Break | V Break | Whiff % | Put Away % | Pitches |
|
|
19
|
+
|------------|---------|----------|----------|---------|---------|---------|------------|---------|
|
|
20
|
+
{{#each data.pitcher-arsenal}}
|
|
21
|
+
| {{this.[Pitch Type]}} | {{this.[Usage %]}} | {{this.[Avg Velo]}} | {{this.[Avg Spin]}} | {{this.[H Break]}} | {{this.[V Break]}} | {{this.[Whiff %]}} | {{this.[Put Away %]}} | {{this.Pitches}} |
|
|
22
|
+
{{/each}}
|
|
23
|
+
{{else}}
|
|
24
|
+
*Arsenal data not available*
|
|
25
|
+
{{/if}}
|
|
26
|
+
|
|
27
|
+
{{#if graphs.movementChart}}
|
|
28
|
+
### Movement Plot
|
|
29
|
+
|
|
30
|
+
{{{svgOrEmpty graphs.movementChart}}}
|
|
31
|
+
{{/if}}
|
|
32
|
+
|
|
33
|
+
## Performance Profile
|
|
34
|
+
|
|
35
|
+
*Season statistics to be populated from FanGraphs data (ERA, FIP, xFIP, SIERA, K-BB%, WAR)*
|
|
36
|
+
|
|
37
|
+
## Splits Analysis
|
|
38
|
+
|
|
39
|
+
{{#if data.pitcher-handedness-splits}}
|
|
40
|
+
| vs | PA | AVG | SLG | K % | BB % | Avg EV | Whiff % |
|
|
41
|
+
|----|-----|-----|-----|-----|------|--------|---------|
|
|
42
|
+
{{#each data.pitcher-handedness-splits}}
|
|
43
|
+
| {{this.vs}} | {{this.PA}} | {{this.AVG}} | {{this.SLG}} | {{this.[K %]}} | {{this.[BB %]}} | {{this.[Avg EV]}} | {{this.[Whiff %]}} |
|
|
44
|
+
{{/each}}
|
|
45
|
+
{{else}}
|
|
46
|
+
*Splits data not available*
|
|
47
|
+
{{/if}}
|
|
48
|
+
|
|
49
|
+
## Trend Analysis
|
|
50
|
+
|
|
51
|
+
{{#if data.pitcher-velocity-trend}}
|
|
52
|
+
| Month | Avg Velo | Max Velo | Δ vs Prior | Pitches | Flag |
|
|
53
|
+
|-------|----------|----------|------------|---------|------|
|
|
54
|
+
{{#each data.pitcher-velocity-trend}}
|
|
55
|
+
| {{this.Month}} | {{this.[Avg Velo]}} | {{this.[Max Velo]}} | {{this.[Δ vs Prior]}} | {{this.Pitches}} | {{this.Flag}} |
|
|
56
|
+
{{/each}}
|
|
57
|
+
{{else}}
|
|
58
|
+
*Velocity trend data not available*
|
|
59
|
+
{{/if}}
|
|
60
|
+
|
|
61
|
+
{{#if graphs.rollingChart}}
|
|
62
|
+
### Rolling Trend Chart
|
|
63
|
+
|
|
64
|
+
{{{svgOrEmpty graphs.rollingChart}}}
|
|
65
|
+
{{/if}}
|
|
66
|
+
|
|
67
|
+
## Risk Assessment
|
|
68
|
+
|
|
69
|
+
*To be filled by evaluator: injury history, mechanical concerns, workload flags*
|
|
70
|
+
|
|
71
|
+
## Comparable Player
|
|
72
|
+
|
|
73
|
+
*To be filled by evaluator: statistical comp to current/recent MLB pitcher*
|
|
74
|
+
|
|
75
|
+
## Role Projection
|
|
76
|
+
|
|
77
|
+
*To be filled by evaluator: SP1-5 / Setup / Closer / Middle Relief + Acquire / Pass / Monitor recommendation*
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
*Generated by bbdata CLI · Data sources: {{sources}}*
|
package/package.json
CHANGED
|
@@ -1,63 +1,68 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "bbdata-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Baseball data CLI for querying, scouting reports, and analytics — built for humans and AI agents",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"bbdata": "dist/bin/bbdata.js"
|
|
8
|
-
},
|
|
9
|
-
"main": "./dist/src/index.js",
|
|
10
|
-
"types": "./dist/src/index.d.ts",
|
|
11
|
-
"exports": {
|
|
12
|
-
".": {
|
|
13
|
-
"import": "./dist/src/index.js",
|
|
14
|
-
"types": "./dist/src/index.d.ts"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"dist",
|
|
19
|
-
"src/templates/**/*.hbs",
|
|
20
|
-
"src/cache/schema.sql"
|
|
21
|
-
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"build": "tsup",
|
|
24
|
-
"dev": "tsx bin/bbdata.ts",
|
|
25
|
-
"start": "node dist/bin/bbdata.js",
|
|
26
|
-
"test": "vitest run",
|
|
27
|
-
"test:watch": "vitest",
|
|
28
|
-
"lint": "eslint src/ bin/ test/",
|
|
29
|
-
"typecheck": "tsc --noEmit"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "bbdata-cli",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Baseball data CLI for querying, scouting reports, and analytics — built for humans and AI agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"bbdata": "dist/bin/bbdata.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/src/index.js",
|
|
10
|
+
"types": "./dist/src/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/src/index.js",
|
|
14
|
+
"types": "./dist/src/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"src/templates/**/*.hbs",
|
|
20
|
+
"src/cache/schema.sql"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsup",
|
|
24
|
+
"dev": "tsx bin/bbdata.ts",
|
|
25
|
+
"start": "node dist/bin/bbdata.js",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"test:watch": "vitest",
|
|
28
|
+
"lint": "eslint src/ bin/ test/",
|
|
29
|
+
"typecheck": "tsc --noEmit",
|
|
30
|
+
"viz:fixtures": "tsx scripts/render-fixtures.ts",
|
|
31
|
+
"prepublishOnly": "npm run build && npm run typecheck && npm test"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"baseball",
|
|
35
|
+
"analytics",
|
|
36
|
+
"statcast",
|
|
37
|
+
"fangraphs",
|
|
38
|
+
"scouting",
|
|
39
|
+
"mlb",
|
|
40
|
+
"cli",
|
|
41
|
+
"ai"
|
|
42
|
+
],
|
|
43
|
+
"author": "AI Baseball Data Analyst",
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"chalk": "^5.4.1",
|
|
47
|
+
"cli-table3": "^0.6.5",
|
|
48
|
+
"commander": "^13.1.0",
|
|
49
|
+
"csv-parse": "^5.6.0",
|
|
50
|
+
"csv-stringify": "^6.5.2",
|
|
51
|
+
"handlebars": "^4.7.8",
|
|
52
|
+
"sql.js": "^1.12.0",
|
|
53
|
+
"vega": "^5.30.0",
|
|
54
|
+
"vega-lite": "^5.21.0",
|
|
55
|
+
"zod": "^3.24.2"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@resvg/resvg-js": "^2.6.2",
|
|
59
|
+
"@types/node": "^22.13.0",
|
|
60
|
+
"tsup": "^8.4.0",
|
|
61
|
+
"tsx": "^4.19.2",
|
|
62
|
+
"typescript": "^5.7.3",
|
|
63
|
+
"vitest": "^3.0.4"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=18.0.0"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1,60 +1,66 @@
|
|
|
1
|
-
# Advance Report: {{player}} (SP)
|
|
2
|
-
|
|
3
|
-
**Season:** {{season}} | **For:** {{audience}} | **Generated:** {{date}}
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Recent Form
|
|
8
|
-
|
|
9
|
-
*Last 5 starts — to be populated with game log data*
|
|
10
|
-
|
|
11
|
-
## Pitch Mix & Sequencing
|
|
12
|
-
|
|
13
|
-
{{#if data.pitcher-arsenal}}
|
|
14
|
-
### Arsenal Overview
|
|
15
|
-
|
|
16
|
-
| Pitch | Usage | Velo | Spin | Whiff % |
|
|
17
|
-
|-------|-------|------|------|---------|
|
|
18
|
-
{{#each data.pitcher-arsenal}}
|
|
19
|
-
| {{this.[Pitch Type]}} | {{this.[Usage %]}} | {{this.[Avg Velo]}} | {{this.[Avg Spin]}} | {{this.[Whiff %]}} |
|
|
20
|
-
{{/each}}
|
|
21
|
-
|
|
22
|
-
### By Count (to be populated)
|
|
23
|
-
- **Ahead in count:** Primary pitch selection
|
|
24
|
-
- **Behind in count:** Go-to pitch
|
|
25
|
-
- **Two-strike:** Put-away pitch
|
|
26
|
-
{{else}}
|
|
27
|
-
*Arsenal data not available*
|
|
28
|
-
{{/if}}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
{{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
###
|
|
55
|
-
- *To be filled
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
1
|
+
# Advance Report: {{player}} (SP)
|
|
2
|
+
|
|
3
|
+
**Season:** {{season}} | **For:** {{audience}} | **Generated:** {{date}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Recent Form
|
|
8
|
+
|
|
9
|
+
*Last 5 starts — to be populated with game log data*
|
|
10
|
+
|
|
11
|
+
## Pitch Mix & Sequencing
|
|
12
|
+
|
|
13
|
+
{{#if data.pitcher-arsenal}}
|
|
14
|
+
### Arsenal Overview
|
|
15
|
+
|
|
16
|
+
| Pitch | Usage | Velo | Spin | Whiff % |
|
|
17
|
+
|-------|-------|------|------|---------|
|
|
18
|
+
{{#each data.pitcher-arsenal}}
|
|
19
|
+
| {{this.[Pitch Type]}} | {{this.[Usage %]}} | {{this.[Avg Velo]}} | {{this.[Avg Spin]}} | {{this.[Whiff %]}} |
|
|
20
|
+
{{/each}}
|
|
21
|
+
|
|
22
|
+
### By Count (to be populated)
|
|
23
|
+
- **Ahead in count:** Primary pitch selection
|
|
24
|
+
- **Behind in count:** Go-to pitch
|
|
25
|
+
- **Two-strike:** Put-away pitch
|
|
26
|
+
{{else}}
|
|
27
|
+
*Arsenal data not available*
|
|
28
|
+
{{/if}}
|
|
29
|
+
|
|
30
|
+
{{#if graphs.movementChart}}
|
|
31
|
+
### Pitch Movement Profile
|
|
32
|
+
|
|
33
|
+
{{{svgOrEmpty graphs.movementChart}}}
|
|
34
|
+
{{/if}}
|
|
35
|
+
|
|
36
|
+
## Times Through the Order
|
|
37
|
+
|
|
38
|
+
*3rd time adjustment, velocity drop patterns — to be analyzed from pitch-level data*
|
|
39
|
+
|
|
40
|
+
## Platoon Vulnerabilities
|
|
41
|
+
|
|
42
|
+
{{#if data.pitcher-handedness-splits}}
|
|
43
|
+
| Split | PA | AVG | SLG | K % | BB % |
|
|
44
|
+
|-------|-----|-----|-----|-----|------|
|
|
45
|
+
{{#each data.pitcher-handedness-splits}}
|
|
46
|
+
| {{this.vs}} | {{this.PA}} | {{this.AVG}} | {{this.SLG}} | {{this.[K %]}} | {{this.[BB %]}} |
|
|
47
|
+
{{/each}}
|
|
48
|
+
{{else}}
|
|
49
|
+
*Splits data not available*
|
|
50
|
+
{{/if}}
|
|
51
|
+
|
|
52
|
+
## How to Attack
|
|
53
|
+
|
|
54
|
+
### Early in Game (1st time through)
|
|
55
|
+
- *To be filled: patient approach? aggressive?*
|
|
56
|
+
|
|
57
|
+
### Late in Game (3rd+ time through)
|
|
58
|
+
- *To be filled: exploit fatigue patterns?*
|
|
59
|
+
|
|
60
|
+
### Key Weaknesses
|
|
61
|
+
- *To be filled by evaluator*
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
*Generated by bbdata CLI · Data sources: {{sources}}*
|
|
66
|
+
*This is a 1-page advance report designed for in-game use.*
|
|
@@ -1,65 +1,77 @@
|
|
|
1
|
-
# Pro Hitter Evaluation: {{player}}
|
|
2
|
-
|
|
3
|
-
**Season:** {{season}} | **Audience:** {{audience}} | **Generated:** {{date}}
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Batted Ball Profile
|
|
8
|
-
|
|
9
|
-
{{#if data.hitter-batted-ball}}
|
|
10
|
-
| Metric | Value |
|
|
11
|
-
|--------|-------|
|
|
12
|
-
{{#each data.hitter-batted-ball}}
|
|
13
|
-
| {{this.Metric}} | {{this.Value}} |
|
|
14
|
-
{{/each}}
|
|
15
|
-
{{else}}
|
|
16
|
-
*Batted ball data not available*
|
|
17
|
-
{{/if}}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
{{
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
##
|
|
56
|
-
|
|
57
|
-
*To be
|
|
58
|
-
|
|
59
|
-
##
|
|
60
|
-
|
|
61
|
-
*To be
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
*
|
|
1
|
+
# Pro Hitter Evaluation: {{player}}
|
|
2
|
+
|
|
3
|
+
**Season:** {{season}} | **Audience:** {{audience}} | **Generated:** {{date}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Batted Ball Profile
|
|
8
|
+
|
|
9
|
+
{{#if data.hitter-batted-ball}}
|
|
10
|
+
| Metric | Value |
|
|
11
|
+
|--------|-------|
|
|
12
|
+
{{#each data.hitter-batted-ball}}
|
|
13
|
+
| {{this.Metric}} | {{this.Value}} |
|
|
14
|
+
{{/each}}
|
|
15
|
+
{{else}}
|
|
16
|
+
*Batted ball data not available*
|
|
17
|
+
{{/if}}
|
|
18
|
+
|
|
19
|
+
{{#if graphs.sprayChart}}
|
|
20
|
+
### Spray Chart
|
|
21
|
+
|
|
22
|
+
{{{svgOrEmpty graphs.sprayChart}}}
|
|
23
|
+
{{/if}}
|
|
24
|
+
|
|
25
|
+
## Approach & Discipline
|
|
26
|
+
|
|
27
|
+
{{#if data.hitter-vs-pitch-type}}
|
|
28
|
+
| Pitch Type | Seen | Swing % | Whiff % | Foul % | In Play | Avg EV | SLG |
|
|
29
|
+
|------------|------|---------|---------|--------|---------|--------|-----|
|
|
30
|
+
{{#each data.hitter-vs-pitch-type}}
|
|
31
|
+
| {{this.[Pitch Type]}} | {{this.Seen}} | {{this.[Swing %]}} | {{this.[Whiff %]}} | {{this.[Foul %]}} | {{this.[In Play]}} | {{this.[Avg EV]}} | {{this.SLG}} |
|
|
32
|
+
{{/each}}
|
|
33
|
+
{{else}}
|
|
34
|
+
*Pitch type breakdown not available*
|
|
35
|
+
{{/if}}
|
|
36
|
+
|
|
37
|
+
## Hot/Cold Zones
|
|
38
|
+
|
|
39
|
+
{{#if data.hitter-hot-cold-zones}}
|
|
40
|
+
| Zone | Pitches | Swings | Whiff % | AVG | SLG |
|
|
41
|
+
|------|---------|--------|---------|-----|-----|
|
|
42
|
+
{{#each data.hitter-hot-cold-zones}}
|
|
43
|
+
| {{this.Zone}} | {{this.Pitches}} | {{this.Swings}} | {{this.[Whiff %]}} | {{this.AVG}} | {{this.SLG}} |
|
|
44
|
+
{{/each}}
|
|
45
|
+
{{else}}
|
|
46
|
+
*Zone data not available*
|
|
47
|
+
{{/if}}
|
|
48
|
+
|
|
49
|
+
{{#if graphs.zoneChart}}
|
|
50
|
+
### Zone Heatmap
|
|
51
|
+
|
|
52
|
+
{{{svgOrEmpty graphs.zoneChart}}}
|
|
53
|
+
{{/if}}
|
|
54
|
+
|
|
55
|
+
## Splits Analysis
|
|
56
|
+
|
|
57
|
+
*To be populated: vs LHP/RHP, home/away*
|
|
58
|
+
|
|
59
|
+
## Trend Analysis
|
|
60
|
+
|
|
61
|
+
*To be populated: rolling average trends*
|
|
62
|
+
|
|
63
|
+
## Risk Assessment
|
|
64
|
+
|
|
65
|
+
*To be filled by evaluator: injury history, age curve, contract implications*
|
|
66
|
+
|
|
67
|
+
## Comparable Player
|
|
68
|
+
|
|
69
|
+
*To be filled by evaluator: statistical comp*
|
|
70
|
+
|
|
71
|
+
## Role Projection
|
|
72
|
+
|
|
73
|
+
*To be filled by evaluator: lineup position, expected production, Acquire / Pass / Monitor*
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
*Generated by bbdata CLI · Data sources: {{sources}}*
|