In your particular case I would just organize the different new elemenst in a dict:
infos = {'price':29,
'RSI': 1.1,
'return':1.1}
And then subset that dict in make_subplots()
like this:
fig = make_subplots(rows=3, cols=1, start_cell="top-left",
subplot_titles=("Share Price is: "+ str(infos['price']),
"RSI is: " + str(infos['RSI']),
"Portfolio Return is: " + str(infos['return'])))
Why the dict? I often find myself in situations where I'd like to do things with plot elements after the figure is defined. And this way your new elements will be readily available for other purposes as well.
Plot:

Complete code:
import plotly.graph_objects as go
from plotly.subplots import make_subplots
infos = {'price':29,
'RSI': 1.1,
'return':1.1}
fig = make_subplots(rows=3, cols=1, start_cell="top-left",
subplot_titles=("Share Price is: "+ str(infos['price']),
"RSI is: " + str(infos['RSI']),
"Portfolio Return is: " + str(infos['return'])))
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]),
row=1, col=1)
fig.add_trace(go.Scatter(x=[20, 30, 40], y=[50, 60, 70]),
row=2, col=1)
fig.add_trace(go.Scatter(x=[300, 400, 500], y=[600, 700, 800]),
row=3, col=1)
fig.show()
f2 = fig.full_figure_for_development(warn=False)