This paper develops a two-step semiparametric methodology for portfolio weight selection for characteristics-based factor-tilt and factor-timing investment strategies. We build upon the expected utility maximization framework of Brandt (1999) and Aït-sahalia and Brandt (2001). We assume that assets' returns obey a characteristics-based factor model with time-varying factor risk premia as in Li and Linton (2020). We prove under our return-generating assumptions that in a market with a large number of assets, an approximately optimal portfolio can be established using a two-step procedure. The first step finds optimal factor-mimicking subportfolios using a quadratic objective function over linear combinations of characteristics-based factor loadings. The second step dynamically combines these factor-mimicking sub-portfolios based on a time-varying signal, using the investor's expected utility as the objective function. We develop and implement a two-stage semiparametric estimator. We apply it to CRSP (Center for Research in Security Prices) and FRED (Federal Reserve Economic Data) data and find excellent in-sample and out-sample performance that are consistent with investors' risk aversion levels.