If I am not mistaken, the federal funds rate is the rate at which commercial banks, money market funds and market makers pay for overnight US Treasuries. In theory, it should be equal to the IOR rate, the rate which the Fed pays on reserves because commercial banks who have access to the IOR rate are able to arbitrage away the difference. However, in practice, this does not take place. A previous Stack Exchange answers attributes this to the stigma attached to borrowing from the Fed discount window however, as the primary rate is now IOR, I don't understand why commercial banks still fail to arbitrage the difference in the FFR and IOR.
In fact, looking at Fred shows that the federal funds rate now lies consistently lies somewhere between the IOR rate and the ON RRP rate, often to the point of 15 basis points.
Is it a matter of regulations? Is it a matter of banks not wishing to arbitrage due to the minimal return involved?