future

package
v0.77.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2024 License: AGPL-3.0 Imports: 37 Imported by: 0

Documentation ¶

Index ¶

Constants ¶

This section is empty.

Variables ¶

View Source
var ErrBondSlashing = errors.New("bond slashing")

ErrBondSlashing - just indicates that we had to penalize the party due to insufficient funds, and as such, we have to cancel their LP.

View Source
var ErrCommitmentAmountTooLow = errors.New("commitment amount is too low")

Functions ¶

func VerifyAMMBounds ¶ added in v0.77.0

func VerifyAMMBounds(baseParam *num.Uint, lowerParam *num.Uint, upperParam *num.Uint, priceFactor num.Decimal) error

Types ¶

type Market ¶

type Market struct {
	// contains filtered or unexported fields
}

Market represents an instance of a market in vega and is in charge of calling the engines in order to process all transactions.

func NewMarket ¶

func NewMarket(
	ctx context.Context,
	log *logging.Logger,
	riskConfig risk.Config,
	positionConfig positions.Config,
	settlementConfig settlement.Config,
	matchingConfig matching.Config,
	feeConfig fee.Config,
	liquidityConfig liquidity.Config,
	collateralEngine common.Collateral,
	oracleEngine products.OracleEngine,
	mkt *types.Market,
	timeService common.TimeService,
	broker common.Broker,
	auctionState *monitor.AuctionState,
	stateVarEngine common.StateVarEngine,
	marketActivityTracker *common.MarketActivityTracker,
	assetDetails *assets.Asset,
	peggedOrderNotify func(int64),
	referralDiscountRewardService fee.ReferralDiscountRewardService,
	volumeDiscountService fee.VolumeDiscountService,
	banking common.Banking,
	parties common.Parties,
) (*Market, error)

NewMarket creates a new market using the market framework configuration and creates underlying engines.

func NewMarketFromSnapshot ¶

func NewMarketFromSnapshot(
	ctx context.Context,
	log *logging.Logger,
	em *types.ExecMarket,
	riskConfig risk.Config,
	positionConfig positions.Config,
	settlementConfig settlement.Config,
	matchingConfig matching.Config,
	feeConfig fee.Config,
	liquidityConfig liquidity.Config,
	collateralEngine common.Collateral,
	oracleEngine products.OracleEngine,
	timeService common.TimeService,
	broker common.Broker,
	stateVarEngine common.StateVarEngine,
	assetDetails *assets.Asset,
	marketActivityTracker *common.MarketActivityTracker,
	peggedOrderNotify func(int64),
	referralDiscountRewardService fee.ReferralDiscountRewardService,
	volumeDiscountService fee.VolumeDiscountService,
	banking common.Banking,
	parties common.Parties,
) (*Market, error)

func (*Market) AmendAMM ¶ added in v0.77.0

func (m *Market) AmendAMM(ctx context.Context, amend *types.AmendAMM, deterministicID string) error

func (*Market) AmendLiquidityProvision ¶

func (m *Market) AmendLiquidityProvision(ctx context.Context, lpa *types.LiquidityProvisionAmendment, party string, deterministicID string) (err error)

AmendLiquidityProvision forwards a LiquidityProvisionAmendment to the Liquidity Engine.

func (*Market) AmendOrder ¶

func (m *Market) AmendOrder(
	ctx context.Context,
	orderAmendment *types.OrderAmendment,
	party string,
	deterministicID string,
) (oc *types.OrderConfirmation, _ error,
)

AmendOrder amend an existing order from the order book.

func (*Market) AmendOrderWithIDGenerator ¶

func (m *Market) AmendOrderWithIDGenerator(
	ctx context.Context,
	orderAmendment *types.OrderAmendment,
	party string,
	idgen common.IDGenerator,
) (oc *types.OrderConfirmation, _ error,
)

func (*Market) BeginBlock ¶ added in v0.73.0

func (m *Market) BeginBlock(ctx context.Context)

func (*Market) BlockEnd ¶

func (m *Market) BlockEnd(ctx context.Context)

BlockEnd notifies the market of the end of the block.

func (*Market) CanLeaveOpeningAuction ¶

func (m *Market) CanLeaveOpeningAuction() bool

CanLeaveOpeningAuction checks if the market can leave the opening auction based on whether floating point consensus has been reached on all 3 vars.

func (*Market) CancelAMM ¶ added in v0.77.0

func (m *Market) CancelAMM(ctx context.Context, cancel *types.CancelAMM, deterministicID string) error

func (*Market) CancelAllOrders ¶

func (m *Market) CancelAllOrders(ctx context.Context, partyID string) ([]*types.OrderCancellationConfirmation, error)

func (*Market) CancelAllStopOrders ¶

func (m *Market) CancelAllStopOrders(ctx context.Context, partyID string) error

func (*Market) CancelLiquidityProvision ¶

func (m *Market) CancelLiquidityProvision(ctx context.Context, cancel *types.LiquidityProvisionCancellation, party string) (err error)

CancelLiquidityProvision forwards a LiquidityProvisionCancel to the Liquidity Engine.

func (*Market) CancelOrder ¶

func (m *Market) CancelOrder(
	ctx context.Context,
	partyID, orderID string, deterministicID string,
) (oc *types.OrderCancellationConfirmation, _ error)

func (*Market) CancelOrderWithIDGenerator ¶

func (m *Market) CancelOrderWithIDGenerator(
	ctx context.Context,
	partyID, orderID string,
	idgen common.IDGenerator,
) (oc *types.OrderCancellationConfirmation, _ error)

func (*Market) CancelStopOrder ¶

func (m *Market) CancelStopOrder(
	ctx context.Context,
	partyID, orderID string,
) error

func (*Market) CheckOrderSubmissionForSpam ¶ added in v0.77.0

func (m *Market) CheckOrderSubmissionForSpam(orderSubmission *types.OrderSubmission, party string, quantumMultiplier num.Decimal) error

func (*Market) ClosePosition ¶ added in v0.77.0

func (m *Market) ClosePosition(context.Context, string) bool

func (*Market) EnterLongBlockAuction ¶ added in v0.77.0

func (m *Market) EnterLongBlockAuction(ctx context.Context, duration int64)

func (*Market) GetAssetForProposerBonus ¶ added in v0.73.0

func (m *Market) GetAssetForProposerBonus() string

func (*Market) GetAssets ¶ added in v0.77.0

func (m *Market) GetAssets() []string

func (*Market) GetCPState ¶

func (m *Market) GetCPState() *types.CPMarketState

func (*Market) GetEquityShares ¶

func (m *Market) GetEquityShares() *common.EquityShares

func (*Market) GetFillPrice ¶ added in v0.75.0

func (m *Market) GetFillPrice(volume uint64, side types.Side) (*num.Uint, error)

func (*Market) GetID ¶

func (m *Market) GetID() string

GetID returns the id of the given market.

func (*Market) GetInsurancePoolFraction ¶

func (m *Market) GetInsurancePoolFraction() num.Decimal

func (*Market) GetMarketCounters ¶ added in v0.73.0

func (m *Market) GetMarketCounters() *types.MarketCounters

func (*Market) GetMarketData ¶

func (m *Market) GetMarketData() types.MarketData

func (*Market) GetMarketState ¶

func (m *Market) GetMarketState() types.MarketState

func (*Market) GetNewStateProviders ¶

func (m *Market) GetNewStateProviders() []types.StateProvider

func (*Market) GetNextMTM ¶

func (m *Market) GetNextMTM() time.Time

func (*Market) GetParentMarketID ¶

func (m *Market) GetParentMarketID() string

func (*Market) GetPartiesStats ¶ added in v0.73.0

func (m *Market) GetPartiesStats() (stats *types.MarketStats)

GetPartiesStats is called at the end of the epoch, only once to be sent to the activity streak engine. This is using the calculated at the end of the epoch based on the countrer in the position engine. This is never sent into a snapshot as it relies on the order the epoch callback are executed. We expect the market OnEpoch to be called first, and compute the data, then the activity tracker callback to be called next, and retrieve the data through this method. The stats are reseted before being returned.

func (*Market) GetRiskFactors ¶ added in v0.74.0

func (m *Market) GetRiskFactors() *types.RiskFactor

func (*Market) GetSettlementAsset ¶

func (m *Market) GetSettlementAsset() string

func (*Market) GetState ¶

func (m *Market) GetState() *types.ExecMarket

func (*Market) GetTotalOpenPositionCount ¶

func (m *Market) GetTotalOpenPositionCount() uint64

GetTotalOpenPositionCount returns the total number of open positions.

func (*Market) GetTotalOrderBookLevelCount ¶

func (m *Market) GetTotalOrderBookLevelCount() uint64

GetTotalOrderBookLevelCount returns the total number of levels in the order book.

func (*Market) GetTotalPeggedOrderCount ¶

func (m *Market) GetTotalPeggedOrderCount() uint64

GetTotalPeggedOrderCount returns the total number of pegged orders.

func (*Market) GetTotalStopOrderCount ¶

func (m *Market) GetTotalStopOrderCount() uint64

GetTotalStopOrderCount returns the total number of stop orders.

func (*Market) Hash ¶

func (m *Market) Hash() []byte

func (*Market) InheritParent ¶

func (m *Market) InheritParent(ctx context.Context, pstate *types.CPMarketState)

func (*Market) IntoType ¶

func (m *Market) IntoType() types.Market

func (*Market) IsOpeningAuction ¶ added in v0.73.0

func (m *Market) IsOpeningAuction() bool

func (*Market) IsPerp ¶ added in v0.73.0

func (m *Market) IsPerp() bool

func (*Market) IsSucceeded ¶

func (m *Market) IsSucceeded() bool

func (*Market) LoadCPState ¶

func (m *Market) LoadCPState(state *types.CPMarketState)

func (*Market) Mkt ¶

func (m *Market) Mkt() *types.Market

func (*Market) OnAMMMinCommitmentQuantumUpdate ¶ added in v0.77.0

func (m *Market) OnAMMMinCommitmentQuantumUpdate(ctx context.Context, c *num.Uint)

func (*Market) OnAuctionEnded ¶

func (m *Market) OnAuctionEnded()

OnAuctionEnded is called whenever an auction is ended and emits an event to the state var engine.

func (*Market) OnEpochEvent ¶ added in v0.73.0

func (m *Market) OnEpochEvent(ctx context.Context, epoch types.Epoch)

func (*Market) OnEpochRestore ¶ added in v0.73.0

func (m *Market) OnEpochRestore(ctx context.Context, epoch types.Epoch)

func (*Market) OnFeeFactorsInfrastructureFeeUpdate ¶

func (m *Market) OnFeeFactorsInfrastructureFeeUpdate(ctx context.Context, d num.Decimal)

func (*Market) OnFeeFactorsMakerFeeUpdate ¶

func (m *Market) OnFeeFactorsMakerFeeUpdate(ctx context.Context, d num.Decimal)

func (*Market) OnInternalCompositePriceUpdateFrequency ¶ added in v0.74.0

func (m *Market) OnInternalCompositePriceUpdateFrequency(ctx context.Context, d time.Duration)

func (*Market) OnMarginScalingFactorsUpdate ¶

func (m *Market) OnMarginScalingFactorsUpdate(ctx context.Context, sf *types.ScalingFactors) error

func (*Market) OnMarkPriceUpdateMaximumFrequency ¶

func (m *Market) OnMarkPriceUpdateMaximumFrequency(ctx context.Context, d time.Duration)

func (*Market) OnMarketAMMMaxCalculationLevels ¶ added in v0.77.0

func (m *Market) OnMarketAMMMaxCalculationLevels(ctx context.Context, c *num.Uint)

func (*Market) OnMarketAuctionMaximumDurationUpdate ¶ added in v0.73.0

func (m *Market) OnMarketAuctionMaximumDurationUpdate(ctx context.Context, d time.Duration)

func (*Market) OnMarketAuctionMinimumDurationUpdate ¶

func (m *Market) OnMarketAuctionMinimumDurationUpdate(ctx context.Context, d time.Duration)

func (*Market) OnMarketLiquidityEquityLikeShareFeeFractionUpdate ¶ added in v0.77.0

func (m *Market) OnMarketLiquidityEquityLikeShareFeeFractionUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityMaximumLiquidityFeeFactorLevelUpdate ¶

func (m *Market) OnMarketLiquidityMaximumLiquidityFeeFactorLevelUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2BondPenaltyFactorUpdate ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2BondPenaltyFactorUpdate(liquidityV2BondPenaltyFactor num.Decimal)

func (*Market) OnMarketLiquidityV2EarlyExitPenaltyUpdate ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2EarlyExitPenaltyUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2MaximumLiquidityFeeFactorLevelUpdate ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2MaximumLiquidityFeeFactorLevelUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2ProvidersFeeCalculationTimeStep ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2ProvidersFeeCalculationTimeStep(d time.Duration)

func (*Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltyMaxUpdate ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltyMaxUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltySlopeUpdate ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltySlopeUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2StakeToCCYVolume ¶ added in v0.73.0

func (m *Market) OnMarketLiquidityV2StakeToCCYVolume(d num.Decimal)

func (*Market) OnMarketMinLpStakeQuantumMultipleUpdate ¶

func (m *Market) OnMarketMinLpStakeQuantumMultipleUpdate(_ context.Context, d num.Decimal)

func (*Market) OnMarketMinProbabilityOfTradingLPOrdersUpdate ¶

func (m *Market) OnMarketMinProbabilityOfTradingLPOrdersUpdate(_ context.Context, d num.Decimal)

func (*Market) OnMarketPartiesMaximumStopOrdersUpdate ¶

func (m *Market) OnMarketPartiesMaximumStopOrdersUpdate(ctx context.Context, u *num.Uint)

func (*Market) OnMarketProbabilityOfTradingTauScalingUpdate ¶

func (m *Market) OnMarketProbabilityOfTradingTauScalingUpdate(_ context.Context, d num.Decimal)

func (*Market) OnMarketTargetStakeScalingFactorUpdate ¶

func (m *Market) OnMarketTargetStakeScalingFactorUpdate(d num.Decimal) error

func (*Market) OnMarketTargetStakeTimeWindowUpdate ¶

func (m *Market) OnMarketTargetStakeTimeWindowUpdate(d time.Duration)

func (*Market) OnMarketValueWindowLengthUpdate ¶

func (m *Market) OnMarketValueWindowLengthUpdate(d time.Duration)

func (*Market) OnMinimalMarginQuantumMultipleUpdate ¶ added in v0.77.0

func (m *Market) OnMinimalMarginQuantumMultipleUpdate(multiplier num.Decimal) error

func (*Market) OnOpeningAuctionFirstUncrossingPrice ¶

func (m *Market) OnOpeningAuctionFirstUncrossingPrice()

OnOpeningAuctionFirstUncrossingPrice is triggered when the opening auction sees an uncrossing price for the first time and emits an event to the state variable engine.

func (*Market) OnTick ¶

func (m *Market) OnTick(ctx context.Context, t time.Time) bool

OnTick notifies the market of a new time event/update. todo: make this a more generic function name e.g. OnTimeUpdateEvent

func (*Market) PostRestore ¶

func (m *Market) PostRestore(ctx context.Context) error

func (*Market) Reject ¶

func (m *Market) Reject(ctx context.Context) error

func (*Market) ReloadConf ¶

func (m *Market) ReloadConf(
	matchingConfig matching.Config,
	riskConfig risk.Config,
	positionConfig positions.Config,
	settlementConfig settlement.Config,
	feeConfig fee.Config,
)

ReloadConf will trigger a reload of all the config settings in the market and all underlying engines this is required when hot-reloading any config changes, eg. logger level.

func (*Market) ResetParentIDAndInsurancePoolFraction ¶

func (m *Market) ResetParentIDAndInsurancePoolFraction()

func (*Market) RestoreELS ¶

func (m *Market) RestoreELS(ctx context.Context, pstate *types.CPMarketState)

func (*Market) RollbackInherit ¶

func (m *Market) RollbackInherit(ctx context.Context)

func (*Market) SetNextInternalCompositePriceCalc ¶ added in v0.74.0

func (m *Market) SetNextInternalCompositePriceCalc(tm time.Time)

func (*Market) SetNextMTM ¶

func (m *Market) SetNextMTM(tm time.Time)

func (*Market) SetSucceeded ¶

func (m *Market) SetSucceeded()

func (*Market) SetSuccessorELS ¶

func (m *Market) SetSuccessorELS(state *types.CPMarketState)

func (*Market) StartOpeningAuction ¶

func (m *Market) StartOpeningAuction(ctx context.Context) error

func (*Market) StopSnapshots ¶

func (m *Market) StopSnapshots()

func (*Market) SubmitAMM ¶ added in v0.77.0

func (m *Market) SubmitAMM(ctx context.Context, submit *types.SubmitAMM, deterministicID string) error

func (*Market) SubmitLiquidityProvision ¶

func (m *Market) SubmitLiquidityProvision(
	ctx context.Context,
	sub *types.LiquidityProvisionSubmission,
	party, deterministicID string,
) error

SubmitLiquidityProvision forwards a LiquidityProvisionSubmission to the Liquidity Engine.

func (*Market) SubmitOrder ¶

func (m *Market) SubmitOrder(
	ctx context.Context,
	orderSubmission *types.OrderSubmission,
	party string,
	deterministicID string,
) (oc *types.OrderConfirmation, _ error)

SubmitOrder submits the given order.

func (*Market) SubmitOrderWithIDGeneratorAndOrderID ¶

func (m *Market) SubmitOrderWithIDGeneratorAndOrderID(
	ctx context.Context,
	orderSubmission *types.OrderSubmission,
	party string,
	idgen common.IDGenerator,
	orderID string,
	checkForTriggers bool,
) (oc *types.OrderConfirmation, _ error)

SubmitOrder submits the given order.

func (*Market) SubmitStopOrdersWithIDGeneratorAndOrderIDs ¶

func (m *Market) SubmitStopOrdersWithIDGeneratorAndOrderIDs(
	ctx context.Context,
	submission *types.StopOrdersSubmission,
	party string,
	idgen common.IDGenerator,
	fallsBelowID, risesAboveID *string,
) (*types.OrderConfirmation, error)

func (*Market) Update ¶

func (m *Market) Update(ctx context.Context, config *types.Market, oracleEngine products.OracleEngine) error

func (*Market) UpdateMarginMode ¶ added in v0.74.0

func (m *Market) UpdateMarginMode(ctx context.Context, party string, marginMode types.MarginMode, marginFactor num.Decimal) error

func (*Market) UpdateMarketState ¶ added in v0.73.0

func (m *Market) UpdateMarketState(ctx context.Context, changes *types.MarketStateUpdateConfiguration) error

func (*Market) ValidateSettlementData ¶ added in v0.77.0

func (m *Market) ValidateSettlementData(data *num.Uint) bool

type TargetStakeCalculator ¶

type TargetStakeCalculator interface {
	types.StateProvider
	RecordOpenInterest(oi uint64, now time.Time) error
	GetTargetStake(rf types.RiskFactor, now time.Time, markPrice *num.Uint) *num.Uint
	GetTheoreticalTargetStake(rf types.RiskFactor, now time.Time, markPrice *num.Uint, trades []*types.Trade) *num.Uint
	UpdateScalingFactor(sFactor num.Decimal) error
	UpdateTimeWindow(tWindow time.Duration)
	StopSnapshots()
	UpdateParameters(types.TargetStakeParameters)
}

TargetStakeCalculator interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳