Files
managing-apps/assets/Todo-v2.md
Oda 31f7f4cbfc Position management (#12)
* Update position worker

* Update todo

* Update todo

* Update worker base url
2025-02-20 12:13:49 +07:00

12 KiB

V2

Done

Adaptive mode

  • Create a risk mode 'Adaptive' to be able to not use save moneymanagement settings
  • Adaptive mode will force Bot to determine SL by getting the previous highest price on the period (prevent choppy price on good entry)
  • Create account (type, exchange, key, secret)
  • Update trading bot to handle one account
  • Remove exchange from bot. Exchange will be set on the account
  • Update ftxClient to not use Managingbot subaccount
  • Update exchangeService to handle account
  • Dynamic Ticker selection base on best volumes on the exchanges
  • Create endpoint to get the ticker list for the frontend
  • Create method in application to get best bid and best ask
  • Submit only limit with IOC
  • Implement Poly to have a retry policy for limit order ioc execution => Unsure position is open
  • For openOrder inject a parameter to select the ioc mode. If risk is adaptive we just place the order a the price without forcing the position opening
  • Integrate STC signals

Web3

  • Integrate wallet management from backend side
  • Integrate wagmi/connectkit
  • Sign message with connectkit
  • On wallet connect, check if token is not expired
  • User can have multiple address
  • User can create an account base on evm exchange
  • Hide key/secret if evm exchange is selected
  • Generate pub/priv key on evm account creation and store it into mongo
  • Get balance for an address
  • Handle multi-chain
  • Add arbitrum testnet for backend
  • User can withdraw found to the connected address of the user
  • Implement get balance with chainlink feed
  • Abstract subgraph management
  • Get price from multiple price feeds subgraph
  • Add to ExchangeService GetAvailableTicker()
  • Add get token list method to EvmManager
  • Setup worker to save candles into db
  • Open trade -> CreateIncreaseOrder
  • Close trade -> CreateDecreasePosition
  • Close all orders
  • Create SL & TP -> CreateDecreaseOrder
  • Get Fees -> Estimate Tx cost
  • Adapt GetBalance to retrieve stablecoin amount
  • Create worker to fetch GMX leaderboard -> LeaderboardWorker
  • Leaderboard will create PositionUpdate message bus to deposit a message with all information to open a trade
  • Create bot type CopyTrading to receive PositionUpdate bus message and open position based on criteria
  • CopyTrading bot will send an OpenPosition button on Discord if he's set to watchOnly
  • Fix : Trim address, give name to address, decrease amount bug,
  • Display best last backtests ran by backtester workers
  • Refactor GetAccounts/GetAccount to handle the user
  • AccountType : Binance/EvmTrador/EvmWatch/EvmPersonal
  • Make better abstration of the Database projects (influx, mongodb) to Remove the link between Application and Infrastructure
  • Implement strategy pattern for exchange processors
  • Use cache for position and signal
  • Don't run update Signal and manage position if no new candle

Workers

  • Add Influxdb
  • Create workers for scrap data (per ticker, per exchange, per timeframe)
  • Use candle from influxdb for backtests and bots
  • Create a worker that get a daily top 15 of ticker volume
  • Scrap candle only for crypto with high volume
  • Create a worker that run backtest and save it in db

Front-end

4 - Trading desk Link

  • Live data position hub
  • Live candles
  • Open position from desk

Phase 2 - Web3

  • Cancel Orders
  • Get open orders
  • Open trade (Increase position, decrease position)
  • Get position
  • Close trade
  • Update position / TP / SL

Bots

  • Add button to display money management use by the bot
  • POST POWNER - On the modarl, When simple bot selected, show only a select for the workflow

Workflow

  • List all workflow saved in
  • Use https://reactflow.dev/ to display a workflow (map flow to nodes and children to edges)
  • On update Nodes : https://codesandbox.io/s/dank-waterfall-8jfcf4?file=/src/App.js
  • Save workflow
  • Reset workflow
  • Add flows : Close Position, SendMessage
  • On Flow.tsx : Display inputs/outputs names on the node
  • Setup file tree UI for available flows : https://codesandbox.io/s/nlzui
  • Create a workflow type that will encapsulate a list of flows
  • Each flow will have parameters, inputs and outputs that will be used by the children flows
  • Flow can handle multiple parents
  • Run Simple bot base on a workflow
  • Run backtest based on a workflow
  • Add flows : ClosePosition, Scenario

Backtests

  • Display the money management used by the backtest

Part 1 : Adaptive trading

  • From backtests list : Determine TP and Stop loss % by getting average profit and average lost for a signal
  • Modify bot to use MoneyManagement object instead of using the risk associated to the signal.
  • Bot object should return MoneyManagement object
  • Bot backup worker: Every x, get saved bots and check if still running. If not running call api to reboot bot.
  • Factorize amount management for GMX Service
  • Create worker to fetch the biggest spread between long\short funding rate and send alert when most profitable delta neutral position is found
  • Create a worker to scrap funding fees over time (per ticker, per exchange)

Scenarios

5 - Live liquidation map

  • Create worker to aggregate binance/okx liquidation
  • Render liquidation map with a hub subscription to get live update
  • Live data signal
  • Display massive liquidation on TradeChartWidget

To review

  • ???? Improve strategy composability by using delegate pattern ????
  • Post-powned - Load signal from database
  • Create a bot to update signal into database that still in pending
  • Signal return best SL and TP
  • Extract BacktestReport from tests to a Tools projects
  • Remove link betweend Domain object to EVM project
  • GMX Service should handle only Nethereum object, not Domain.Models
  • Compute backtests pagination on backend side
  • Implement from/to tickers array pattern

Before Kudai

Part 1 : Strategies optimisation

  • Create strategies types from signal (a divergence) / trend (stoch long or short) / context (high vol/low vol)
  • Strategy can return a suggested trade that will give the best orders to execute
  • Optimize all strategies with more data (funding rate trend, bbwp, etc..)
  • Add entry/exit price to signal for adaptive risk
  • Add bbwp indicator => PR example : https://github.com/DaveSkender/Stock.Indicators/pull/893/files#diff-df1cd2a99846f7328c9fc3db4d2c164380a0fa943cdcad2ece01b886cac68137
  • Optimize entry by getting last ask price and place an order limit t match directly with it
  • Create a trend strategy on fundinrate -> long trend if negativ fr / short trend if positiv fr
  • MACD: Open only when candle is not a big move to avoid late entry (only enter when low vol)

Part 2 : Backtests automation

  • Save start/end time and timeframe into the result
  • Create a worker that determine best TP and SL
  • Create a page 'Analyze' to show the best TP and SL for multiple backtest result
  • Implement reverseSignal to close and flip the trade
  • Combine multi-timeframe to detect better signals => Adapt risk on the lowest timeframe based on upper timeframe
  • Remove candles from the backtestResult
  • On GET backtest -> Retrieve the candle from cache or database
  • Create a worker that get top 5 cryptos by scenario

Part 3 - Wallet management

  • Create onboarding process for new wallet
  • User can deposit token to and evm account with a QR code or clicking on button to copy the address
  • Add account abstraction to level up security with privy
  • Display balance in $ evolution per token hold on the account page
  • Create a snapshot of the account balances with BalancesWorker

7 - Improvement Link

  • Handling user on every object => Use the JWT token to inject the userName
  • Make possible to force close all positionpositions of a bot
  • Bot can handle limit order position -> fetch if order is still open then check if position of open
  • Create method to update the money management use by the bot
  • Extract all managing trade method into a TradingBox class => Create composable trading bot type easily

Backend :

  • Filter all objects by users using botpress profiles
  • Create endpoint to calculate the total volume traded
  • Integrate Privy APIs to sign tx
  • Get wallet balanced through Privy
  • Remove Timeframe for strategies
  • Update bot scenarios => shouldn't close current open position
  • Remove accountName from getTicker
  • Add enddate to backtest
  • Replace WatchOnly by PaperTrading

Botpress :

  • Manage agent profiles
  • Setup chat workflow
  • Setup bad behaviors
  • Setup chat for: create wallet, create strategy

N8N pipelines:

  • Create wallet: Check funds, approve usdc
  • Create strategy: Get indicators, tickers and money management infos and call Managing.API
  • Agent performance update

Infra :

  • Install botpress and n8n

  • Setup botpress chat and language interpretation

  • Add Tyk API Gateway for rate limit between n8n and Managing API

  • New database Postgre for N8N and Botpress (agent profiles, built strategies, stats)

  • Deploy database for Chat and Agent Profiles


Front-end

Improve Account page

  • Display total balances (only trader account) on Settings->Accounts Page
  • On Token Account details line -> Add button to withdraw money (this will open a Modal to prompt the address/amount that will receive the money)

Charts

  • Add multi-timeframe options
  • Display optionnal indicators on charts
  • Display current selected position (when i click on a Position in the list)

Trading desk

  • Get global exposure ((total position / total balances *) 100)
  • WAIT - Create a button to open a hedge on option market
  • Display multiple tab to show different tickers

3 - Settings Link

  • Save theme into database
  • Call GET Settings/Theme to retrieve the theme used by the user

Technical front-end :

  • Implement alias to reduce 'import' lines https://github.com/subwaytime/vite-aliases
  • Make Get Accounts List as a store
  • Replace all html-tag Modals (ex: BacktestPlayground.tsx)
  • Refactoring Components :
    • organism : Put all the code related to the app (Trade charts etc). This folder should be delete when the project is forked
    • mollecules : Put aggregate of atoms to create forms/modal/table
    • atoms : Put all basic html tag components (List, Select, Slider...)

Technicals