Flask app to return close prices & average
Relays
Your current design:

fetches data from alphavantage once, on startup
offers it to anyone who hits any of your interfaces on port 5000 (which, by the way, is already used by a large number of services other than the default Flask development webserver)

This seems unusual. Perhaps it's just to try out a random use of Flask for learning purposes, which is fine, but:
If you really want to preserve this API as an effective relay, it should probably be authenticated. You can add that here, or in a frontend (nginx, etc). Also, just bind to 80 once you hit production. A frontend can do HTTPS termination effectively translating from 443 to 80.
If all you want is code to conveniently get alphavantage data, don't make your own HTTP API; just make a requests wrapper library.
Globals

To be passed in with ENV-Vars

should apply to api_key, as that's a secret that should not be hard-coded.
Also, it's an odd choice to hard-code symbol. With very little introduced complexity, you can make your code parametric on symbol (and perhaps also function).
Otherwise: session, output, data, etc. probably shouldn't be globals. Consider making an LRU cache for data, and taking advantage of Flask's before_first_request, and moving the great majority of your global code into functions.
For session in particular, there's currently no advantage to having that - you might as well just requests.get since you only do it once.
Request formation
Don't pre-format key-value query parameter pairs. Instead,
session.get(
    'https://www.alphavantage.co/query',
    params={
        'apikey': API_KEY,
        'function': 'TIME_SERIES_DAILY_ADJUSTED',
        'symbol': 'MSFT',
    },
)

Response parsing
json.loads(output.text)

is unnecessary. Just use output.json. Also, between get() and .json, call output.raise_for_status. This will increase the quality of error information when something goes wrong.
Sum over an iterable
sum(list(output.values()))

should not use list. sum can operate on any iterable.