Home » Mathemtical Functions » Understanding matrix.det() Function in Pine Script

Understanding matrix.det() Function in Pine Script

Photo of author
Published on

In this tutorial, we’ll explore the matrix.det() function in Pine Script, an essential tool for anyone working with matrices in their trading algorithms. This function calculates the determinant of a square matrix, which can be pivotal in various mathematical and financial computations, including solving systems of linear equations, analyzing eigenvalues, and more. Pine Script provides two overloads for this function, making it versatile for handling both integer and floating-point matrices.

Syntax and Overloads

Pine Script’s matrix.det() function is available in two forms, accommodating matrices of different data types:

  1. Floating-Point Matrices:
    • matrix.det(id) → series float
  2. Integer Matrices:
    • matrix.det(id) → series int

Arguments:

  • id (matrix<int/float>): This is the matrix object whose determinant we wish to calculate. The matrix must be square (i.e., having the same number of rows and columns).

Example

//@version=5
indicator("Matrix Determinant Example")

// Create a 2x2 matrix.
var mat = matrix.new<float>(2, 2, na)
// Fill the matrix with values.
matrix.set(mat, 0, 0,  3)
matrix.set(mat, 0, 1,  7)
matrix.set(mat, 1, 0,  1)
matrix.set(mat, 1, 1, -4)

// Get the determinant of the matrix.
var detValue = matrix.det(mat)

plot(detValue, 'Matrix Determinant')
Example

Detailed Walkthrough

  1. Indicator Declaration:
    • //@version=5: Specifies that the script uses version 5 of Pine Script, ensuring compatibility with the latest features and syntax.
    • indicator("Matrix Determinant Example"): Declares a new indicator with the name “Matrix Determinant Example”. This is what users will see as the title on the chart.
  2. Matrix Creation:
    • var mat = matrix.new<float>(2, 2, na): Initializes a new variable mat as a 2×2 matrix with all elements initially set to na (not available). This matrix is intended to hold float (floating-point numbers), suitable for precise calculations.
  3. Filling the Matrix with Values:
    • matrix.set(mat, 0, 0, 3): Sets the element at row 0, column 0 of the matrix mat to 3.matrix.set(mat, 0, 1, 7): Sets the element at row 0, column 1 to 7.matrix.set(mat, 1, 0, 1): Sets the element at row 1, column 0 to 1.matrix.set(mat, 1, 1, -4): Sets the element at row 1, column 1 to -4. These steps populate the matrix with specific values, forming a 2×2 matrix
    .
  4. Determinant Calculation:
    • var detValue = matrix.det(mat): Calculates the determinant of the matrix mat using the matrix.det() function. The result is stored in the variable detValue. For the given matrix, the determinant is calculated as 3×(−4)−(7×1)=−12−7=−193×(−4)−(7×1)=−12−7=−19.
  5. Plotting the Determinant:
    • plot(detValue, 'Matrix Determinant'): Plots the calculated determinant value on the chart with the label “Matrix Determinant”. This visual representation allows users to observe how the determinant value might change over time if the matrix values were to be updated dynamically within the script.

Returns

The matrix.det() function returns the determinant value of the provided matrix. The determinant can either be a floating-point number or an integer, depending on the matrix’s data type.

Key Features and Takeaways

  • Function Versatility: The matrix.det() function supports both integer and floating-point matrices, catering to a wide range of mathematical and financial calculations.
  • Syntax and Application: Understanding how to properly create and manipulate matrices in Pine Script is crucial for leveraging the matrix.det() function effectively.
  • Practical Usage: The determinant of a matrix is a foundational concept in linear algebra with applications in trading strategy development, particularly in algorithms that involve complex mathematical models.

Leave a Comment