GET Get Locked Params
/get_locked_params
get_locked_params/{symbol}?leverage={leverage}Example Query:
https://base-hedger82.rasa.capital/get_locked_params/BTCUSDT?leverage=9Example Response:
{"cva":"6.00","partyAmm":"91.00","lf":"3.00","leverage":"9.0","partyBmm":"0"}These parameters are solver-defined and based on a cn value. You can read more about this calculation here.
Get Locked Params Rasa Implementation
Router
@common_router.get(
'/get_locked_params/{symbol}',
responses={status.HTTP_200_OK: {"model": LockedParamsResponseSchema}},
response_model=LockedParamsResponseSchema
)
@with_context_db_session
async def get_locked_params(
symbol: symbol_enum,
leverage: float
):
dynamic_lock_params = get_dynamic_lock_params(symbol, leverage)
if dynamic_lock_params is False:
raise ErrorCodeResponse(
status_code=400,
error=ErrorInfoContainer.invalid_leverage
)
# Cast all values to strings for JSON consistency
dynamic_lock_params = {k: str(v) for k, v in dynamic_lock_params.items()}
# Echo back the requested leverage
dynamic_lock_params['leverage'] = str(leverage)
# Append the hedger’s party-B margin-multiplier
dynamic_lock_params['partyBmm'] = str(
HedgerParameters.get_by_key_convert_decimal(
f'quote_boundaries::{symbol}::hedger::mm::percentage'
)
)
return dynamic_lock_params
Logic
Compute Dynamic Parameters
dynamic_lock_params = get_dynamic_lock_params(symbol, leverage)Calls the risk-model function, which returns a dict of:
cva(collateral valuation adjustment)partyAmm(party A margin multiplier)lf(liquidity fee portion)Returns
Falseif the requested leverage is outside the valid range.
Validate Leverage
if dynamic_lock_params is False:
raise ErrorCodeResponse(400, ErrorInfoContainer.invalid_leverage)If the risk-model rejects the leverage, returns a 400 with a structured error.
Normalize to Strings
dynamic_lock_params = {k: str(v) for k, v in dynamic_lock_params.items()}Ensures all numeric values serialize cleanly as JSON strings.
Augment with Leverage & PartyBmm
dynamic_lock_params['leverage'] = str(leverage)
dynamic_lock_params['partyBmm'] = str(
HedgerParameters.get_by_key_convert_decimal(
f'quote_boundaries::{symbol}::hedger::mm::percentage'
)
)Echoes back the input
leverage.Reads your hedger’s configured “party B margin multiplier” from the database/config.
Return
Yields a JSON object:
{ "cva": "6.00", "partyAmm": "91.00", "lf": "3.00", "leverage": "9.0", "partyBmm": "0" }
Steps to Implement Your Own Version
Define the Response Schema
class LockedParamsResponseSchema(BaseModel):
cva: str
partyAmm: str
lf: str
leverage: str
partyBmm: strWrite a Risk-Model Function
Implement
get_dynamic_lock_params(symbol: str, leverage: float) → dict | False.Should return a dict with
cva,partyAmm,lfif valid, orFalsefor invalid leverage.Logic to base this on can be found further up.
Configure HedgerParameters
Ensure your
HedgerParameterstable or config contains the keyquote_boundaries::{symbol}::hedger::mm::percentageif you're following this example.
Last updated
