class_docstr: An object to perform a Monte Carlo run/simulation for finding
  optimised financial portfolios.
  
  Inherits from `MonteCarlo`.
class_docstr_tok: ["An","object","to","perform","a","Monte","Carlo","run\/simulation","for","finding","optimised","financial","portfolios",".","Inherits","from","`","MonteCarlo","`","."]
docstr: Prints out the properties of the Monte Carlo optimisation.
docstr_tok: ["Prints","out","the","properties","of","the","Monte","Carlo","optimisation","."]
code: def properties(self) -> None:
      """Prints out the properties of the Monte Carlo optimisation."""
      if self.opt_weights is None or self.opt_results is None:
          print(
              "Error: Optimal weights and/or results are not computed. Please perform a Monte Carlo run first."
          )
      else:
          # print out results
          opt_vals = ["Min Volatility", "Max Sharpe Ratio"]
          string = ""
          for val in opt_vals:
              string += "-" * 70
              string += f"\nOptimised portfolio for {val.replace('Min', 'Minimum').replace('Max', 'Maximum')}"
              string += f"\n\nTime period: {self.freq} days"
              string += f"\nExpected return: {self.opt_results.loc[val]['Expected Return']:0.3f}"
              string += f"\nVolatility: {self.opt_results.loc[val]['Volatility']:0.3f}"
              string += f"\nSharpe Ratio: {self.opt_results.loc[val]['Sharpe Ratio']:0.3f}"
              string += "\n\nOptimal weights:"
              string += "\n" + str(
                  self.opt_weights.loc[val]
                  .to_frame()
                  .transpose()
                  .rename(index={val: "Allocation"})
              )
              string += "\n"
          string += "-" * 70
          print(string)
  
file_path: FinQuant/finquant/monte_carlo.py
imports: from typing import Any, Callable, Dict, Optional, Tuple
  import matplotlib.pylab
  import numpy
  import pandas
  from finquant.data_types import FLOAT, INT
  from finquant.quants import annualised_portfolio_quantities
  from finquant.type_utilities import type_validation
label_desc: Use image node_id 6 for calling the MonteCarloOpt obj's underlying member method code with example usage: obj.properties() without return types