I’m also running a pool primarily for research/learning. The operational cost is minimal, because I run on hosted RaspberryPi4 which is also CO2 neutral. The 1% pool margin goes to charity, which is then used to plant trees. The pool rewards go to loyal delegators on top of what they get anyway (i.e. 850 ADA to 14 delegators) - we started to do this 3 months ago (i.e. since it became apparent that 360 p.e. is much more than actually needed) and here is how it works.
If you own the pool, the math is simple …
73 * YourStake / TotalStake * SlotsPerEpoch => AnualBlocks
AnualBlocks * BlockReward / YourStake => ROA
73 * 50k / 22.75bn * 21600 => 3.62
3.62 * 750 / 50k => 5.4%
From this you subtract your actual running cost to get your profit. For example …
3.62 * 750 - 1200 => 1515 ADA p.a.
1200 / (3.62 * 750) = 44.2% cost
Now, lets compare this to simply delegating your 50k …
The cost for delegating to a pool depends on pool size of the pool more than anything else, so you would want to delegate to an almost saturated pool. We can also ignore pools that have a > 0% margin and here is why.
With a saturated pool you would have a cost of 0.7% …
3.62 * 750 * 0.07 => 19 ADA
which is considerable less than the 1200 ADA we assumed above. Attracting delegators would work in your favor, but who would want to delegate to a your pool and have a cost of > 35% ? The story of your pool would have to be convincing enough to compensate for that.
There is a point of break even, which for this example sits at …
1200 / 0.7% / 750 / 73 => 3.13 b.e.
3.13 * 22.75bn / 21600 => 3.3m
So if you have > 3.3m, it will be more profitable running your own pool. It also doesn’t matter whether that pool attracts delegators or not, your ROA will be the same.
Bottom line, the cost of running a pool is considerable both in terms of ADA and effort. It may still be worth it, depending on your long term objectives. When delegating, choose a pool with 0% margin - otherwise the rich will simply get richer. Also, a good pool would not simply pocket all of its pool reward - i.e. surely not all of the (6 x 340 => 2040 p.m.) are needed to run a pool.
Still, there often is good reason to charge > 0% margin for example to use some/all of that to do some good in the world. When deciding which pool to delegate to, this can be a decisive factor in line with - “Making the world work better for all”.