class_docstr: Holds data for an FX vol surface and also interpolates vol surface,
  converts strikes to implied vols etc.
class_docstr_tok: ["Holds","data","for","an","FX","vol","surface","and","also","interpolates","vol","surface",",","converts","strikes","to","implied","vols","etc","."]
docstr: Builds the implied volatility surface for a particular value date and calculates the benchmark strikes etc.
  
  Before we do any sort of interpolation later, we need to build the implied_vol vol surface.
  
  Parameters
  ----------
  value_date : str
      Value date (need to have market data for this date)
  
  asset : str
      Asset name
  
  depo_tenor : str
      Depo tenor to use
  
      default - "1M"
  
  field : str
      Market data field to use
  
      default - "close"
docstr_tok: ["Builds","the","implied","volatility","surface","for","a","particular","value","date","and","calculates","the","benchmark","strikes","etc",".","Before","we","do","any","sort","of","interpolation","later",",","we","need","to","build","the","implied_vol","vol","surface",".","Parameters","--","--","--","--","--","value_date",":","str","Value","date","(","need","to","have","market","data","for","this","date",")","asset",":","str","Asset","name","depo_tenor",":","str","Depo","tenor","to","use","default","-","``","1M","''","field",":","str","Market","data","field","to","use","default","-","``","close","''"]
code: def build_vol_surface(self, value_date):
      """Builds the implied volatility surface for a particular value date and calculates the benchmark strikes etc.
  
      Before we do any sort of interpolation later, we need to build the implied_vol vol surface.
  
      Parameters
      ----------
      value_date : str
          Value date (need to have market data for this date)
  
      asset : str
          Asset name
  
      depo_tenor : str
          Depo tenor to use
  
          default - "1M"
  
      field : str
          Market data field to use
  
          default - "close"
      """
  
      self._value_date = self._market_util.parse_date(value_date)
  
      value_fin_date = self._findate(self._value_date)
  
      date_index = self._market_df.index == value_date
  
      # TODO: add whole rates curve
      dom_discount_curve = DiscountCurveFlat(
          value_fin_date, self._domCCRate[date_index]
      )
      for_discount_curve = DiscountCurveFlat(
          value_fin_date, self._forCCRate[date_index]
      )
  
      self._dom_discount_curve = dom_discount_curve
      self._for_discount_curve = for_discount_curve
  
      self._spot = float(self._spot_history[date_index][0])
  
      # New implementation in FinancePy also uses 10d for interpolation
      self._fin_fx_vol_surface = FinFXVolSurface(
          value_fin_date,
          self._spot,
          self._asset,
          self._asset[0:3],
          dom_discount_curve,
          for_discount_curve,
          self._tenors.copy(),
          self._atm_vols[date_index][0],
          self._market_strangle25DeltaVols[date_index][0],
          self._risk_reversal25DeltaVols[date_index][0],
          self._market_strangle10DeltaVols[date_index][0],
          self._risk_reversal10DeltaVols[date_index][0],
          self._alpha,
          atmMethod=self._atm_method,
          deltaMethod=self._delta_method,
          volatility_function_type=self._vol_function_type,
          finSolverType=self._solver,
          tol=self._tol,
      )
  
imports: import pandas
  import numpy
  from financepy.market.curves.discount_curve_flat import DiscountCurveFlat
  from financepy.utils.date import Date
  from financepy.market.volatility.fx_vol_surface_plus import FXVolSurfacePlus
  from financepy.market.volatility.fx_vol_surface_plus import FinFXATMMethod
  from financepy.market.volatility.fx_vol_surface_plus import FinFXDeltaMethod
  from financepy.market.volatility.fx_vol_surface_plus import vol_function
  from financepy.market.volatility.fx_vol_surface_plus import VolFunctionTypes
  from financepy.utils.global_types import FinSolverTypes
  from findatapy.util.dataconstants import DataConstants
  from finmarketpy.curve.volatility.abstractvolsurface import AbstractVolSurface
  from finmarketpy.util.marketconstants import MarketConstants
  from finmarketpy.util.marketutil import MarketUtil
label_desc: Use image node_id 2 for calling the FXVolSurface obj's underlying member method code with example usage: obj.build_vol_surface(value_date) without return types