Commit Graph

166 Commits

Author SHA1 Message Date
James Grugett
45f92379bc Portfolio: Fix calculation of whether you sold all your shares 2022-05-28 00:18:09 -05:00
James Grugett
279b139556 Add 'sold' filter option in portfolio page 2022-05-27 15:51:55 -05:00
James Grugett
15d203977a Portfolio: Consistently filter out contracts you have sold out of. 2022-05-27 15:40:52 -05:00
Marshall Polaris
47f10301c8
Change lodash stuff so that it can be tree-shaken out of build (#233)
* Set common package.json sideEffects: false

* Configure SWC to modularize lodash imports

* Import specific lodash functions instead of _

* Add an eslint rule to avoid full lodash import
2022-05-22 01:36:05 -07:00
Marshall Polaris
20f4b97d8b
Rewrite client for new public APIs to use fetch instead of callables (#241)
* Rename `lib/firebase/api-call` -> `lib/firebase/fn-call`

This relieves ambiguity now that we will be using our actual
public API in the client.

* Rewrite client API calls to createContract, placeBet

* Tiny fixup for client market creation code
2022-05-19 15:04:34 -07:00
mantikoros
be3d4d7735 exclude antes from bets list 2022-05-19 15:26:44 -04:00
James Grugett
76f27d1a93
Numeric range markets!! (#146)
* Numeric contract type

* Create market numeric type

* Add numeric graph (coded without testing)

* Outline of numeric bet panel

* Update bet panel logic

* create numeric contracts

* remove batching for antes for numeric markets

* Remove focus

* numeric market range [1, 100]

* Zoom graph

* Hide bet panels

* getNumericBets

* Add numeric resolution panel

* Use getNumericBets in bet panel calc

* Switch bucket count to 100

* Parallelize ante creation

* placeBet for numeric markets

* halve std of numeric bets

* Update resolveMarket with numeric type

* Set min and max for contract

* lower std for numeric bets

* calculateNumericDpmShares: use sorted order

* Use min and max to map the input

* Fix probability calc

* normpdf variance mislabeled

* range input

* merge

* change numeric graph color

* fix getNewContract params

* bet panel labels

* validation

* number input

* fix bucketing

* bucket input, numeric resolution panel

* outcome label

* merge

* numeric bet panel on mobile

* Make text underneath filled green answer bar selectable

* Default to 'all' feed category when loading page.

* fix numeric resolution panel

* fix numeric bet panel calculations

* display numeric resolution

* don't render NumericBetPanel for non numeric markets

* numeric bets: store shares, bet amounts across buckets in each bet object

* restore your bets for numeric markets

* numeric pnl calculations

* remove hasUserHitManaLimit

* contrain contract type

* handle undefined allOutcomeShares

* numeric ante bet amount

* use correct amount for numeric dpm payouts

* change numeric graph/outcome color

* numeric constants

* hack to show correct numeric payout in calculateDpmPayoutAfterCorrectBet

* remove comment

* fix ante display in bet list

* halve bucket count

* cast to NumericContract

* fix merge imports

* OUTCOME_TYPES

* typo

* lower bucket count to 200

* store raw numeric value with bet

* store raw numeric resolution value

* number input max length

* create page: min, max to undefined if not numeric market

* numeric resolution formatting

* expected value for numeric markets

* expected value for numeric markets

* rearrange lines for readability

* move normalpdf to util/math

* show bets tab

* check if outcomeMode is undefined

* remove extraneous auto-merge cruft

* hide comment status for numeric markets

* import

Co-authored-by: mantikoros <sgrugett@gmail.com>
2022-05-19 12:42:03 -05:00
Ian Philips
7d8ccb78a4
Remove unused bets (redemptions, antes) and sort by desc in query (#264)
* Remove unused bets and sort in query

* remove console

* Explicitly ignore or include redemptions

* Pass options from parent function

* Fix let=>const
2022-05-19 10:03:37 -06:00
Marshall Polaris
cd7efb03ca
Implement onRequest versions of createContract, placeBet functions (#227)
* Reimplement createContract and placeBet cloud functions

* Fix broken warmup function error handling
2022-05-16 21:43:40 -07:00
Marshall Polaris
acc9c84e2e
More absolute imports (#156)
* Configure functions module to allow absolute imports

* Convert common imports in functions to be absolute

* Convert common imports in web to be absolute

* Convert lib imports in web to be absolute

* Convert hooks imports in web to be absolute

* Convert components imports in web to be absolute
2022-05-09 09:04:36 -04:00
Marshall Polaris
2e214cab7a
Kill warmup spam (#133)
* Only warm up sell bet function once

* Only warm up create user function once
2022-05-05 09:51:09 -07:00
Marshall Polaris
06f9f53951
Link to /home, not / (#93) 2022-04-22 21:39:29 -05:00
James Grugett
a525ad82ec Filter out markets you sold out of from most of the views on portfolio page. 2022-04-21 18:32:46 -05:00
James Grugett
7847a9e781 Track latency of feed and portfolio page. 2022-04-21 01:00:08 -05:00
James Grugett
9c74f88b4a
Improve Free response UI (#78)
* Add legend to free response graph

* Hide answers panel unless resolving. Correctly order answers

* No gray background for add answer & resolve panel. Tweak spacing

* Max answer length 240 chars

* Show answer text in resolution for market page, card instead of number.

* Remove remaining answer #'s. Refactor outcome/resolution labels.

* Move answer panel back up

* Tweak spacing

* Update placement of bet button on mobile for FR answer feed item

* Fix reversed feed for binary markets

* Show multi resolve options

* Clean up unused parts of answer item

* Lighten resolve buttons

* Show answer text in market resolve email
2022-04-18 18:02:40 -05:00
mantikoros
790aec9baf
Cfmm migration (#80)
* cfmm migration script

* save dpm shares, pool

* formatMoney: use floor instead of round

* migrate cfmm: use sale amount as shares for sold bets

* migration: make up fake share qty for sold shares

* migration: also convert resolved markets

* migration: don't migrate resolved markets after all

* migration: error checking
2022-04-18 17:02:53 -05:00
James Grugett
102e22e111 Recent trade => recent 2022-04-15 17:55:26 -05:00
James Grugett
72a56b46fd Switch portfolio default sort to recent trade 2022-04-14 00:16:08 -05:00
James Grugett
43b8c16fcc Compact-ify cards in portfolio page 2022-04-14 00:06:13 -05:00
James Grugett
8a59ab3180 Tweak current investment calculation 2022-04-13 22:28:29 -05:00
James Grugett
2a3593c269 Fix profit calculation for dpm sales 2022-04-13 20:42:47 -05:00
James Grugett
e58ec54546 Clean up portfolio sorts 2022-04-13 18:56:28 -05:00
James Grugett
a09af526a0 Switch summary stat from payout at current % to profit 2022-04-13 17:57:46 -05:00
James Grugett
bfb708d477 Fix profit calculation for cpmm sales. Change totalValue to investment value excluding sales 2022-04-13 17:25:32 -05:00
James Grugett
a9028b0a94 Remove invested metric for cfmm markets 2022-04-13 15:47:12 -05:00
James Grugett
ef0408dcdf Mobile navbar includes Portfolio instead of Communities. Each option is labeled! 2022-04-03 18:26:50 -05:00
James Grugett
5dcd43f5b2 Refactor tricky bet calculations to one function 2022-04-03 14:48:53 -05:00
James Grugett
1b9a38ff66 Tweak current value calculation 2022-04-03 11:18:31 -05:00
James Grugett
6b2f6f7185 Calculate invested differently. Sort trades by value and profit, including sales profit. Display profit when sorting by profit. 2022-04-03 01:08:57 -05:00
Austin Chen
94b7ebe5e8 Minor fixes: typo, React keys 2022-03-31 01:38:57 -07:00
James Grugett
ed5f69db7a
Sell shares panel (#69)
* Split BuyAmountInput out of AmountInput

* Buy and sell tabs. Compute some sell info

* In progress

* BuyPanel & SellPanel with banner above that shows current shares and toggle button

* Remove "Remaining balance"

* Bring back 'Place a trade'. Tweaks

* Sell shares cloud function.

* Sell all shares by default. Switch back to buy if sell all your shares.

* Cache your shares in local storage so sell banner doesn't flicker.

* Compute sale value of shares with binary search to keep k constant.

* Update bets table to show BUY or SELL

* Fixes from Stephen's review

* Don't allow selling more than max shares in cloud function

* Use modal for sell shares on desktop.

* Handle floating point precision in max shares you can sell.
2022-03-29 14:56:56 -05:00
James Grugett
0592909248 Subtract loan amount from investment 2022-03-21 01:29:53 -05:00
Austin Chen
03592f9c3e Add sort by close time 2022-03-20 19:30:04 -07:00
James Grugett
e0989bdfde Fix loan amount label to account for sales. 2022-03-17 12:04:48 -05:00
James Grugett
0390e851fc Show loan summary above bets table. Remove parenthetical loan amount per bet. 2022-03-16 18:08:33 -05:00
mantikoros
c183e00d47
Cfmm (#64)
* cpmm initial commit: common logic, cloud functions

* remove unnecessary property

* contract type

* rename 'calculate.ts' => 'calculate-dpm.ts'

* rename dpm calculations

* use focus hook

* mechanism-agnostic calculations

* bet panel: use new calculations

* use new calculations

* delete markets cloud function

* use correct contract type in scripts / functions

* calculate fixed payouts; bets list calculations

* new bet: use calculateCpmmPurchase

* getOutcomeProbabilityAfterBet

* use deductFixedFees

* fix auto-refactor

* fix antes

* separate logic to payouts-dpm, payouts-fixed

* liquidity provision tracking

* remove comment

* liquidity label

* create liquidity provision even if no ante bet

* liquidity fee

* use all bets for getFixedCancelPayouts

* updateUserBalance: allow negative balances

* store initialProbability in contracts

* turn on liquidity fee; turn off creator fee

* Include time param in tweet url, so image preview is re-fetched

* share redemption

* cpmm ContractBetsTable display

* formatMoney: handle minus zero

* filter out redemption bets

* track fees on contract and bets; change fee schedule for cpmm markets; only pay out creator fees at resolution

* small fixes

* small fixes

* Redeem shares pays back loans first

* Fix initial point on graph

* calculateCpmmPurchase: deduct creator fee

* Filter out redemption bets from feed

* set env to dev for user-testing purposes

* creator fees messaging

* new cfmm: k = y^(1-p) * n^p

* addCpmmLiquidity

* correct price function

* enable fees

* handle overflow

* liquidity provision tracking

* raise fees

* Fix merge error

* fix dpm free response payout for single outcome

* Fix DPM payout calculation

* Remove hardcoding as dev

Co-authored-by: James Grugett <jahooma@gmail.com>
2022-03-15 17:27:51 -05:00
Austin Chen
e5d02dde06 Allow filtering your trades 2022-03-13 13:55:42 -07:00
Austin Chen
b4f8fcf38e Show profit/loss in sale panel 2022-03-03 02:10:20 -08:00
James Grugett
4d8af33c85 Invested value => Investment value 2022-03-02 15:48:38 -08:00
James Grugett
6285212a1e Update your trades to show total profit, invested value 2022-03-02 15:42:59 -08:00
James Grugett
1dd078562a Fix to actually show investment instead of current value. And subtract bet amount from current value. 2022-03-01 21:09:33 -08:00
James Grugett
985cdd2537
🏦 Per-market loans! (#57)
* Loan backend: Add loanAmount field to Bet, manage loans up to max loan amount per market -- buy, sell, and resolve.

* Loan frontend: show your loan amount in bet panel, answer bet panel

* Resolve emails include full payout not subtracting loan

* Exclude sold bets from current loan amount

* Handle bets table for loans. Sell dialog explains how you will repay your loan.

* Floor remaining balance

* Fix layout of create answer bet info

* Clean up Sell popup UI

* Fix bug where listen query was not updating data.

* Reword loan copy

* Adjust bet panel width

* Fix loan calc on front end

* Add comment for includeMetadataChanges.

Co-authored-by: Austin Chen <akrolsmir@gmail.com>
2022-03-01 21:31:48 -06:00
James Grugett
5a39ca4c5e Don't show payout if chosen column for resolved markets 2022-02-28 16:44:25 -08:00
James Grugett
4bc2833e11 Add column to bets table with payout if chosen. Rearrange columns. Tweak sell dialog wording. 2022-02-28 16:38:09 -08:00
James Grugett
a680d80793 Free response: Show invested and payouts on market page, don't show payout if yes/no 2022-02-28 15:58:13 -08:00
James Grugett
b7f94e65a7 Change Settled to Resolved, Newest to Most recent in trades sort options. 2022-02-27 16:52:58 -08:00
Austin Chen
0a98ffe05c Remove sold bets from Your Trades 2022-02-25 16:57:28 -08:00
mantikoros
c24007012c bets list: show message if no active bets 2022-02-22 16:55:06 -06:00
James Grugett
858ce10b49 Re-order sell button and sale price to be first in bets table 2022-02-21 14:22:36 -06:00
James Grugett
6d3fb8f4ae Remove balance from your trades page (looks better on mobile, cleaner) 2022-02-21 12:55:26 -06:00
James Grugett
c32442ab41 Fix trades sort by newest 2022-02-21 12:42:51 -06:00
James Grugett
793742b499 Trades page: Wait for all bets / contract data to load with loading indicator 2022-02-20 22:26:22 -06:00
mantikoros
8e33c2b639 for sales, show change in implied probability 2022-02-17 18:24:10 -06:00
James Grugett
b2501d8145
Free response (#47)
* Answer datatype and MULTI outcome type for Contract

* Create free answer contract

* Automatically sort Tailwind classes with Prettier (#45)

* Add Prettier Tailwind plugin

* Autoformat Tailwind classes with Prettier

* Allow for non-binary contracts in contract page and related components

* logo with white inside, transparent bg

* Create answer

* Some UI for showing answers

* Answer bet panel

* Convert rest of calcuate file to generic multi contracts

* Working betting with ante'd NONE answer

* Numbered answers. Layout & calculation tweaks

* Can bet. More layout tweaks!

* Resolve answer UI

* Resolve multi market

* Resolved market UI

* Fix feed and cards for multi contracts

* Sell bets. Various fixes

* Tweaks for trades page

* Always dev mode

* Create answer bet has isAnte: true

* Fix  card showing 0% for multi contracts

* Fix grouped bets feed for multi outcomes

* None option converted to none of the above label at bottom of list. Button to resolve none.

* Tweaks to no answers yet, resolve button layout

* Show ante bets on new answers in the feed

* Update placeholder text for description

* Consolidate firestore rules for subcollections

* Remove Contract and Bet type params. Use string type for outcomes.

* Increase char limit to 10k for answers. Preserve line breaks.

* Don't show resolve options after answer chosen

* Fix type error in script

* Remove NONE resolution option

* Change outcomeType to include 'MULTI' and 'FREE_RESPONSE'

* Show bet probability change and payout when creating answer

* User info change: also change answers

* Append answers to contract field 'answers'

* sort trades by resolved

* Don't include trailing !:,.; in links

* Stop flooring inputs into formatMoney

* Revert "Stop flooring inputs into formatMoney"

This reverts commit 2f7ab18429.

* Consistently floor user.balance

* Expand create panel on focus

From Richard Hanania's feedback

* welcome email: include link to manifold

* Fix home page in dev on branches that are not free-response

* Close emails (#50)

* script init for stephen dev

* market close emails

* order of operations

* template email

* sendMarketCloseEmail: handle unsubscribe

* remove debugging

* marketCloseEmails: every hour

* sendMarketCloseEmails: check undefined

* marketCloseEmails: "every hour" => "every 1 hours"

* Set up a read API using Vercel serverless functions (#49)

* Set up read API using Vercel serverless functions

Featuring:
/api/v0/markets
/api/v0/market/[contractId]
/api/v0/slug/[contractSlug]

* Include tags in API

* Tweaks. Remove filter for only binary contract

* Fix bet probability change for NO bets

* Put back isProd calculation

Co-authored-by: Austin Chen <akrolsmir@gmail.com>
Co-authored-by: mantikoros <sgrugett@gmail.com>
Co-authored-by: mantikoros <95266179+mantikoros@users.noreply.github.com>
2022-02-17 17:00:19 -06:00
mantikoros
d3fdd4cd1f bets list: comment out expectation 2022-02-17 16:49:00 -06:00
mantikoros
3609255342 sort trades by value 2022-02-17 16:44:33 -06:00
Austin Chen
515676f885 Consistently floor user.balance 2022-02-16 19:19:11 -08:00
mantikoros
95242d94ac sort trades by resolved 2022-02-16 00:08:16 -06:00
Austin Chen
95fbfb7db0 Tweak padding 2022-02-14 15:39:59 -08:00
Austin Chen
86b4b1a907 Use badges in Your Trades 2022-02-14 15:29:29 -08:00
mantikoros
443acdbcf8 beautify trades page 2022-02-14 16:00:46 -06:00
mantikoros
a8abd4ecbb trades page: show pnl 2022-02-14 13:00:20 -06:00
Austin Chen
0e640bf53b Show the current % instead of "MKT" in Your Trades 2022-02-13 18:20:46 -08:00
Austin Chen
7338bdd47a
Automatically sort Tailwind classes with Prettier (#45)
* Add Prettier Tailwind plugin

* Autoformat Tailwind classes with Prettier
2022-02-11 10:40:22 -08:00
James Grugett
b0a1da62d2 Add sort options for /trades. Can sort by
profit or newest!
2022-02-08 23:28:20 -06:00
James Grugett
e66564cd1f Add current prob to trades items 2022-02-08 22:52:09 -06:00
James Grugett
552e6e6c3a
Custom feed (#43)
* Show custom feed of contracts from folds your follow or have bet on.

* Add tw-elements UI library

* Add loading spinner while feed loads

* Switch from onSnapshot to our listenForValues, which doesn't set with partial cached values

* Change home tags to communities

* Remove tw-elements for now
2022-02-03 18:13:04 -06:00
mantikoros
f06ca8305c
Resolve prob (#41)
* rename MKT to PROB; show resolved probability; move format utilities to common

* ProbabilitySelector

* resolve to PROB

* prob and mkt labels
2022-01-30 15:51:30 -06:00
jahooma
f2c4d3e9c1 Change to white backgrounds for content. Remove page's margin, set individually. 2022-01-27 16:37:43 -06:00
mantikoros
1b5e33ca54 no ante selling 2022-01-19 16:36:55 -06:00
mantikoros
a16d35974f fix displayed sale amount 2022-01-15 16:51:09 -06:00
jahooma
1683a3842b Link to user from feed mentions. Show name instead of username in card. 2022-01-13 15:16:47 -06:00
mantikoros
9d5490cf9a
Switch to new dpm mechanism (#26)
* initial commit

* antes

* rename path, compute to contractPath, contractMetrics

* merge

* Include antes as bets; more calculations

* fees on estimated winnings

* mkt payout calculation

* contract: remove startPool, add phantomShares

* Merge branch 'main' into new-dpm

* dpm migration script

* my service account
2022-01-12 13:01:04 -06:00
mantikoros
b97a65cf2c refactor data structures, calculations to common directory 2022-01-10 15:07:57 -06:00
jahooma
829c8a4b75 Disallow selling after close time! Enforce no trading after close on server. 2022-01-10 10:33:02 -06:00
mantikoros
0b8ad76b0f global warming: warm up all cloud functions on client 2022-01-05 12:30:16 -06:00
mantikoros
7d5b4359f8 align sales price 2022-01-03 23:56:56 -06:00
jahooma
4d0646a200 Add payout if MKT. Current value uses MKT payout. 2022-01-03 23:44:58 -06:00
jahooma
24e873b6de Show "sold for" under sale price / payout column. Outcome label to new file 2022-01-03 12:56:02 -06:00
jahooma
f7d4926d22 Update to show sale price in column 2022-01-03 00:57:25 -06:00
mantikoros
907acec601
Mkt resolution 2: Enable MKT resolution (#16)
* new standard resolution; contract.totalBets; MKT resolution

* recalculate script

* enable resolve MKT

* different approach to resolve MKT

* comment out init

* Count payouts for bets with exluded sales

Co-authored-by: jahooma <jahooma@gmail.com>
2022-01-02 00:27:58 -06:00
jahooma
0b9b2396f1 Est. Max Payout => Shares in bet table 2021-12-31 14:13:06 -06:00
jahooma
a902dfebca Fit long names on mobile 2021-12-24 16:29:24 -05:00
mantikoros
f48ae0170b
Sell bets (#12)
* sell bet

* dev mode

* single-pot no-refund payoff; bet selling

* Increase default fetch size 25 -> 99

* Fix about page numbering

* Don't flash no markets when loading on tag page.

* Change Title to use body font

* Make a bunch of predictions at once (#9)

* Set up a page to make bulk predictions

* Integrate preview into the same card

* List created predictions

* Make changes per James's comments

* Increase the starting balance (#11)

* Remove references to paying for our Mantic Dollars

* Update simulator to use new calculations

* Change simulator random to be evenly random again

* Sell bet UI

* Migrate contracts and bets script

* Add comment to script

* bets => trades; exclude sold bets

* change sale formula

* Change current value to uncapped sell value.

* Disable sell button while selling

* Update some 'bet' to 'trade'

Co-authored-by: Austin Chen <akrolsmir@gmail.com>
Co-authored-by: jahooma <jahooma@gmail.com>
2021-12-24 15:06:01 -06:00
jahooma
4b3b6436a0 Improve navbar styles. Create Page component with navbar and page structure. 2021-12-19 22:06:30 -06:00
jahooma
6efdf46bb3 Don't show "No markets found" when loading markets 2021-12-19 14:40:54 -06:00
jahooma
b87e751b2d Improve spacing on landing-page, about faq. 2021-12-18 23:44:08 -06:00
jahooma
77291956bc Display N/A instead of cancel 2021-12-18 18:37:37 -06:00
jahooma
86e323bf25 Fix collapse carrot positioning... 2021-12-18 18:11:40 -06:00
jahooma
5be7ce5f8f Standardize spacing across pages. 2021-12-18 17:42:06 -06:00
Austin Chen
1851b20f42 Fix /bets page 2021-12-18 02:37:26 -08:00
Austin Chen
802f376042 Add a message for empty markets and bets 2021-12-18 02:28:01 -08:00
Austin Chen
77e15e3aa8 Denormalize username to each contract 2021-12-17 23:27:29 -08:00
jahooma
112a42406e Add simple bets page 2021-12-17 17:40:20 -06:00
mantikoros
03a3df261c contract slugs 2021-12-17 17:16:42 -06:00
jahooma
1c4a834696 Bring back collapse animation by moving padding from card. 2021-12-16 22:27:22 -06:00
jahooma
ad2f080c6e Improve layout of bets card 2021-12-16 15:51:47 -06:00
mantikoros
985621982b bets wording 2021-12-16 15:35:19 -06:00
jahooma
06f1657a4c Stop link click propogation 2021-12-16 15:28:58 -06:00
jahooma
21d0eca49f Collapsable bets, with bet table collapsed by default 2021-12-16 15:22:00 -06:00