<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def metrics(self, opttype, strike, expiry):
 """ Basic metrics for a specific option. Parameters opttype : str ('call' or 'put') strike : numeric Strike price. expiry : date-like Expiration date. Can be a :class:`datetime.datetime` or a string that :mod:`pandas` can interpret as such, e.g. '2015-01-01'. Returns ------- out : :class:`pandas.DataFrame` """

        _optrow = _relevant_rows(self.data, (strike, expiry, opttype,),
                "No key for {} strike {} {}".format(expiry, strike, opttype))
        _index = ['Opt_Price', 'Time_Val', 'Last', 'Bid', 'Ask', 'Vol', 'Open_Int', 'Underlying_Price', 'Quote_Time']
        _out = pd.DataFrame(index=_index, columns=['Value'])
        _out.loc['Opt_Price', 'Value'] = _opt_price = _getprice(_optrow)
        for _name in _index[2:]:
            _out.loc[_name, 'Value'] = _optrow.loc[:, _name].values[0]
        _eq_price = _out.loc['Underlying_Price', 'Value']
        if opttype == 'put':
            _out.loc['Time_Val'] = _get_put_time_val(_opt_price, strike, _eq_price)
        else:
            _out.loc['Time_Val'] = _get_call_time_val(_opt_price, strike, _eq_price)
        return _out