prediction-market-agent-tooling 0.46.0__tar.gz → 0.47.0__tar.gz

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.
Files changed (81) hide show
  1. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/PKG-INFO +1 -1
  2. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/deploy/agent.py +23 -4
  3. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/omen/omen.py +14 -0
  4. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/pyproject.toml +1 -1
  5. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/LICENSE +0 -0
  6. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/README.md +0 -0
  7. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
  8. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  9. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
  10. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  11. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  12. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  13. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  20. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  21. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  22. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  23. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/config.py +0 -0
  24. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  25. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  26. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  27. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  28. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  29. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/gtypes.py +0 -0
  30. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/loggers.py +0 -0
  31. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  32. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  33. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  34. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  35. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  36. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  37. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  38. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  39. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/markets.py +0 -0
  40. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
  41. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
  42. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
  43. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  44. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  45. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
  46. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  47. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  48. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  49. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  50. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  51. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  52. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  53. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/langfuse/langfuse_wrapper.py +0 -0
  54. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  55. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
  56. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  57. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  58. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  59. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  60. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  61. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/py.typed +0 -0
  62. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/balances.py +0 -0
  63. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  64. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  65. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  66. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  67. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/cache.py +0 -0
  68. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/contract.py +0 -0
  69. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/costs.py +0 -0
  70. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/gnosis_rpc.py +0 -0
  71. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/google.py +0 -0
  72. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  73. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  74. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  75. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  76. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  77. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/safe.py +0 -0
  78. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  79. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  80. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/utils.py +0 -0
  81. {prediction_market_agent_tooling-0.46.0 → prediction_market_agent_tooling-0.47.0}/prediction_market_agent_tooling/tools/web3_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.46.0
3
+ Version: 0.47.0
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.12
@@ -22,7 +22,7 @@ from prediction_market_agent_tooling.deploy.gcp.utils import (
22
22
  gcp_function_is_active,
23
23
  gcp_resolve_api_keys_secrets,
24
24
  )
25
- from prediction_market_agent_tooling.gtypes import Probability, xdai_type
25
+ from prediction_market_agent_tooling.gtypes import Probability, xDai, xdai_type
26
26
  from prediction_market_agent_tooling.loggers import logger
27
27
  from prediction_market_agent_tooling.markets.agent_market import (
28
28
  AgentMarket,
@@ -35,6 +35,7 @@ from prediction_market_agent_tooling.markets.markets import (
35
35
  have_bet_on_market_since,
36
36
  )
37
37
  from prediction_market_agent_tooling.markets.omen.omen import (
38
+ is_minimum_required_balance,
38
39
  redeem_from_all_user_positions,
39
40
  withdraw_wxdai_to_xdai_to_keep_balance,
40
41
  )
@@ -73,6 +74,10 @@ def to_boolean_outcome(value: str | bool) -> bool:
73
74
  Decision = Annotated[bool, BeforeValidator(to_boolean_outcome)]
74
75
 
75
76
 
77
+ class OutOfFundsError(ValueError):
78
+ pass
79
+
80
+
76
81
  class Answer(BaseModel):
77
82
  decision: Decision # Warning: p_yes > 0.5 doesn't necessarily mean decision is True! For example, if our p_yes is 55%, but market's p_yes is 80%, then it might be profitable to bet on False.
78
83
  p_yes: Probability
@@ -201,6 +206,8 @@ def {entrypoint_function_name}(request) -> str:
201
206
 
202
207
  class DeployableTraderAgent(DeployableAgent):
203
208
  bet_on_n_markets_per_run: int = 1
209
+ min_required_balance_to_operate: xDai | None = xdai_type(1)
210
+ min_balance_to_keep_in_native_currency: xDai | None = xdai_type(0.1)
204
211
 
205
212
  def __init__(self, place_bet: bool = True) -> None:
206
213
  super().__init__()
@@ -273,10 +280,22 @@ class DeployableTraderAgent(DeployableAgent):
273
280
  if market_type == MarketType.OMEN:
274
281
  # Omen is specific, because the user (agent) needs to manually withdraw winnings from the market.
275
282
  redeem_from_all_user_positions(api_keys)
283
+ # Check if we have enough of balance to operate.
284
+ if self.min_required_balance_to_operate is not None:
285
+ if not is_minimum_required_balance(
286
+ api_keys.public_key,
287
+ min_required_balance=self.min_required_balance_to_operate,
288
+ ):
289
+ raise OutOfFundsError(
290
+ f"Minimum required balance {self.min_required_balance_to_operate} is not met."
291
+ )
276
292
  # Exchange wxdai back to xdai if the balance is getting low, so we can keep paying for fees.
277
- withdraw_wxdai_to_xdai_to_keep_balance(
278
- api_keys, min_required_balance=xdai_type(1), withdraw_multiplier=2
279
- )
293
+ if self.min_balance_to_keep_in_native_currency is not None:
294
+ withdraw_wxdai_to_xdai_to_keep_balance(
295
+ api_keys,
296
+ min_required_balance=self.min_balance_to_keep_in_native_currency,
297
+ withdraw_multiplier=2,
298
+ )
280
299
 
281
300
  def process_bets(self, market_type: MarketType) -> None:
282
301
  """
@@ -1043,6 +1043,20 @@ def get_binary_market_p_yes_history(market: OmenAgentMarket) -> list[Probability
1043
1043
  return history
1044
1044
 
1045
1045
 
1046
+ def is_minimum_required_balance(
1047
+ address: ChecksumAddress,
1048
+ min_required_balance: xDai,
1049
+ web3: Web3 | None = None,
1050
+ ) -> bool:
1051
+ """
1052
+ Checks if the total balance of xDai and wxDai in the wallet is above the minimum required balance.
1053
+ """
1054
+ current_balances = get_balances(address, web3)
1055
+ # xDai and wxDai have equal value and can be exchanged for almost no cost, so we can sum them up.
1056
+ total_balance = current_balances.xdai + current_balances.wxdai
1057
+ return total_balance >= min_required_balance
1058
+
1059
+
1046
1060
  def withdraw_wxdai_to_xdai_to_keep_balance(
1047
1061
  api_keys: APIKeys,
1048
1062
  min_required_balance: xDai,
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.46.0"
3
+ version = "0.47.0"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"