Python遍历字典计算投资组合盈亏结果与预期不符问题求助
问题排查与解决方案
错误原因
你的代码核心问题是盈亏计算时的括号位置错误,运算顺序不符合投资组合盈亏的计算逻辑:
原代码中的计算式 pl = market[key] - (portfolio[key]["strike"]) * portfolio[key]["volume"] 会优先计算「成本价 × 持仓量」,再用单股市价减去这个总持仓成本,和实际需要的计算规则不符。
正确的单只股票盈亏计算规则应为:(单股市价 - 单股持仓成本价) × 持仓量,你需要把市价减成本价的部分用括号包裹,保证运算优先级正确。
修正后代码
portfolio = { "AAPL": { "volume": 10, "strike": 154.12 }, "GOOG": { "volume": 2, "strike": 812.56 }, "TSLA": { "volume": 12, "strike": 342.12 }, "FB": { "volume": 18, "strike": 209.0 } } market = { "AAPL": 198.84, "GOOG": 1217.93, "TSLA": 267.66, "FB": 179.06 } total_pl = 0 for key, value in portfolio.items(): # 调整括号位置,先算每股盈亏再乘以持仓量 pl = (market[key] - portfolio[key]["strike"]) * portfolio[key]["volume"] total_pl += pl print(total_pl)
输出验证
运行修正后代码的输出结果为 -174.5,和你的预期结果一致。
内容的提问来源于stack exchange,提问作者Maria_MAT
相关产品推荐
相关产品推荐

