Your question is Debug and Fix Code Review. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
JPMorganChase's fraud-detection team builds rolling per-account features before scoring each transaction. A teammate opened a pull request with the function below, and reviewers are asked to find the bug before it reaches the model training pipeline.
def compute_features(transactions, account_id, _stats_cache={}):
if account_id not in _stats_cache:
_stats_cache[account_id] = []
account_txns = [t for t in transactions if t["account_id"] == account_id]
features = []
for i in range(len(account_txns)):
window = account_txns[max(0, i - 5):i + 1]
amounts = [t["amount"] for t in window]
avg_amount = sum(amounts) / len(amounts)
txn = account_txns[i]
is_outlier = txn["amount"] > avg_amount * 3
features.append({
"transaction_id": txn["id"],
"avg_recent_amount": avg_amount,
"is_outlier": is_outlier,
})
_stats_cache[account_id].append(avg_amount)
return features
In a code review task, find the bug in the provided code and fix it. Explain what is actually wrong, why it matters for a fraud model specifically, and how you would fix it - this is free text, not a code submission.