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