Enhanced Skill Matrix with Templates and Interaction Types

You can also view the article in Markdown

Version 2.0 - Production ready skill matrix with comprehensive UI interaction mapping for the quiz platform

Core Architecture

4×3 Matrix Structure

Interaction Type Matrix

Each cell maps to primary and secondary interaction types for optimal user experience

PERCEPTION Domain

CellPrimary InteractionSecondaryImplementation Notes
PERCEPTION–ApplyChart Drawing SelectionMulti-SelectVisual identification of features/patterns
PERCEPTION–AnalyzeMulti-SelectChart SelectionSynthesis across views with multi-view guidance
PERCEPTION–EvaluateSingle ChoiceMulti-SelectEvaluate quality vs noise with justification

STRATEGY Domain

CellPrimary InteractionSecondaryImplementation Notes
STRATEGY–ApplySingle ChoiceSequencingMatch setup to playbook
STRATEGY–AnalyzeSequencingSingle ChoiceCompare playbooks/contexts with ordering
STRATEGY–EvaluateSingle ChoiceMulti-SelectChoose best play with trade-offs

RISK Domain

CellPrimary InteractionSecondaryImplementation Notes
RISK–ApplySingle ChoiceMulti-SelectPre-computed sized options (no numeric input)
RISK–AnalyzeMulti-SelectSingle ChoiceAssess multiple risk factors and interactions
RISK–EvaluateSingle ChoiceMulti-SelectDecision thresholding with rationale

EXECUTION Domain

CellPrimary InteractionSecondaryImplementation Notes
EXECUTION–ApplyChart Drawing CompletionSingle ChoicePoint-click completion of order parameters
EXECUTION–AnalyzeSingle ChoiceMulti-SelectCompare execution options with chart context
EXECUTION–EvaluateSingle ChoiceSequencingOptimize for slippage vs fill probability

Available Interaction Types

Parameter Pools & Context System

Asset Pools (Rotating)

Diversified Asset Selection

ASSET_POOLS = {
  "equities": ["AAPL", "NVDA", "MSFT", "AMZN", "GOOGL", 
               "META", "TSLA", "JPM", "BAC", "XOM"],
  "indices": ["SPY", "QQQ", "IWM", "DIA", "VTI", 
              "EEM", "XLF", "XLE"],
  "forex": ["EURUSD", "GBPUSD", "USDJPY", "AUDUSD"],
  "crypto": ["BTCUSD", "ETHUSD", "SOLUSD", "BNBUSD"],
  "commodities": ["GC", "CL", "NG", "SI", "ZC", "ZS"]
}

Market Context Parameters

Template Examples

PERCEPTION–Apply: Chart Drawing Selection

A1 Template Structure

function generate_A1_chart_selection(complexity="basic") {
  const patterns = {
    "basic": {
      "pattern": "support_touch",
      "instruction": "Click all points where price touches support",
      "chart_elements": ["support_line", "price_candles"],
      "correct_zones": [(x1, y1), (x2, y2)]
    },
    "advanced": {
      "pattern": "divergence_signals", 
      "instruction": "Mark areas showing price/indicator divergence",
      "chart_elements": ["price_chart", "RSI_panel", "trend_lines"],
      "correct_zones": [(x1, y1, x2, y2), (x3, y3, x4, y4)]
    }
  };
  
  return {
    "interaction_type": "chart_drawing_selection",
    "prompt": `On the chart below, ${params.instruction}`,
    "chart_config": {
      "interactive": true,
      "selection_mode": "multiple_points"
    },
    "correct_selections": params.correct_zones,
    "tolerance_pixels": 10
  };
}

STRATEGY–Analyze: Sequencing

S2 Template Structure

function generate_S2_sequencing() {
  const scenario = {
    "context": "Trading AAPL before earnings with high IV",
    "considerations": [
      "Assess implied vs historical volatility spread",
      "Check expected move from options pricing", 
      "Review past earnings reactions",
      "Determine position sizing based on risk",
      "Select strategy (straddle, condor, directional)",
      "Set exit plan for post-announcement"
    ],
    "correct_order": [1, 2, 3, 4, 5, 6]
  };
  
  return {
    "interaction_type": "sequencing",
    "prompt": `Context: ${scenario.context}. Order these steps:`,
    "items": shuffled_items,
    "correct_sequence": ordered_items,
    "scoring_method": "kendall_tau"
  };
}

RISK–Apply: Computed Position Sizing

R1 Template with Pre-computed Options

function generate_R1_computed_choice() {
  // Calculate correct position size
  const risk_amount = account * (risk_pct / 100);
  const stop_distance = Math.abs(entry - stop);
  const correct_shares = Math.floor(risk_amount / stop_distance);
  
  // Generate plausible distractors
  const distractors = [
    Math.floor(correct_shares * 0.5),  // Too conservative
    Math.floor(correct_shares * 2),    // Too aggressive
    Math.floor(correct_shares * 1.3)   // Slightly over
  ];
  
  return {
    "interaction_type": "single_choice",
    "prompt": `Account: $${account} | Risk: ${risk_pct}%
              Entry: $${entry} | Stop: $${stop}
              Select correct position size:`,
    "options": [`${shares} shares` for shares in options],
    "correct_answer": `${correct_shares} shares`,
    "show_calculation": true
  };
}

Gap Mitigation Strategies

Numeric Input Limitation

Since numeric input isn't available, we implement these solutions for RISK domain:

1

Pre-computed Options

Present calculated position sizes as multiple choice answers

2

Range Selection

Offer ranges like "100-150 shares" or "151-200 shares"

3

Percentage Options

Express as account percentages: "2% position", "5% position"

4

Visual Sliders

Future enhancement for continuous value selection

Multi-Chart Analysis

For PERCEPTION-Analyze requiring multiple chart comparisons:

Validation System

Interaction Validator

Validation Requirements

VALID_INTERACTIONS = {
  "single_choice": {
    "required_fields": ["prompt", "options", "correct_answer"],
    "options_range": [3, 5],
    "supports_justification": true
  },
  "multi_select": {
    "required_fields": ["prompt", "options", "correct_answers"], 
    "options_range": [5, 8],
    "min_correct": 2,
    "supports_partial_credit": true
  },
  "chart_drawing_selection": {
    "required_fields": ["prompt", "chart_config", "correct_selections"],
    "requires_visual": true,
    "supports_tolerance": true
  }
}

Cell-Interaction Matching

The validator ensures interaction types match expected patterns:

  • A_1: chart_drawing_selection, multi_select
  • A_2: multi_select, chart_drawing_selection
  • A_3: single_choice, multi_select
  • S_1: single_choice, sequencing
  • S_2: sequencing, single_choice
  • And so on...

Complexity Measurement

Objective Complexity Metrics

Complexity Scoring

Objective Complexity Formula

function calculate_objective_complexity(question_data) {
  const metrics = {
    numerical_values: count_numbers(question_data.prompt),
    calculation_steps: count_operations(question_data.calculation),
    conditional_branches: count_conditionals(question_data.logic),
    interaction_complexity: score_interaction(question_data.interaction_type)
  };
  
  // Score each metric (total 100 points)
  let score = 0;
  score += Math.min(16.67, metrics.numerical_values * 3.33);
  score += Math.min(16.67, metrics.calculation_steps * 5.56);
  score += Math.min(16.67, metrics.conditional_branches * 8.33);
  score += Math.min(16.67, metrics.interaction_complexity * 5.56);
  
  const level = score <= 33 ? "basic" : 
               score <= 66 ? "intermediate" : "advanced";
  
  return {score, level, metrics};
}

Coverage Tracking

Usage Distribution

The CoverageTracker maintains spacing between similar combinations:

  • Minimum 10 questions between same asset+timeframe+context+interaction
  • Balances primary vs secondary interaction types per cell
  • Recommends underused interaction types for variety

Implementation Example

Question Generation with Coverage

function generate_question_with_interaction(cell_id, complexity="intermediate") {
  // Get recommended interaction type for balance
  const interaction_type = coverage_tracker.recommend_next_interaction(cell_id);
  
  // Generate using appropriate template
  const generator = generator_map[`${cell_id}_${interaction_type}`];
  const question_data = generator(complexity);
  
  // Validate structure and cell-interaction match
  const [is_valid, message] = validator.validate_question(question_data);
  
  // Calculate objective complexity
  const {score, level, metrics} = calculate_objective_complexity(question_data);
  
  // Mark coverage for spacing
  coverage_tracker.mark_used(cell_id, asset, timeframe, context, interaction_type);
  
  return {
    ...question_data,
    complexity_score: score,
    complexity_level: level,
    complexity_metrics: metrics
  };
}

This system ensures balanced question generation across all 12 cells with varied interaction types, objective complexity measurement, and proper coverage tracking for production use.

    Enhanced Skill Matrix with Templates and Interaction Types - Wawe Docs