I have four variables: panid (id variable), period (categorical going from 0 to 2), size (categorical going from 1 to 4 and constant within panid) and a continous treatment variable (constant within panid). I want to run a diff-in-diff and estimate treatment coefficients for each size bin. I.e. I would like to estimate the following OLS coefficients:

Code:
1.period#1.size#c.treatment
1.period#2.size#c.treatment
1.period#3.size#c.treatment
1.period#4.size#c.treatment
2.period#1.size#c.treatment
2.period#2.size#c.treatment
2.period#3.size#c.treatment
2.period#4.size#c.treatment
(1) First attempt:

Code:
reghdfe ib0.period#i.size#c.treatment, absorb(panid period)
period and panid are in the absorb() option so there is no need for "##" expansion. I get:

Code:
0.period#1.size#c.treatment
0.period#2.size#c.treatment
0.period#3.size#c.treatment
0.period#4.size#c.treatment
1.period#1.size#c.treatment
1.period#2.size#c.treatment
1.period#3.size#c.treatment
1.period#4.size#c.treatment
Why does Stata not follow the base category I specify?

(2) If I use the full "##" expansion as in

Code:
reghdfe ib0.period##i.size#c.treatment, absorb(panid period)
I get the following coefficients:

Code:
0.period#c.treatment
1.period#c.treatment
1.period#2.size#c.treatment
1.period#3.size#c.treatment
1.period#4.size#c.treatment
2.period#2.size#c.treatment
2.period#3.size#c.treatment
2.period#4.size#c.treatment
Which isn't what I want either.

I have been struggling with understanding how stata expands interactions for a while. The official documentation is not extremely helpful. Any solution/workaround or link to a good explanation for how this works is appreciated.

(3) I can get what I want by listing the period dummies explicitly:

Code:
reghdfe 1.period##i.size#c.treatment 2.period##i.size#c.treatment, absorb(panid period)
Since I would like to include more interactions, this notation gets a bit cumbersome and I would be happy to get (1) to work as it is supposed to.

Thanks!