Definition of contracts for difference
A contract for difference (CFD) is essentially a contract between an investor and an investment bank or a spread-betting firm. At the end of the contract, the parties exchange the difference between the opening and closing prices of a specified financial instrument, including shares or commodities.
CFDs do not carry votes like ordinary stock but enable investors to gain economic exposure to a listed company for a fraction of the cost of buying shares. They also escape stamp duty and can be bought in size without triggering obligations to disclose the holding. A form of synthetic dividend is normally also payable. 
A CFD is simply an agreement between two parties – the investor and the CFD provider – to pay each other the change in the price of an underlying asset. Depending on which way the price moves, one party pays the other the difference from the time the contract was agreed to the point where it ends.
So like spread bets, CFDs involve the investor taking an opposing view to the insurer, speculating that an asset price will rise, by buying (‘long’ position), or fall, by selling (‘short’ position).
Also like spread bets, CFDs incur no stamp duty as they do not involve buying an asset, only agreeing to receive or pay the movement in its price. And because you only have to put down a small deposit on trades, called ‘margin’, you can make large profits – or losses – on the money you commit, from small moves in the price. So CFDs give you the advantages of owning shares without many of the inconveniences. However, they differ from spread bets in their tax treatment. 
Contracts for difference blamed for volatility
Contracts for difference: the long and the short of it