I am curious about a hypothetical strategy where you are long for a given period (like a year), and at the same time you hedge against the overall trend by going short everyday and accumulating the returns, all this using the same instrument (whether you are using a CALL option or physically having the commodity, etc) Basically compounding all profits. Would this be possible? If so, is there a name for this?
Here's a graph that I did in Matlab. It basically graphs the returns of a stock in a given year vs the compounded daily gains (and shorting those gains to create an inverse graph). The idea originally was basically to create a statistical arbitrage opportunity and obtain a delta neutral position long-term, basically trading variance/volatility.
The red graph is the daily accumulation of returns by shorting everyday for a year, and the blue graph is the appreciation of the stock in a given year. The interesting part of this graph is that for the most part, the difference between the blue graph (holding) and the red one (the compounded daily returns gained by shorting) is mostly positive, so it almost always ends up in a profit. Which sounds strange! it sounds like a perfect hedge, by why isn't anyone talking about this? Am I overlooking something? Do I have a mistake? Is this actually profitable?
Also, here's the code I used to generate the above graph. Please help me out here if you see any mistake!
DIR = 'D:\hedging firm\';
FILE = strcat(DIR,'AAPL.csv');
KC = asset(FILE);
KC.price = KC.price; %
KC.open = KC.open;
KC.high = KC.high;
KC.low = KC.low;
fees = 0.0035; % Fees in USD per trade
difference_mkt = [];
difference_fund = [];
initial_balance_fund = [];
multiplier = 100;
balance_fund = 0;
n = 252;
k= 0;
for i=k+n+1:length(KC.price)
% SHORT
difference_mkt(i) = (KC.price(i) - KC.price(i-n))/KC.price(i-n)*100;
balance_fund = 0;
initial_balance = 0;
multiplier_mv = 100;
for j=n:-1:0
if balance_fund == 0
balance_fund = multiplier_mv * KC.open(i-j);
initial_balance = balance_fund;
end
multiplier_mv = floor(balance_fund / KC.open(i-j));
daily_gain = (KC.open(i-j) - KC.price(i-j)) * multiplier_mv - fees*multiplier_mv*2;
balance_fund = balance_fund + daily_gain;
end
difference_fund(i) = (balance_fund-initial_balance)/initial_balance * 100;
initial_balance_fund(i) = initial_balance;
end
net_gains = difference_mkt(k+n+1:end) + difference_fund(k+n+1:end);
plot(difference_mkt(k+n+1:end));
hold on;
plot(difference_fund(k+n+1:end));