Java 8, 116116 99 bytes
a->{int r=0,i=-1,m=0,t;for(;++i<4;a=new int[]{a[2],a[0],a[3],a[1]})if((t=a[0]/a[2]-a[1]/a[3])>m){m=t;r=i;}return r;}
Input as a flat-17 bytes thanks to @Neil by taking four loose integer inputs instead of an integer-array.
Explanation:
(a,b,c,d)->{ // Method with four integer-array parameterparameters and integer return-type
int r=0, // Result-index, starting at 0
i=-1, // Index-integer, starting at -1
m=0, // Max value, starting at 0
t; // Temp-integer, uninitialized
++i<4 // Loop `i` in the range (-1,4) (or [0,3]):
; // After every iteration:
a=new int[]{a[2]t=a,a[0]a=c,a[3]c=d,a[1]}d=b,b=t)
// Rotate: change a,b,c,d to c,a,d,b
if((t=a[0]t=a/a[2]c-a[1]b/a[3]d)
// Set `t` to a//c-b//d
>m){ // And if `t` is larger than `m`:
m=t; // Set maximum `m` to this `t`
r=i;} // And update the result with the current index `i`
return r;} // Finally, return the result-index `r`