Maximum Area of a Polygon with Vertices of a Polygon Rules
Given a list of integer coordinates, l, with a length of at least 4, and an integer n such that n is smaller than the length of l (but at least 3), return the largest area of an n-sided polygon satisfies:

is simple (not self-intersecting).
has all the coordinates of its n vertices in the list l.
has no three consecutive collinear vertices.

Note that the polygon given in the input should comply to the three points above as well.
Test Cases
Here are a few test cases:
[(0,0), (0,-1), (-1,-1), (-1,0)], 3 -&gt; 0.5
[(0,0), (1,0), (2,1), (2,2), (1,3), (0,3), (-1,2), (-1,1)], 3 -&gt; 3
[(0,0), (1,0), (2,1), (2,2), (1,3), (0,3), (-1,2), (-1,1)], 5 -&gt; 5.5
[(0,0), (1,0), (2,1), (2,2), (1,3), (0,3), (-1,2), (-1,1)], 6 -&gt; 6

You can try any test cases you like here.
Make your code as short as possible.
Python 2, 172 bytes

-1 byte thanks to J843136028

bug fix thanks to Jonathan Frech



from itertools import*
def f(l,n,L=()):
 for p in combinations(l,n):
  r=0;j=-1
  for i in range(n):r+=(p[j][0]+p[i][0])*(p[j][1]-p[i][1]);j=i
  L+=abs(r/2.),
 print max(L)


Try it online!