# Feature Explanations

## Core Climb Attributes

**angle**
Board angle in degrees. Higher angles correspond to steeper (more overhanging) climbs, which generally increase difficulty.

**angle_squared**
Square of the board angle. Captures nonlinear effects of steepness (difficulty often increases faster at higher angles).

**display_difficulty**
Target variable: the climb’s difficulty rating provided by the dataset.

**angle_x_holds**
Interaction between angle and number of holds. Captures how steepness and hold count jointly affect difficulty (e.g., many holds on steep terrain vs few holds on slab).

---

## Hold Counts / Composition

**total_holds**
Total number of holds used in the climb.

**hand_holds**
Number of holds intended for hands.

**foot_holds**
Number of holds intended for feet.

**start_holds**
Number of starting holds.

**finish_holds**
Number of finishing holds.

**middle_holds**
Number of intermediate (non-start, non-finish) holds.

**is_nomatch**
Binary indicator for whether matching hands on holds is disallowed. No-match climbs tend to be more difficult due to restricted movement options.

---

## Spatial Position (Raw Coordinates)

**mean_y**
Average vertical position of all holds. Higher values indicate climbs concentrated toward the top of the board.

**std_x**
Standard deviation of horizontal hold positions. Measures left-right spread.

**std_y**
Standard deviation of vertical hold positions. Measures vertical dispersion.

**range_x**
Horizontal range (max − min x). Indicates how wide the climb is.

**range_y**
Vertical range (max − min y). Indicates how tall the climb is.

**min_y**
Lowest hold position.

**max_y**
Highest hold position.

**height_gained**
Total vertical distance covered by the climb.

**height_gained_start_finish**
Vertical distance between average start and finish holds.

---

## Density / Coverage

**bbox_area**
Area of the bounding box containing all holds.

**hold_density**
Number of holds per unit area. Higher density often means more options and potentially easier climbing.

**holds_per_vertical_foot**
Number of holds per unit vertical distance. Captures how “ladder-like” a climb is.

---

## Symmetry / Balance

**left_ratio**
Proportion of holds on the left side of the board.

**symmetry_score**
How balanced the climb is left-to-right (1 = perfectly balanced, 0 = fully one-sided).

**upper_ratio**
Fraction of holds located above the median vertical position. Indicates whether the climb is top-heavy.

---

## Hand Geometry (Reach / Movement)

**mean_hand_reach**
Average distance between pairs of hand holds. Proxy for typical move size.

**max_hand_reach**
Maximum distance between hand holds. Captures hardest reach or span.

**std_hand_reach**
Variation in hand distances. Measures consistency vs variability of moves.

**hand_spread_x**
Horizontal spread of hand holds.

**hand_spread_y**
Vertical spread of hand holds.

---

## Hand–Foot Interaction

**min_hand_to_foot**
Minimum distance between any hand and foot hold. Indicates tight body positioning.

**mean_hand_to_foot**
Average distance between hands and feet. Proxy for body extension requirements.

**std_hand_to_foot**
Variation in hand-foot distances. Measures consistency of body positioning.

---

## Global Geometry

**convex_hull_area**
Area of the convex hull enclosing all holds. Measures overall spatial footprint.

**hull_area_to_bbox_ratio**
Ratio of convex hull area to bounding box area. Indicates how “filled” or “sparse” the hold distribution is.

**mean_pairwise_distance**
Average distance between all pairs of holds. Global spacing measure.

**std_pairwise_distance**
Variation in distances between holds. Captures clustering vs spread.

---

## Path / Flow

**path_length_vertical**
Approximate total path length when moving from bottom to top (based on sorted vertical positions).

**path_efficiency**
Ratio of vertical gain to path length. Higher values indicate more direct movement; lower values indicate more traversing or inefficiency.

---

## Normalized / Relative Position

**mean_y_normalized**
Average vertical position scaled to board height (0–1).

**start_height_normalized**
Start hold height relative to board height.

**finish_height_normalized**
Finish hold height relative to board height.

**mean_y_relative_to_start**
Average hold height relative to starting position.

**spread_x_normalized**
Horizontal spread normalized by board width.

**spread_y_normalized**
Vertical spread normalized by board height.

---

## Distribution Features

**y_q75**
75th percentile of hold heights. Indicates where upper holds are concentrated.

**y_iqr**
Interquartile range (75th − 25th percentile) of hold heights. Measures vertical spread excluding extremes.

---

## Engineered Feature

**complexity_score**
Composite feature combining:

* hand reach (movement difficulty),
* number of holds (sequence length),
* hold density (spacing).

Designed to capture overall climb complexity in a single metric.

