diff --git a/web/components/contracts-list.tsx b/web/components/contracts-list.tsx
index cf5364fd..c68e443c 100644
--- a/web/components/contracts-list.tsx
+++ b/web/components/contracts-list.tsx
@@ -7,6 +7,8 @@ import {
contractMetrics,
Contract,
listContracts,
+ getBinaryProbPercent,
+ getBinaryProb,
} from '../lib/firebase/contracts'
import { User } from '../lib/firebase/users'
import { Col } from './layout/col'
@@ -14,6 +16,7 @@ import { SiteLink } from './site-link'
import { ContractCard } from './contract-card'
import { Sort, useQueryAndSortParams } from '../hooks/use-sort-and-query-params'
import { Answer } from '../../common/answer'
+import { getProbability } from '../../common/calculate'
export function ContractsGrid(props: {
contracts: Contract[]
@@ -254,6 +257,12 @@ export function SearchableGrid(props: {
matches = _.sortBy(matches, ({ volume24Hours }) => -1 * volume24Hours)
} else if (sort === 'creator' || sort === 'tag') {
matches.sort((a, b) => b.volume7Days - a.volume7Days)
+ } else if (sort === 'most-likely') {
+ matches = _.sortBy(matches, (contract) => -getBinaryProb(contract))
+ } else if (sort === 'least-likely') {
+ // Exclude non-binary contracts
+ matches = matches.filter((contract) => getBinaryProb(contract) !== 0)
+ matches = _.sortBy(matches, (contract) => getBinaryProb(contract))
}
if (sort !== 'all') {
@@ -290,6 +299,8 @@ export function SearchableGrid(props: {
+
+
{!byOneCreator && }
diff --git a/web/lib/firebase/contracts.ts b/web/lib/firebase/contracts.ts
index 5436a25b..70e09deb 100644
--- a/web/lib/firebase/contracts.ts
+++ b/web/lib/firebase/contracts.ts
@@ -50,15 +50,16 @@ export function contractMetrics(contract: Contract) {
return { truePool, liquidityLabel, createdDate, resolvedDate }
}
-export function getBinaryProbPercent(contract: FullContract) {
+export function getBinaryProb(contract: FullContract) {
const { totalShares, pool, p, resolutionProbability, mechanism } = contract
- const prob =
- resolutionProbability ?? mechanism === 'cpmm-1'
- ? getCpmmProbability(pool, p)
- : getDpmProbability(totalShares)
+ return resolutionProbability ?? mechanism === 'cpmm-1'
+ ? getCpmmProbability(pool, p)
+ : getDpmProbability(totalShares)
+}
- return formatPercent(prob)
+export function getBinaryProbPercent(contract: FullContract) {
+ return formatPercent(getBinaryProb(contract))
}
export function tradingAllowed(contract: Contract) {