The 2008 financial crisis has been attributed to excessive complexity of the financial system due to financial innovation. We employ computational complexity theory to make this notion precise. Specifically, we consider the problem of clearing a financial network after a shock. Prior work has shown that when banks can only enter into simple debt contracts with each other, then this problem can be solved in polynomial time. In contrast, if they can also enter into credit default swaps (CDSs), i.e., financial derivative contracts that depend on the default of another bank, a solution may not even exist. In this work, we show that deciding if a solution exists is NP-complete if CDSs are allowed. This remains true if we relax the problem to $varepsilon$-approximate solutions, for a constant $varepsilon$. We further show that, under sufficient conditions where a solution is guaranteed to exist, the approximate search problem is PPAD-complete for constant $varepsilon$. We then try to isolate the origin of the complexity. It turns out that already determining which banks default is hard. Further, we show that the complexity is not driven by the dependence of counterparties on each other, but rather hinges on the presence of so-called naked CDSs. If naked CDSs are not present, we receive a simple polynomial-time algorithm. Our results are of practical importance for regulators stress tests and regulatory policy.