My DD lives in Letchworth, not that far from Royston and she has some kind of travel card, I am not sure which, she certainly has an oyster card. She goes up to London quite frequently, to the theatre and to visit friends and certainly wouldn't be doing that if it cost her £40, or anything near it for her ticket.
I think, as another GNer said, you need to get online and investigate all the options, from travel cards to advance booking. If you do that you should be able to drastically reduce the cost. Sometimes it is something as trivial as getting the train just before or just after the one you were thinking of travelling on. This weekend someone told me that they could cut the cost of a journey they made regularly from £32 to £6, just be getting a train 20 minutes earlier than the one they usually aimed for.