Dear all,

First of all, I apologize if my question duplicates with some other questions.
I've seen some posts and answers about the difference between reghdfe vs xtreg ,fe but have a specific question in terms of r-squared.
Whenever I post a question here, I usually upload an example data using dataex but I though this question is more about underlying mechanism/process of each command so I skip using dataex.

My question is, is it natural to get different r-squared between (reghdfe vs cluster2) vs xtreg?
Specifically, I have a country level yearly data set.
I ran:

Code:
reghdfe DV IVs, absorb(country year) vce(cluster country year)
cluster2 DV IVs country_dummy* year_dummy*, fcluster(country) tcluster(year)
xtreg DV IVs i.year, fe
In the above simplified code,
reghdfe has country and year FE with country and year clustered s.e. adjusted
cluster2 has country and year FE with country and year clustered s.e. adjusted (I used cluster2.ado from Prof.Mitchell Pertersen's Programming Advice website)
xtreg has only country and year FE

When I see the results, reghdfe and cluster2 give me the same r-squared which is around 0.95 whereas xtreg gives me 0.67

To sum up,
1.Is it natural to have too high r-squared in some cases? From my perspectives, too high r-squared seems unrealistic.
2.Do xtreg (with 2 way FEs) and cluster2(or reghdfe) generate different r-squared?

I appreciate for all of your comments in advance.