prediction-market-agent-tooling 0.61.1__py3-none-any.whl → 0.61.1.dev461__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- prediction_market_agent_tooling/deploy/agent.py +4 -5
- prediction_market_agent_tooling/deploy/betting_strategy.py +53 -69
- prediction_market_agent_tooling/gtypes.py +105 -27
- prediction_market_agent_tooling/jobs/jobs_models.py +5 -7
- prediction_market_agent_tooling/jobs/omen/omen_jobs.py +13 -17
- prediction_market_agent_tooling/markets/agent_market.py +96 -52
- prediction_market_agent_tooling/markets/blockchain_utils.py +1 -27
- prediction_market_agent_tooling/markets/data_models.py +40 -44
- prediction_market_agent_tooling/markets/manifold/api.py +2 -6
- prediction_market_agent_tooling/markets/manifold/data_models.py +33 -25
- prediction_market_agent_tooling/markets/manifold/manifold.py +8 -11
- prediction_market_agent_tooling/markets/market_fees.py +4 -2
- prediction_market_agent_tooling/markets/omen/data_models.py +66 -57
- prediction_market_agent_tooling/markets/omen/omen.py +214 -249
- prediction_market_agent_tooling/markets/omen/omen_contracts.py +31 -29
- prediction_market_agent_tooling/markets/omen/omen_resolving.py +7 -14
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +20 -14
- prediction_market_agent_tooling/markets/polymarket/data_models.py +3 -3
- prediction_market_agent_tooling/markets/polymarket/data_models_web.py +4 -4
- prediction_market_agent_tooling/markets/polymarket/polymarket.py +3 -5
- prediction_market_agent_tooling/markets/seer/data_models.py +8 -8
- prediction_market_agent_tooling/markets/seer/seer.py +85 -71
- prediction_market_agent_tooling/markets/seer/seer_contracts.py +10 -5
- prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py +5 -2
- prediction_market_agent_tooling/monitor/monitor.py +2 -2
- prediction_market_agent_tooling/tools/_generic_value.py +246 -0
- prediction_market_agent_tooling/tools/balances.py +9 -11
- prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +12 -10
- prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +27 -24
- prediction_market_agent_tooling/tools/betting_strategies/utils.py +3 -1
- prediction_market_agent_tooling/tools/contract.py +14 -10
- prediction_market_agent_tooling/tools/cow/cow_manager.py +3 -4
- prediction_market_agent_tooling/tools/cow/cow_order.py +3 -4
- prediction_market_agent_tooling/tools/langfuse_client_utils.py +13 -1
- prediction_market_agent_tooling/tools/omen/sell_positions.py +6 -3
- prediction_market_agent_tooling/tools/safe.py +5 -6
- prediction_market_agent_tooling/tools/tokens/auto_deposit.py +32 -30
- prediction_market_agent_tooling/tools/tokens/auto_withdraw.py +5 -22
- prediction_market_agent_tooling/tools/tokens/main_token.py +2 -2
- prediction_market_agent_tooling/tools/tokens/token_utils.py +46 -0
- prediction_market_agent_tooling/tools/tokens/usd.py +63 -0
- prediction_market_agent_tooling/tools/utils.py +14 -8
- prediction_market_agent_tooling/tools/web3_utils.py +24 -41
- {prediction_market_agent_tooling-0.61.1.dist-info → prediction_market_agent_tooling-0.61.1.dev461.dist-info}/METADATA +2 -1
- {prediction_market_agent_tooling-0.61.1.dist-info → prediction_market_agent_tooling-0.61.1.dev461.dist-info}/RECORD +48 -45
- {prediction_market_agent_tooling-0.61.1.dist-info → prediction_market_agent_tooling-0.61.1.dev461.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.61.1.dist-info → prediction_market_agent_tooling-0.61.1.dev461.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.61.1.dist-info → prediction_market_agent_tooling-0.61.1.dev461.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
from prediction_market_agent_tooling.gtypes import
|
1
|
+
from prediction_market_agent_tooling.gtypes import xDai
|
2
2
|
from prediction_market_agent_tooling.markets.omen.omen_constants import (
|
3
3
|
WRAPPED_XDAI_CONTRACT_ADDRESS,
|
4
4
|
)
|
@@ -15,4 +15,4 @@ KEEPING_ERC20_TOKEN = ContractDepositableWrapperERC20OnGnosisChain(
|
|
15
15
|
address=WRAPPED_XDAI_CONTRACT_ADDRESS
|
16
16
|
)
|
17
17
|
|
18
|
-
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES =
|
18
|
+
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES = xDai(0.1)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
from eth_typing.evm import ChecksumAddress
|
2
|
+
from web3 import Web3
|
3
|
+
|
4
|
+
from prediction_market_agent_tooling.gtypes import ChecksumAddress, Wei
|
5
|
+
from prediction_market_agent_tooling.tools.contract import (
|
6
|
+
ContractERC4626BaseClass,
|
7
|
+
init_collateral_token_contract,
|
8
|
+
to_gnosis_chain_contract,
|
9
|
+
)
|
10
|
+
from prediction_market_agent_tooling.tools.cow.cow_order import get_buy_token_amount
|
11
|
+
|
12
|
+
|
13
|
+
def convert_to_another_token(
|
14
|
+
amount: Wei,
|
15
|
+
from_token: ChecksumAddress,
|
16
|
+
to_token: ChecksumAddress,
|
17
|
+
web3: Web3 | None = None,
|
18
|
+
) -> Wei:
|
19
|
+
from_token_contract = to_gnosis_chain_contract(
|
20
|
+
init_collateral_token_contract(from_token, web3)
|
21
|
+
)
|
22
|
+
to_token_contract = to_gnosis_chain_contract(
|
23
|
+
init_collateral_token_contract(to_token, web3)
|
24
|
+
)
|
25
|
+
|
26
|
+
if from_token == to_token:
|
27
|
+
return amount
|
28
|
+
|
29
|
+
elif (
|
30
|
+
isinstance(to_token_contract, ContractERC4626BaseClass)
|
31
|
+
and to_token_contract.get_asset_token_contract().address == from_token
|
32
|
+
):
|
33
|
+
return to_token_contract.convertToShares(amount)
|
34
|
+
|
35
|
+
elif (
|
36
|
+
isinstance(from_token_contract, ContractERC4626BaseClass)
|
37
|
+
and from_token_contract.get_asset_token_contract().address == to_token
|
38
|
+
):
|
39
|
+
return from_token_contract.convertToAssets(amount)
|
40
|
+
|
41
|
+
else:
|
42
|
+
return get_buy_token_amount(
|
43
|
+
amount,
|
44
|
+
from_token,
|
45
|
+
to_token,
|
46
|
+
)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
from cachetools import TTLCache, cached
|
2
|
+
from eth_typing.evm import ChecksumAddress
|
3
|
+
|
4
|
+
from prediction_market_agent_tooling.gtypes import (
|
5
|
+
USD,
|
6
|
+
ChecksumAddress,
|
7
|
+
OutcomeToken,
|
8
|
+
Token,
|
9
|
+
xDai,
|
10
|
+
)
|
11
|
+
from prediction_market_agent_tooling.markets.omen.omen_constants import (
|
12
|
+
SDAI_CONTRACT_ADDRESS,
|
13
|
+
WRAPPED_XDAI_CONTRACT_ADDRESS,
|
14
|
+
)
|
15
|
+
from prediction_market_agent_tooling.tools.contract import ContractERC4626OnGnosisChain
|
16
|
+
from prediction_market_agent_tooling.tools.cow.cow_order import get_buy_token_amount
|
17
|
+
|
18
|
+
|
19
|
+
def get_usd_in_xdai(amount: USD) -> xDai:
|
20
|
+
# xDai is stable coin against USD, so for simplicity we just cast it.
|
21
|
+
return xDai(amount.value)
|
22
|
+
|
23
|
+
|
24
|
+
def get_xdai_in_usd(amount: xDai) -> USD:
|
25
|
+
# xDai is stable coin against USD, so for simplicity we just cast it.
|
26
|
+
return USD(amount.value)
|
27
|
+
|
28
|
+
|
29
|
+
def get_usd_in_token(amount: USD, token_address: ChecksumAddress) -> Token:
|
30
|
+
rate = get_single_token_unit_to_usd_rate(token_address)
|
31
|
+
return Token(amount.value / rate.value)
|
32
|
+
|
33
|
+
|
34
|
+
def get_token_in_usd(
|
35
|
+
amount: Token | OutcomeToken, token_address: ChecksumAddress
|
36
|
+
) -> USD:
|
37
|
+
rate = get_single_token_unit_to_usd_rate(token_address)
|
38
|
+
return USD(amount.value * rate.value)
|
39
|
+
|
40
|
+
|
41
|
+
# A short cache to not spam CoW and prevent timeouts, but still have relatively fresh data.
|
42
|
+
RATE_CACHE: TTLCache[ChecksumAddress, USD] = TTLCache(maxsize=100, ttl=5 * 60)
|
43
|
+
|
44
|
+
|
45
|
+
@cached(RATE_CACHE)
|
46
|
+
def get_single_token_unit_to_usd_rate(token_address: ChecksumAddress) -> USD:
|
47
|
+
# (w)xDai is a stable coin against USD, so use it to estimate USD worth.
|
48
|
+
if WRAPPED_XDAI_CONTRACT_ADDRESS == token_address:
|
49
|
+
return USD(1.0)
|
50
|
+
# sDai is ERC4626 with wxDai as asset, we can take the rate directly from there instead of calling CoW.
|
51
|
+
if SDAI_CONTRACT_ADDRESS == token_address:
|
52
|
+
return USD(
|
53
|
+
ContractERC4626OnGnosisChain(address=SDAI_CONTRACT_ADDRESS)
|
54
|
+
.convertToAssets(Token(1).as_wei)
|
55
|
+
.as_token.value
|
56
|
+
)
|
57
|
+
in_wei = get_buy_token_amount(
|
58
|
+
amount_wei=Token(1).as_wei,
|
59
|
+
sell_token=token_address,
|
60
|
+
buy_token=WRAPPED_XDAI_CONTRACT_ADDRESS,
|
61
|
+
)
|
62
|
+
in_token = in_wei.as_token
|
63
|
+
return USD(in_token.value)
|
@@ -9,7 +9,13 @@ from pydantic import BaseModel, ValidationError
|
|
9
9
|
from scipy.optimize import newton
|
10
10
|
from scipy.stats import entropy
|
11
11
|
|
12
|
-
from prediction_market_agent_tooling.gtypes import
|
12
|
+
from prediction_market_agent_tooling.gtypes import (
|
13
|
+
DatetimeUTC,
|
14
|
+
OutcomeToken,
|
15
|
+
Probability,
|
16
|
+
SecretStr,
|
17
|
+
Token,
|
18
|
+
)
|
13
19
|
from prediction_market_agent_tooling.loggers import logger
|
14
20
|
from prediction_market_agent_tooling.markets.market_fees import MarketFees
|
15
21
|
|
@@ -182,11 +188,11 @@ def prob_uncertainty(prob: Probability) -> float:
|
|
182
188
|
|
183
189
|
|
184
190
|
def calculate_sell_amount_in_collateral(
|
185
|
-
shares_to_sell:
|
186
|
-
holdings:
|
187
|
-
other_holdings:
|
191
|
+
shares_to_sell: OutcomeToken,
|
192
|
+
holdings: OutcomeToken,
|
193
|
+
other_holdings: OutcomeToken,
|
188
194
|
fees: MarketFees,
|
189
|
-
) ->
|
195
|
+
) -> Token:
|
190
196
|
"""
|
191
197
|
Computes the amount of collateral that needs to be sold to get `shares`
|
192
198
|
amount of shares. Returns None if the amount can't be computed.
|
@@ -199,11 +205,11 @@ def calculate_sell_amount_in_collateral(
|
|
199
205
|
raise ValueError("All share args must be greater than 0")
|
200
206
|
|
201
207
|
def f(r: float) -> float:
|
202
|
-
R = (r + fees.absolute) / (1 - fees.bet_proportion)
|
208
|
+
R = OutcomeToken((r + fees.absolute) / (1 - fees.bet_proportion))
|
203
209
|
first_term = other_holdings - R
|
204
210
|
second_term = holdings + shares_to_sell - R
|
205
211
|
third_term = holdings * other_holdings
|
206
|
-
return (first_term * second_term) - third_term
|
212
|
+
return ((first_term * second_term) - third_term).value
|
207
213
|
|
208
214
|
amount_to_sell = newton(f, 0)
|
209
|
-
return float(amount_to_sell) * 0.999999 # Avoid rounding errors
|
215
|
+
return Token(float(amount_to_sell) * 0.999999) # Avoid rounding errors
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import binascii
|
2
2
|
import secrets
|
3
|
-
from typing import Any, Optional
|
3
|
+
from typing import Any, Optional
|
4
4
|
|
5
5
|
import base58
|
6
6
|
import tenacity
|
@@ -11,7 +11,7 @@ from safe_eth.eth import EthereumClient
|
|
11
11
|
from safe_eth.safe.safe import SafeV141
|
12
12
|
from web3 import Web3
|
13
13
|
from web3.constants import HASH_ZERO
|
14
|
-
from web3.types import AccessList, AccessListEntry, Nonce, TxParams, TxReceipt
|
14
|
+
from web3.types import AccessList, AccessListEntry, Nonce, TxParams, TxReceipt
|
15
15
|
|
16
16
|
from prediction_market_agent_tooling.gtypes import (
|
17
17
|
ABI,
|
@@ -23,12 +23,13 @@ from prediction_market_agent_tooling.gtypes import (
|
|
23
23
|
PrivateKey,
|
24
24
|
private_key_type,
|
25
25
|
xDai,
|
26
|
-
|
26
|
+
xDaiWei,
|
27
27
|
)
|
28
28
|
from prediction_market_agent_tooling.loggers import logger
|
29
|
+
from prediction_market_agent_tooling.tools._generic_value import _GenericValue
|
29
30
|
|
30
31
|
ONE_NONCE = Nonce(1)
|
31
|
-
ONE_XDAI =
|
32
|
+
ONE_XDAI = xDai(1)
|
32
33
|
ZERO_BYTES = HexBytes(HASH_ZERO)
|
33
34
|
NOT_REVERTED_ICASE_REGEX_PATTERN = "(?i)(?!.*reverted.*)"
|
34
35
|
|
@@ -42,17 +43,6 @@ def private_key_to_public_key(private_key: SecretStr) -> ChecksumAddress:
|
|
42
43
|
return verify_address(account.address)
|
43
44
|
|
44
45
|
|
45
|
-
def wei_to_xdai(wei: Wei) -> xDai:
|
46
|
-
return xDai(float(Web3.from_wei(wei, "ether")))
|
47
|
-
|
48
|
-
|
49
|
-
def xdai_to_wei(native: xDai) -> Wei:
|
50
|
-
return Web3.to_wei(native, "ether")
|
51
|
-
|
52
|
-
|
53
|
-
RemoveOrAddFractionAmountType = TypeVar("RemoveOrAddFractionAmountType", bound=int)
|
54
|
-
|
55
|
-
|
56
46
|
def verify_address(address: str) -> ChecksumAddress:
|
57
47
|
if not Web3.is_checksum_address(address):
|
58
48
|
raise ValueError(
|
@@ -61,26 +51,6 @@ def verify_address(address: str) -> ChecksumAddress:
|
|
61
51
|
return ChecksumAddress(HexAddress(HexStr(address)))
|
62
52
|
|
63
53
|
|
64
|
-
def remove_fraction(
|
65
|
-
amount: RemoveOrAddFractionAmountType, fraction: float
|
66
|
-
) -> RemoveOrAddFractionAmountType:
|
67
|
-
"""Removes the given fraction from the given integer-bounded amount and returns the value as an original type."""
|
68
|
-
if 0 <= fraction <= 1:
|
69
|
-
keep_percentage = 1 - fraction
|
70
|
-
return type(amount)(int(amount * keep_percentage))
|
71
|
-
raise ValueError(f"The given fraction {fraction!r} is not in the range [0, 1].")
|
72
|
-
|
73
|
-
|
74
|
-
def add_fraction(
|
75
|
-
amount: RemoveOrAddFractionAmountType, fraction: float
|
76
|
-
) -> RemoveOrAddFractionAmountType:
|
77
|
-
"""Adds the given fraction to the given integer-bounded amount and returns the value as an original type."""
|
78
|
-
if 0 <= fraction <= 1:
|
79
|
-
keep_percentage = 1 + fraction
|
80
|
-
return type(amount)(int(amount * keep_percentage))
|
81
|
-
raise ValueError(f"The given fraction {fraction!r} is not in the range [0, 1].")
|
82
|
-
|
83
|
-
|
84
54
|
def check_tx_receipt(receipt: TxReceipt) -> None:
|
85
55
|
if receipt["status"] != 1:
|
86
56
|
raise ValueError(
|
@@ -88,7 +58,20 @@ def check_tx_receipt(receipt: TxReceipt) -> None:
|
|
88
58
|
)
|
89
59
|
|
90
60
|
|
61
|
+
def unwrap_generic_value(value: Any) -> Any:
|
62
|
+
if value is None:
|
63
|
+
return None
|
64
|
+
if isinstance(value, _GenericValue):
|
65
|
+
return value.value
|
66
|
+
elif isinstance(value, list):
|
67
|
+
return [unwrap_generic_value(v) for v in value]
|
68
|
+
elif isinstance(value, dict):
|
69
|
+
return {k: unwrap_generic_value(v) for k, v in value.items()}
|
70
|
+
return value
|
71
|
+
|
72
|
+
|
91
73
|
def parse_function_params(params: Optional[list[Any] | dict[str, Any]]) -> list[Any]:
|
74
|
+
params = unwrap_generic_value(params)
|
92
75
|
if params is None:
|
93
76
|
return []
|
94
77
|
if isinstance(params, list):
|
@@ -172,8 +155,8 @@ def _prepare_tx_params(
|
|
172
155
|
# Don't retry on `reverted` messages, as they would always fail again.
|
173
156
|
# TODO: Check this, see https://github.com/gnosis/prediction-market-agent-tooling/issues/625.
|
174
157
|
# retry=tenacity.retry_if_exception_message(match=NOT_REVERTED_ICASE_REGEX_PATTERN),
|
175
|
-
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1,
|
176
|
-
stop=tenacity.stop_after_attempt(
|
158
|
+
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1, 6)]),
|
159
|
+
stop=tenacity.stop_after_attempt(5),
|
177
160
|
after=lambda x: logger.debug(
|
178
161
|
f"send_function_on_contract_tx failed, {x.attempt_number=}."
|
179
162
|
),
|
@@ -210,7 +193,7 @@ def send_function_on_contract_tx(
|
|
210
193
|
# Don't retry on `reverted` messages, as they would always fail again.
|
211
194
|
# TODO: Check this, see https://github.com/gnosis/prediction-market-agent-tooling/issues/625.
|
212
195
|
# retry=tenacity.retry_if_exception_message(match=NOT_REVERTED_ICASE_REGEX_PATTERN),
|
213
|
-
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1,
|
196
|
+
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1, 6)]),
|
214
197
|
stop=tenacity.stop_after_attempt(5),
|
215
198
|
after=lambda x: logger.debug(
|
216
199
|
f"send_function_on_contract_tx_using_safe failed, {x.attempt_number=}."
|
@@ -307,14 +290,14 @@ def send_xdai_to(
|
|
307
290
|
web3: Web3,
|
308
291
|
from_private_key: PrivateKey,
|
309
292
|
to_address: ChecksumAddress,
|
310
|
-
value:
|
293
|
+
value: xDaiWei,
|
311
294
|
data_text: Optional[str | bytes] = None,
|
312
295
|
tx_params: Optional[TxParams] = None,
|
313
296
|
timeout: int = 180,
|
314
297
|
) -> TxReceipt:
|
315
298
|
from_address = private_key_to_public_key(from_private_key)
|
316
299
|
|
317
|
-
tx_params_new: TxParams = {"value": value, "to": to_address}
|
300
|
+
tx_params_new: TxParams = {"value": value.value, "to": to_address}
|
318
301
|
if data_text is not None:
|
319
302
|
tx_params_new["data"] = (
|
320
303
|
Web3.to_bytes(text=data_text)
|
@@ -360,7 +343,7 @@ def byte32_to_ipfscidv0(hex: HexBytes) -> IPFSCIDVersion0:
|
|
360
343
|
|
361
344
|
|
362
345
|
@tenacity.retry(
|
363
|
-
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1,
|
346
|
+
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1, 6)]),
|
364
347
|
stop=tenacity.stop_after_attempt(5),
|
365
348
|
after=lambda x: logger.debug(
|
366
349
|
f"get_receipt_block_timestamp failed, {x.attempt_number=}."
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: prediction-market-agent-tooling
|
3
|
-
Version: 0.61.1
|
3
|
+
Version: 0.61.1.dev461
|
4
4
|
Summary: Tools to benchmark, deploy and monitor prediction market agents.
|
5
5
|
Author: Gnosis
|
6
6
|
Requires-Python: >=3.10,<3.13
|
@@ -56,6 +56,7 @@ Requires-Dist: tabulate (>=0.9.0,<0.10.0)
|
|
56
56
|
Requires-Dist: tavily-python (>=0.5.0,<0.6.0)
|
57
57
|
Requires-Dist: tqdm (>=4.66.2,<5.0.0)
|
58
58
|
Requires-Dist: typer (>=0.9.0,<1.0.0)
|
59
|
+
Requires-Dist: types-cachetools (>=5.5.0.20240820,<6.0.0.0)
|
59
60
|
Requires-Dist: types-python-dateutil (>=2.9.0.20240906,<3.0.0.0)
|
60
61
|
Requires-Dist: types-pytz (>=2024.1.0.20240203,<2025.0.0.0)
|
61
62
|
Requires-Dist: types-requests (>=2.31.0.0,<3.0.0.0)
|
@@ -21,72 +21,73 @@ prediction_market_agent_tooling/benchmark/agents.py,sha256=B1-uWdyeN4GGKMWGK_-Cc
|
|
21
21
|
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=MqTiaaJ3cYiOLUVR7OyImLWxcEya3Rl5JyFYW-K0lwM,17097
|
22
22
|
prediction_market_agent_tooling/benchmark/utils.py,sha256=D0MfUkVZllmvcU0VOurk9tcKT7JTtwwOp-63zuCBVuc,2880
|
23
23
|
prediction_market_agent_tooling/config.py,sha256=So5l8KbgmzcCpxzzf13TNrEJPu_4iQnUDhzus6XRvSc,10151
|
24
|
-
prediction_market_agent_tooling/deploy/agent.py,sha256=
|
24
|
+
prediction_market_agent_tooling/deploy/agent.py,sha256=DW9edzHDX7QVURMGyOoIHTIvl3Itpbi8i0l5XPrEkbk,24974
|
25
25
|
prediction_market_agent_tooling/deploy/agent_example.py,sha256=dIIdZashExWk9tOdyDjw87AuUcGyM7jYxNChYrVK2dM,1001
|
26
|
-
prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=
|
26
|
+
prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=v0t5Z2NWnDQ4xI28tg3STxWXg1xaDvToRWOiuky0qlw,12454
|
27
27
|
prediction_market_agent_tooling/deploy/constants.py,sha256=M5ty8URipYMGe_G-RzxRydK3AFL6CyvmqCraJUrLBnE,82
|
28
28
|
prediction_market_agent_tooling/deploy/gcp/deploy.py,sha256=CYUgnfy-9XVk04kkxA_5yp0GE9Mw5caYqlFUZQ2j3ks,3739
|
29
29
|
prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py,sha256=OsPboCFGiZKsvGyntGZHwdqPlLTthITkNF5rJFvGgU8,2582
|
30
30
|
prediction_market_agent_tooling/deploy/gcp/utils.py,sha256=WI2ycX1X-IlTRoNoG4ggFlRwPL28kwM9VGDFD2fePLo,5699
|
31
31
|
prediction_market_agent_tooling/deploy/trade_interval.py,sha256=Xk9j45alQ_vrasGvsNyuW70XHIQ7wfvjoxNR3F6HYCw,1155
|
32
|
-
prediction_market_agent_tooling/gtypes.py,sha256=
|
32
|
+
prediction_market_agent_tooling/gtypes.py,sha256=FKIv4Ca0BGp9_FXTGt_ipbrQvwvQoWf2TG59LG3rYuw,5469
|
33
33
|
prediction_market_agent_tooling/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
prediction_market_agent_tooling/jobs/jobs_models.py,sha256=
|
35
|
-
prediction_market_agent_tooling/jobs/omen/omen_jobs.py,sha256=
|
34
|
+
prediction_market_agent_tooling/jobs/jobs_models.py,sha256=8vYafsK1cqMWQtjBoq9rruroF84xAVD00vBTMWH6QMg,2166
|
35
|
+
prediction_market_agent_tooling/jobs/omen/omen_jobs.py,sha256=Pf6QxPXGyie-2l_wZUjaGPTjZTlpv50_JhP40mULBaU,5048
|
36
36
|
prediction_market_agent_tooling/loggers.py,sha256=MvCkQSJL2_0yErNatqr81sJlc4aOgPzDp9VNrIhKUcc,4140
|
37
|
-
prediction_market_agent_tooling/markets/agent_market.py,sha256=
|
37
|
+
prediction_market_agent_tooling/markets/agent_market.py,sha256=jbKkXDFy13f9-Gx4KoF2JsfDudqQtrVMIxCh7tY_2L0,14662
|
38
38
|
prediction_market_agent_tooling/markets/base_subgraph_handler.py,sha256=7RaYO_4qAmQ6ZGM8oPK2-CkiJfKmV9MxM-rJlduaecU,1971
|
39
|
-
prediction_market_agent_tooling/markets/blockchain_utils.py,sha256=
|
39
|
+
prediction_market_agent_tooling/markets/blockchain_utils.py,sha256=1iTU_D-Uof0E442qVUhSBCfc1rJNQpDcd3UjSnilYZg,2129
|
40
40
|
prediction_market_agent_tooling/markets/categorize.py,sha256=jsoHWvZk9pU6n17oWSCcCxNNYVwlb_NXsZxKRI7vmsk,1301
|
41
|
-
prediction_market_agent_tooling/markets/data_models.py,sha256=
|
41
|
+
prediction_market_agent_tooling/markets/data_models.py,sha256=cFjSPeT3W2YBWrVE6fvGHkwpdR6y4w91WftZsYrRKv0,4431
|
42
42
|
prediction_market_agent_tooling/markets/manifold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
|
-
prediction_market_agent_tooling/markets/manifold/api.py,sha256=
|
44
|
-
prediction_market_agent_tooling/markets/manifold/data_models.py,sha256=
|
45
|
-
prediction_market_agent_tooling/markets/manifold/manifold.py,sha256=
|
43
|
+
prediction_market_agent_tooling/markets/manifold/api.py,sha256=ih92UTZdSbmy6tTUgSCps_HqYQXpMSsfne5Np5znVEM,7217
|
44
|
+
prediction_market_agent_tooling/markets/manifold/data_models.py,sha256=bUI4b0N-gBid7wkzRECCgQ-Oco0-l9n1YI8xjLXvuhw,6274
|
45
|
+
prediction_market_agent_tooling/markets/manifold/manifold.py,sha256=P4m1lJ_RRzE4iozwdkrGbAJawDRAx2dCjgnEAyRJnUI,4749
|
46
46
|
prediction_market_agent_tooling/markets/manifold/utils.py,sha256=_gGlWid0sPF127Omx5qQ1fq17frLInv0wdyXJBMGVzM,670
|
47
|
-
prediction_market_agent_tooling/markets/market_fees.py,sha256=
|
47
|
+
prediction_market_agent_tooling/markets/market_fees.py,sha256=NFLvpMIyfNzeGnN3ziXacrBAA7yeI_Psw-_BRwPTLAw,1289
|
48
48
|
prediction_market_agent_tooling/markets/markets.py,sha256=OMADWd1C5wD7sVdcY_GVdxAFDndkU9kn6Ble4GXCw0c,4045
|
49
49
|
prediction_market_agent_tooling/markets/metaculus/api.py,sha256=4TRPGytQQbSdf42DCg2M_JWYPAuNjqZ3eBqaQBLkNks,2736
|
50
50
|
prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=FaBCTPPezXbBwZ9p791CiVgQ4vB696xnMbz9XVXmiVI,3267
|
51
51
|
prediction_market_agent_tooling/markets/metaculus/metaculus.py,sha256=86TIx6cavEWc8Cv4KpZxSvwiSw9oFybXE3YB49pg-CA,4377
|
52
52
|
prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
|
-
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=
|
54
|
-
prediction_market_agent_tooling/markets/omen/omen.py,sha256=
|
53
|
+
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=zJIp3i1ujRq0YpEtaotAiyNuz0N0AVwQgWZvgO8rDGU,29109
|
54
|
+
prediction_market_agent_tooling/markets/omen/omen.py,sha256=X6Uqr8s0tseDu2fPKDdFzR7U1zxmoxtiJz5zB2Nr--Q,51428
|
55
55
|
prediction_market_agent_tooling/markets/omen/omen_constants.py,sha256=D9oflYKafLQiHYtB5sScMHqmXyzM8JP8J0yATmc4SQQ,233
|
56
|
-
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=
|
57
|
-
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=
|
58
|
-
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=
|
56
|
+
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=bCC9A7ZTJxMDJcPbl3jof6HcAGGHv1BrFq3RRWbkQ_c,28739
|
57
|
+
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=Cyi9Ci-Z-K8WCZWVLs9oSuJC6qRobi_CpqDCno_5F-0,10238
|
58
|
+
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=6N6RJ-noC7gkoDBeYdBSXp1QI3u4iftBLu8Dtew9yU4,39017
|
59
59
|
prediction_market_agent_tooling/markets/polymarket/api.py,sha256=UZ4_TG8ceb9Y-qgsOKs8Qiv8zDt957QkT8IX2c83yqo,4800
|
60
|
-
prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=
|
61
|
-
prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=
|
62
|
-
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=
|
60
|
+
prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=utGN-Lhjsa-RHX5WW_jcqgWXtRkEZn0JemwYZkt3Lng,4344
|
61
|
+
prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=LVEsNw2nUx5poiU1m803NNqG5-fs8-MODQRyGLqy4mE,12585
|
62
|
+
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=A4TnNVLOdlOGBoxHV_KxIDfkziUiw4vqCTOFfDXFpAY,3319
|
63
63
|
prediction_market_agent_tooling/markets/polymarket/utils.py,sha256=8kTeVjXPcXC6DkDvWYsZQLY7x8DS6CEp_yznSEazsNU,2037
|
64
|
-
prediction_market_agent_tooling/markets/seer/data_models.py,sha256=
|
65
|
-
prediction_market_agent_tooling/markets/seer/seer.py,sha256=
|
66
|
-
prediction_market_agent_tooling/markets/seer/seer_contracts.py,sha256=
|
67
|
-
prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py,sha256=
|
64
|
+
prediction_market_agent_tooling/markets/seer/data_models.py,sha256=jk7sIA7dwPbwK2y7xx9PbCp2i8OQ1hCyv8Qse42jzss,8172
|
65
|
+
prediction_market_agent_tooling/markets/seer/seer.py,sha256=WBMKNICykhzwpEgExbnig8MlCGogE2p4E0DagK8yDbg,13119
|
66
|
+
prediction_market_agent_tooling/markets/seer/seer_contracts.py,sha256=XOEhaL5wrKEg7P-xg1mW5mJXVfeALuflJOvqAeuwrWM,2717
|
67
|
+
prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py,sha256=o5Sh_6bpiJQb1KnW3rf4cBqN2PM8IdggQARdBeDMvIE,8725
|
68
68
|
prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py,sha256=fjIgjDIx5MhH5mwf7S0cspLOOSU3elYLhGYoIiM26mU,2746
|
69
69
|
prediction_market_agent_tooling/monitor/markets/manifold.py,sha256=TS4ERwTfQnot8dhekNyVNhJYf5ysYsjF-9v5_kM3aVI,3334
|
70
70
|
prediction_market_agent_tooling/monitor/markets/metaculus.py,sha256=LOnyWWBFdg10-cTWdb76nOsNjDloO8OfMT85GBzRCFI,1455
|
71
71
|
prediction_market_agent_tooling/monitor/markets/omen.py,sha256=EqiJYTvDbSu7fBpbrBmCuf3fc6GHr4MxWrBGa69MIyc,3305
|
72
72
|
prediction_market_agent_tooling/monitor/markets/polymarket.py,sha256=wak8o4BYaGbLpshQD12OrsqNABdanyID6ql95lEG2io,1870
|
73
|
-
prediction_market_agent_tooling/monitor/monitor.py,sha256=
|
73
|
+
prediction_market_agent_tooling/monitor/monitor.py,sha256=yvSXwV-3DSAm3vsFZnFC9jEQzlaB9KUOxI6pOyNKGQk,14147
|
74
74
|
prediction_market_agent_tooling/monitor/monitor_app.py,sha256=-_6w_ZvQ-Ad5qaeuo7NKTXUOOZ_6OrR8jMe25BGOY4k,4615
|
75
75
|
prediction_market_agent_tooling/monitor/monitor_settings.py,sha256=Xiozs3AsufuJ04JOe1vjUri-IAMWHjjmc2ugGGiHNH4,947
|
76
76
|
prediction_market_agent_tooling/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
|
-
prediction_market_agent_tooling/tools/
|
78
|
-
prediction_market_agent_tooling/tools/
|
79
|
-
prediction_market_agent_tooling/tools/betting_strategies/
|
77
|
+
prediction_market_agent_tooling/tools/_generic_value.py,sha256=F0eMEsMqaL96Vwb57o7lsTnoMBSgqA0tFYesjw3fHto,9951
|
78
|
+
prediction_market_agent_tooling/tools/balances.py,sha256=9MpTTnquwjflTYYo1e0w48iOTceBuQV_6PfvywrTlFk,989
|
79
|
+
prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py,sha256=cui0wc7InSG-GdFvrJ3ypxAvHBTnv7UAFR6QOm6pI8A,4813
|
80
|
+
prediction_market_agent_tooling/tools/betting_strategies/market_moving.py,sha256=uG11UAzM6C0ZKTS7SyT1iVsTs6O13y8_o8RAtm29HFg,5432
|
80
81
|
prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py,sha256=-FUSuQQgjcWSSnoFxnlAyTeilY6raJABJVM2QKkFqAY,438
|
81
82
|
prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py,sha256=THMXwFlskvzbjnX_OiYtDSzI8XVFyULWfP2525_9UGc,429
|
82
|
-
prediction_market_agent_tooling/tools/betting_strategies/utils.py,sha256=
|
83
|
+
prediction_market_agent_tooling/tools/betting_strategies/utils.py,sha256=7CwImollCwQlA7hVsRdaorU9iW-1Ez7HKThNC4Zy2vs,155
|
83
84
|
prediction_market_agent_tooling/tools/caches/db_cache.py,sha256=dB8LNs2JvVRaFCeAKRmIQRwiirsMgtL31he8051wM-g,11431
|
84
85
|
prediction_market_agent_tooling/tools/caches/inmemory_cache.py,sha256=ZW5iI5rmjqeAebu5T7ftRnlkxiL02IC-MxCfDB80x7w,1506
|
85
86
|
prediction_market_agent_tooling/tools/caches/serializers.py,sha256=vFDx4fsPxclXp2q0sv27j4al_M_Tj9aR2JJP-xNHQXA,2151
|
86
|
-
prediction_market_agent_tooling/tools/contract.py,sha256=
|
87
|
+
prediction_market_agent_tooling/tools/contract.py,sha256=K9i7J4F7gt6saoKT3tx5S-fPYVh-eCliJpg2T1eNBWo,20998
|
87
88
|
prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_oEO_H16jRVCdoZ93Uw,954
|
88
|
-
prediction_market_agent_tooling/tools/cow/cow_manager.py,sha256=
|
89
|
-
prediction_market_agent_tooling/tools/cow/cow_order.py,sha256=
|
89
|
+
prediction_market_agent_tooling/tools/cow/cow_manager.py,sha256=F6T4SlKDQ06nwz3W2wVBr0VqgVvdb4Wphf-kI31W4ms,3792
|
90
|
+
prediction_market_agent_tooling/tools/cow/cow_order.py,sha256=qhtsEd7a9qAV3zKgSdAyOFZOLAiNOL632JgYAPqazUY,4399
|
90
91
|
prediction_market_agent_tooling/tools/custom_exceptions.py,sha256=Fh8z1fbwONvP4-j7AmV_PuEcoqb6-QXa9PJ9m7guMcM,93
|
91
92
|
prediction_market_agent_tooling/tools/datetime_utc.py,sha256=8_WackjtjC8zHXrhQFTGQ6e6Fz_6llWoKR4CSFvIv9I,2766
|
92
93
|
prediction_market_agent_tooling/tools/db/db_manager.py,sha256=GtzHH1NLl8HwqC8Z7s6eTlIQXuV0blxfaV2PeQrBnfQ,3013
|
@@ -99,26 +100,28 @@ prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py,sha256=CTTMfTvs_8PH4k
|
|
99
100
|
prediction_market_agent_tooling/tools/is_invalid.py,sha256=TAHQXiiusAU45xJ11ZyEP7PnEfcjfzVG7qHRbsHiAd0,5335
|
100
101
|
prediction_market_agent_tooling/tools/is_predictable.py,sha256=qVd6zqay2Dg2fyeAuZvAFqSHMg71TcPfCZULsVk2XvA,6797
|
101
102
|
prediction_market_agent_tooling/tools/langfuse_.py,sha256=jI_4ROxqo41CCnWGS1vN_AeDVhRzLMaQLxH3kxDu3L8,1153
|
102
|
-
prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=
|
103
|
+
prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=636bHCxwfWSbQYQQ0ipeyJUDXCbAC1zP6ZqzeLL2GJk,6582
|
103
104
|
prediction_market_agent_tooling/tools/omen/reality_accuracy.py,sha256=M1SF7iSW1gVlQSTskdVFTn09uPLST23YeipVIWj54io,2236
|
104
|
-
prediction_market_agent_tooling/tools/omen/sell_positions.py,sha256=
|
105
|
+
prediction_market_agent_tooling/tools/omen/sell_positions.py,sha256=7b2qHGQ_2V3ke_UTR9wQeJW88z5ub1GTre9Y_zd4e9E,2387
|
105
106
|
prediction_market_agent_tooling/tools/parallelism.py,sha256=6Gou0hbjtMZrYvxjTDFUDZuxmE2nqZVbb6hkg1hF82A,1022
|
106
107
|
prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py,sha256=95l84aztFaxcRLLcRQ46yKJbIlOEuDAbIGLouyliDzA,1316
|
107
108
|
prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py,sha256=CddJem7tk15NAudJDwmuL8znTycbR-YI8kTNtd3LzG8,5474
|
108
109
|
prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py,sha256=kNWq92T11Knb9mYBZlMiZUzOpKgCd-5adanylQUMRJA,3085
|
109
|
-
prediction_market_agent_tooling/tools/safe.py,sha256=
|
110
|
+
prediction_market_agent_tooling/tools/safe.py,sha256=o477HGPQv7X_eDoOeYoELCHryiq1_102y_JVhGEPDXw,5165
|
110
111
|
prediction_market_agent_tooling/tools/singleton.py,sha256=CiIELUiI-OeS7U7eeHEt0rnVhtQGzwoUdAgn_7u_GBM,729
|
111
112
|
prediction_market_agent_tooling/tools/streamlit_user_login.py,sha256=NXEqfjT9Lc9QtliwSGRASIz1opjQ7Btme43H4qJbzgE,3010
|
112
113
|
prediction_market_agent_tooling/tools/tavily/tavily_models.py,sha256=5ldQs1pZe6uJ5eDAuP4OLpzmcqYShlIV67kttNFvGS0,342
|
113
114
|
prediction_market_agent_tooling/tools/tavily/tavily_search.py,sha256=pPs0qZNfJ7G-1ajfz0iaWOBQyiC0TbcShfrW8T39jtg,3859
|
114
|
-
prediction_market_agent_tooling/tools/tokens/auto_deposit.py,sha256=
|
115
|
-
prediction_market_agent_tooling/tools/tokens/auto_withdraw.py,sha256=
|
116
|
-
prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=
|
115
|
+
prediction_market_agent_tooling/tools/tokens/auto_deposit.py,sha256=M2ozvdLZyX0R3WftrSYT2SNjz-Af-p9huEihgsUUkYA,6567
|
116
|
+
prediction_market_agent_tooling/tools/tokens/auto_withdraw.py,sha256=nV9jSUt1ydceDj03cTwdyrJs8kFGqz9z6YcvTVUaNg4,2682
|
117
|
+
prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=1rbwpdCusPgQIVFuo3m00nBZ_b2lCAoFVm67i-YDcEw,812
|
118
|
+
prediction_market_agent_tooling/tools/tokens/token_utils.py,sha256=zwV-jGFkPJu4-IslXOUqnsNQjzh_9CrfkruDQL0dq0c,1381
|
119
|
+
prediction_market_agent_tooling/tools/tokens/usd.py,sha256=0GU7RiWGlu7yDctGeWJeLsy8uYLcpI1JyLWWqFt0QWE,2179
|
117
120
|
prediction_market_agent_tooling/tools/transaction_cache.py,sha256=K5YKNL2_tR10Iw2TD9fuP-CTGpBbZtNdgbd0B_R7pjg,1814
|
118
|
-
prediction_market_agent_tooling/tools/utils.py,sha256=
|
119
|
-
prediction_market_agent_tooling/tools/web3_utils.py,sha256=
|
120
|
-
prediction_market_agent_tooling-0.61.1.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
121
|
-
prediction_market_agent_tooling-0.61.1.dist-info/METADATA,sha256=
|
122
|
-
prediction_market_agent_tooling-0.61.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
123
|
-
prediction_market_agent_tooling-0.61.1.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
124
|
-
prediction_market_agent_tooling-0.61.1.dist-info/RECORD,,
|
121
|
+
prediction_market_agent_tooling/tools/utils.py,sha256=7P1veh76ni-0EfT7MlRlLE9hHUU498UOx70Lwxe7UaM,6536
|
122
|
+
prediction_market_agent_tooling/tools/web3_utils.py,sha256=eYCc1iWAVtqDKUPTwnMUHuYolPdwh_OTiM3-AdRgDp4,12198
|
123
|
+
prediction_market_agent_tooling-0.61.1.dev461.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
124
|
+
prediction_market_agent_tooling-0.61.1.dev461.dist-info/METADATA,sha256=u8xpL9EiWUt-k-SS3EAldqbGBvlDUyoQGNTzZmtlL4Q,8696
|
125
|
+
prediction_market_agent_tooling-0.61.1.dev461.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
126
|
+
prediction_market_agent_tooling-0.61.1.dev461.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
127
|
+
prediction_market_agent_tooling-0.61.1.dev461.dist-info/RECORD,,
|
File without changes
|
File without changes
|