code: def treynor_ratio(
      exp_return: FLOAT,
      beta: Optional[FLOAT],
      risk_free_rate: FLOAT = 0.005,
  ) -> Optional[FLOAT]:
      """Computes the Treynor Ratio.
  
      :param exp_return: Expected Return of a portfolio
      :type exp_return: :py:data:`~.finquant.data_types.FLOAT`
  
      :param beta: Beta parameter of a portfolio
      :type beta: :py:data:`~.finquant.data_types.FLOAT`
  
      :param risk_free_rate: Risk free rate
      :type risk_free_rate: :py:data:`~.finquant.data_types.FLOAT`, default: 0.005
  
      :rtype: :py:data:`~.finquant.data_types.FLOAT`
      :return: Treynor Ratio as a floating point number:
          ``(exp_return - risk_free_rate) / beta``
      """
      # Type validations:
      type_validation(
          expected_return=exp_return,
          beta_parameter=beta,
          risk_free_rate=risk_free_rate,
      )
      if beta is None:
          return None
      else:
          res_treynor_ratio: FLOAT = (
              exp_return - risk_free_rate
          ) / beta
          return res_treynor_ratio
  
file_path: FinQuant/finquant/quants.py
imports: from typing import Optional, Tuple
  import numpy
  import pandas
  from scipy.stats import norm
  from finquant.data_types import ARRAY_OR_DATAFRAME, ARRAY_OR_SERIES, FLOAT, INT, NUMERIC
  from finquant.returns import weighted_mean_daily_returns
  from finquant.type_utilities import type_validation
label_desc: Use image node_id 5 for calling a global function with example usage: treynor_ratio(exp_return, beta, risk_free_rate) and returns: None, res_treynor_ratio