Apollo client typePolicies: Calculate field based on parent value

I have a Graphql server schema like this:

  type Player {
    id: ID
    name: String
    country: String
    coef: Float
    odds: [Odd]
  }

  type Odd {
    id: ID
    value: Float
  }

  getPlayers: [Player]

In my client I need to calculate a new field called amount based on value from Odd and coef from Player (I need to calculate in my client because coef and value are values that changes due to subscriptions or because the user edits them)

Then I have this client-side schema:

extend type Odd{
 amount: Float
}

And typePolicies:

const typePolicies = {
 Odd {
  fields: {
   amount: {
    read (_ , { readField, toReference, cache })  {    
     // Here I need 'coef' from 'Player' (Odd's parent)
     // One option would be to have the ID of the 'Player' in each 'Odd'
     // then do something like this:
     // const playerRef = toReference(cache.identify({ __typename: "Player", id: readField("playerID") }));
     // const coef= readField("coef", lineRef);
     // const value = readField('value');
     // const amount = calculateAmount(coef, value); // function to calculate amount
     // return amount;   
    }  
   } ​
  ​}
 ​}
}

Another option would be add ‘coef’ also in Odd type, something like this:

type Odd {
    id: ID
    value: Float
    coefPlayer: Float
}

The problem with this is that I also need coef in Player input, then if the coef changes I need to update in Player and Odd, and my code gets very complicated. (as I said before coef changes due to subscriptions).

This is a basic example, but this problem is something very recurrent in my day to day, and I never know what is the best way to implement it.

What do you do in this case?

I have a similar problem. I have Product with type field, and Variants array. I would like to change certain fields of Variant, based on type from Product. It would be great if someone from Apollo team could shed some light on such use cases!