Documentation ¶
Index ¶
- type BasicPNLResult
- type Handler
- type IPNL
- type PNLSummary
- func (p *PNLSummary) GetCollateralCurrency() currency.Code
- func (p *PNLSummary) GetDirection() gctorder.Side
- func (p *PNLSummary) GetExposure() decimal.Decimal
- func (p *PNLSummary) GetPositionStatus() gctorder.Status
- func (p *PNLSummary) GetRealisedPNL() BasicPNLResult
- func (p *PNLSummary) GetUnrealisedPNL() BasicPNLResult
- type Portfolio
- func (p *Portfolio) CheckLiquidationStatus(ev data.Event, collateralReader funding.ICollateralReader, pnl *PNLSummary) error
- func (p *Portfolio) CreateLiquidationOrdersForExchange(ev data.Event, funds funding.IFundingManager) ([]order.Event, error)
- func (p *Portfolio) GetLatestComplianceSnapshot(exchangeName string, a asset.Item, cp currency.Pair) (*compliance.Snapshot, error)
- func (p *Portfolio) GetLatestHoldingsForAllCurrencies() []holdings.Holding
- func (p *Portfolio) GetLatestOrderSnapshotForEvent(ev common.Event) (compliance.Snapshot, error)
- func (p *Portfolio) GetLatestOrderSnapshots() ([]compliance.Snapshot, error)
- func (p *Portfolio) GetLatestPNLForEvent(e common.Event) (*PNLSummary, error)
- func (p *Portfolio) GetLatestPosition(e common.Event) (*futures.Position, error)
- func (p *Portfolio) GetPositions(e common.Event) ([]futures.Position, error)
- func (p *Portfolio) OnFill(ev fill.Event, funds funding.IFundReleaser) (fill.Event, error)
- func (p *Portfolio) OnSignal(ev signal.Event, exchangeSettings *exchange.Settings, ...) (*order.Order, error)
- func (p *Portfolio) Reset() error
- func (p *Portfolio) SetCurrencySettingsMap(setup *exchange.Settings) error
- func (p *Portfolio) SetHoldingsForEvent(fm funding.IFundReader, e common.Event) error
- func (p *Portfolio) SetHoldingsForTimestamp(h *holdings.Holding) error
- func (p *Portfolio) TrackFuturesOrder(ev fill.Event, fund funding.IFundReleaser) (*PNLSummary, error)
- func (p *Portfolio) UpdateHoldings(e data.Event, funds funding.IFundReleaser) error
- func (p *Portfolio) UpdatePNL(e common.Event, closePrice decimal.Decimal) error
- func (p *Portfolio) ViewHoldingAtTimePeriod(ev common.Event) (*holdings.Holding, error)
- type Settings
- type SizeHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BasicPNLResult ¶
BasicPNLResult holds the time and the pnl of a position
type Handler ¶
type Handler interface { OnSignal(signal.Event, *exchange.Settings, funding.IFundReserver) (*order.Order, error) OnFill(fill.Event, funding.IFundReleaser) (fill.Event, error) GetLatestOrderSnapshotForEvent(common.Event) (compliance.Snapshot, error) GetLatestOrderSnapshots() ([]compliance.Snapshot, error) ViewHoldingAtTimePeriod(common.Event) (*holdings.Holding, error) SetHoldingsForTimestamp(*holdings.Holding) error UpdateHoldings(data.Event, funding.IFundReleaser) error GetPositions(common.Event) ([]futures.Position, error) TrackFuturesOrder(fill.Event, funding.IFundReleaser) (*PNLSummary, error) UpdatePNL(common.Event, decimal.Decimal) error GetLatestPNLForEvent(common.Event) (*PNLSummary, error) CheckLiquidationStatus(data.Event, funding.ICollateralReader, *PNLSummary) error CreateLiquidationOrdersForExchange(data.Event, funding.IFundingManager) ([]order.Event, error) GetLatestHoldingsForAllCurrencies() []holdings.Holding Reset() error SetHoldingsForEvent(funding.IFundReader, common.Event) error GetLatestComplianceSnapshot(string, asset.Item, currency.Pair) (*compliance.Snapshot, error) }
Handler contains all functions expected to operate a portfolio manager
type IPNL ¶
type IPNL interface { GetUnrealisedPNL() BasicPNLResult GetRealisedPNL() BasicPNLResult GetCollateralCurrency() currency.Code GetDirection() gctorder.Side GetPositionStatus() gctorder.Status }
IPNL defines an interface for an implementation to retrieve PNL from a position
type PNLSummary ¶
type PNLSummary struct { Exchange string Asset asset.Item Pair currency.Pair CollateralCurrency currency.Code Offset int64 Result futures.PNLResult }
PNLSummary holds a PNL result along with exchange details
func (*PNLSummary) GetCollateralCurrency ¶
func (p *PNLSummary) GetCollateralCurrency() currency.Code
GetCollateralCurrency returns the collateral currency
func (*PNLSummary) GetDirection ¶
func (p *PNLSummary) GetDirection() gctorder.Side
GetDirection returns the direction
func (*PNLSummary) GetExposure ¶
func (p *PNLSummary) GetExposure() decimal.Decimal
GetExposure returns the position exposure
func (*PNLSummary) GetPositionStatus ¶
func (p *PNLSummary) GetPositionStatus() gctorder.Status
GetPositionStatus returns the position status
func (*PNLSummary) GetRealisedPNL ¶
func (p *PNLSummary) GetRealisedPNL() BasicPNLResult
GetRealisedPNL returns a basic struct containing realised PNL
func (*PNLSummary) GetUnrealisedPNL ¶
func (p *PNLSummary) GetUnrealisedPNL() BasicPNLResult
GetUnrealisedPNL returns a basic struct containing unrealised PNL
type Portfolio ¶
type Portfolio struct {
// contains filtered or unexported fields
}
Portfolio stores all holdings and rules to assess orders, allowing the portfolio manager to modify, accept or reject strategy signals
func (*Portfolio) CheckLiquidationStatus ¶
func (p *Portfolio) CheckLiquidationStatus(ev data.Event, collateralReader funding.ICollateralReader, pnl *PNLSummary) error
CheckLiquidationStatus checks funding against position and liquidates and removes funding if position unable to continue
func (*Portfolio) CreateLiquidationOrdersForExchange ¶
func (p *Portfolio) CreateLiquidationOrdersForExchange(ev data.Event, funds funding.IFundingManager) ([]order.Event, error)
CreateLiquidationOrdersForExchange creates liquidation orders, for any that exist on the same exchange where a liquidation is occurring
func (*Portfolio) GetLatestComplianceSnapshot ¶
func (p *Portfolio) GetLatestComplianceSnapshot(exchangeName string, a asset.Item, cp currency.Pair) (*compliance.Snapshot, error)
GetLatestComplianceSnapshot returns the latest compliance snapshot for a given exchange, asset, pair
func (*Portfolio) GetLatestHoldingsForAllCurrencies ¶
GetLatestHoldingsForAllCurrencies will return the current holdings for all loaded currencies this is useful to assess the position of your entire portfolio in order to help with risk decisions
func (*Portfolio) GetLatestOrderSnapshotForEvent ¶
GetLatestOrderSnapshotForEvent gets orders related to the event
func (*Portfolio) GetLatestOrderSnapshots ¶
func (p *Portfolio) GetLatestOrderSnapshots() ([]compliance.Snapshot, error)
GetLatestOrderSnapshots returns the latest snapshots from all stored pair data
func (*Portfolio) GetLatestPNLForEvent ¶
func (p *Portfolio) GetLatestPNLForEvent(e common.Event) (*PNLSummary, error)
GetLatestPNLForEvent takes in an event and returns the latest PNL data if it exists
func (*Portfolio) GetLatestPosition ¶
GetLatestPosition returns all futures positions for an event's exchange, asset, pair
func (*Portfolio) GetPositions ¶
GetPositions returns all futures positions for an event's exchange, asset, pair
func (*Portfolio) OnFill ¶
OnFill processes the event after an order has been placed by the exchange. Its purpose is to track holdings for future portfolio decisions.
func (*Portfolio) OnSignal ¶
func (p *Portfolio) OnSignal(ev signal.Event, exchangeSettings *exchange.Settings, funds funding.IFundReserver) (*order.Order, error)
OnSignal receives the event from the strategy on whether it has signalled to buy, do nothing or sell on buy/sell, the portfolio manager will size the order and assess the risk of the order if successful, it will pass on an order.Order to be used by the exchange event handler to place an order based on the portfolio manager's recommendations
func (*Portfolio) SetCurrencySettingsMap ¶
SetCurrencySettingsMap ensures a map is created and no panics happen
func (*Portfolio) SetHoldingsForEvent ¶
SetHoldingsForEvent re-sets offset details at the events time, based on current funding levels
func (*Portfolio) SetHoldingsForTimestamp ¶
SetHoldingsForTimestamp stores a holding snapshot for the holding's timestamp
func (*Portfolio) TrackFuturesOrder ¶
func (p *Portfolio) TrackFuturesOrder(ev fill.Event, fund funding.IFundReleaser) (*PNLSummary, error)
TrackFuturesOrder updates the futures tracker with a new order from a fill event
func (*Portfolio) UpdateHoldings ¶
UpdateHoldings updates the portfolio holdings for the data event
type Settings ¶
type Settings struct { BuySideSizing exchange.MinMax SellSideSizing exchange.MinMax Leverage exchange.Leverage HoldingsSnapshots map[int64]*holdings.Holding ComplianceManager compliance.Manager Exchange gctexchange.IBotExchange FuturesTracker *futures.MultiPositionTracker // contains filtered or unexported fields }
Settings holds all important information for the portfolio manager to assess purchasing decisions
func (*Settings) GetHoldingsForTime ¶
GetHoldingsForTime returns the holdings for a time period, or an error holding if not found