Skip to content

Conversation

@mshrieve
Copy link
Contributor

@mshrieve mshrieve commented Jun 26, 2025

modifies PnL computations for negRisk conversions

for sure they were not done correctly before and were quite complicated
now for coverting in a neg-risk market with N outcomes,
we consider that each NO token is sold for (N-1)/N, and each YES token bought for 1/N.

in aggregate, if you converted M NO tokens into N-M YES tokens,
your PnL is:
M(N-1)/N - (N-M)/N
= 1/N * (MN - M -N + M)
= 1/N * (MN - N)
= N/N * (M - 1)
= M - 1
= the amount of USDC acquired via the conversion

Copilot AI review requested due to automatic review settings June 26, 2025 01:36
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors handlePositionsConverted to replace the previous average-based NO/YES price calculations with a uniform pricing model, and cleans up related imports.

  • Removed legacy logic and unused imports for per-position price averaging.
  • Introduced uniform price computation (1/N for YES, (N-1)/N for NO).
  • Reordered and pruned imports for clarity.
Comments suppressed due to low confidence (3)

pnl-subgraph/src/NegRiskAdapterMapping.ts:105

  • [nitpick] This comment is too terse. Expand it to explain that you're calculating the uniform YES token price as COLLATERAL_SCALE / questionCount for clarity.
  // 1/N

pnl-subgraph/src/NegRiskAdapterMapping.ts:106

  • The new uniform price calculation logic should have unit tests covering various questionCount values and edge cases (e.g., questionCount = 1 or large values) to ensure correctness.
  const yesTokenPrice = COLLATERAL_SCALE.div(BigInt.fromI32(questionCount));

pnl-subgraph/src/NegRiskAdapterMapping.ts:101

  • Repeated @ts-expect-error directives for u8 suggest a missing type definition. Consider declaring or importing a proper u8 alias to avoid suppressing TypeScript errors.
  // @ts-expect-error Cannot find name 'u8'.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants