Repository: openbb-finance/openbbterminal
Issue: [Bug] Portfolio optimization Ticker.info bug

**Describe the bug**

```
2023 Feb 05, 13:55 (🦋) /portfolio/po/ $ blacklitterman

Optimization can take time. Please be patient...

Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
Market cap removed from info (key='marketCap'). Use Ticker.fast_info instead
No marketCap was found on list of tickers provided 

Error: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 0 is different from 14)

Error: not enough values to unpack (expected 3, got 0)

Error: not enough values to unpack (expected 2, got 0)
```

**To Reproduce**
Steps(from the start) and commands to reproduce the behavior

**Screenshots**
If applicable, add screenshots to help explain your problem.
If you are running the terminal using the conda version please
rerun the terminal with `python terminal.py --debug`, and then
recreate your issue. Then include a screenshot of the entire 
error printout.

**Desktop (please complete the following information):**

- OS: [e.g. Mac Sierra]
- Python version [e.g. 3.6.8]

**Additional context**
Add any other information that you think could be useful for us.


Changed files:
openbb_terminal/portfolio/portfolio_optimization/yahoo_finance_model.py, openbb_terminal/portfolio/portfolio_optimization/optimizer_model.py

diff --git a/openbb_terminal/portfolio/portfolio_optimization/optimizer_model.py b/openbb_terminal/portfolio/portfolio_optimization/optimizer_model.py
index 74de6af47b..afdc5ec13b 100644
--- a/openbb_terminal/portfolio/portfolio_optimization/optimizer_model.py
+++ b/openbb_terminal/portfolio/portfolio_optimization/optimizer_model.py
@@ -302,14 +302,12 @@ def get_property_weights(
     prop = {}
     prop_sum = 0
     for stock in symbols:
-        stock_prop = yf.Ticker(stock).info[s_property]
-        if stock_prop is None:
-            stock_prop = 0
+        stock_prop = get_prop(symbol=stock, prop=s_property)
         prop[stock] = stock_prop
         prop_sum += stock_prop
 
     if prop_sum == 0:
-        console.print(f"No {s_property} was found on list of tickers provided", "\\n")
+        console.print(f"No '{s_property}' was found on list of tickers provided", "\\n")
         return None, None
 
     weights = {k: value * v / prop_sum for k, v in prop.items()}
@@ -317,6 +315,48 @@ def get_property_weights(
     return weights, stock_returns
 
 
+@log_start_end(log=logger)
+def get_prop(symbol, prop) -> float:
+    """Get property from yfinance
+
+    Parameters
+    ----------
+    symbol : str
+        Stock ticker
+    prop : str
+        Property to get
+
+    Returns
+    -------
+    dict
+        Ticker info
+    """
+    prop = yahoo_finance_model.fast_info_map.get(prop, prop)
+
+    try:
+        info = yf.Ticker(symbol).info
+    except Exception as _:  # noqa
+        info = None
+
+    try:
+        fast_info = yf.Ticker(symbol).fast_info
+    except Exception as _:  # noqa
+        fast_info = None
+
+    info_dict = {}
+    if info:
+        info_dict.update(dict(info))
+    if fast_info:
+        info_dict.update(dict(fast_info))
+
+    if info_dict:
+        value = info_dict.get(prop, 0.0)
+        if not value:
+            return 0.0
+        return value
+    return 0.0
+
+
 @log_start_end(log=logger)
 def get_mean_risk_portfolio(
     symbols: List[str],
@@ -1365,6 +1405,9 @@ def get_black_litterman_portfolio(
             value=value,
         )
 
+    if benchmark is None:
+        return None, stock_returns
+
     factor = time_factor[freq.upper()]
     risk_free_rate = risk_free_rate / factor
 
diff --git a/openbb_terminal/portfolio/portfolio_optimization/yahoo_finance_model.py b/openbb_terminal/portfolio/portfolio_optimization/yahoo_finance_model.py
index e54fe7133f..b8eefb379e 100644
--- a/openbb_terminal/portfolio/portfolio_optimization/yahoo_finance_model.py
+++ b/openbb_terminal/portfolio/portfolio_optimization/yahoo_finance_model.py
@@ -19,9 +19,29 @@ logger = logging.getLogger(__name__)
 
 # pylint: disable=R0912, E1101
 
+fast_info_map = {
+    "previousClose": "previous_close",
+    "twoHundredDayAverage": "two_hundred_day_average",
+    "regularMarketDayHigh": "day_high",
+    "averageDailyVolume10Day": "ten_day_average_volume",
+    "regularMarketPreviousClose": "regular_market_previous_close",
+    "fiftyDayAverage": "fifty_day_average",
+    "open": "open",
+    "averageVolume10days": "ten_day_average_volume",
+    "regularMarketDayLow": "day_low",
+    "currency": "currency",
+    "marketCap": "market_cap",
+    "averageVolume": "three_month_average_volume",
+    "dayLow": "day_low",
+    "volume": "last_volume",
+    "fiftyTwoWeekHigh": "year_high",
+    "fiftyTwoWeekLow": "year_low",
+    "dayHigh": "day_high",
+    "regularMarketPrice": "last_price",
+}
+
 yf_info_choices = [
     "previousClose",
-    "regularMarketOpen",
     "twoHundredDayAverage",
     "trailingAnnualDividendYield",
     "payoutRatio",
@@ -30,7 +50,6 @@ yf_info_choices = [
     "navPrice",
     "averageDailyVolume10Day",
     "totalAssets",
-    "regularMarketPreviousClose",
     "fiftyDayAverage",
     "trailingAnnualDividendRate",
     "open",
@@ -47,11 +66,9 @@ yf_info_choices = [
     "priceHint",
     "currency",
     "trailingPE",
-    "regularMarketVolume",
     "lastMarket",
     "maxSupply",
     "openInterest",
-    "marketCap",
     "volumeAllCurrencies",
     "strikePrice",
     "averageVolume",