EmulatedPortfolio

StockSharp.MatchingEngine

Emulated portfolio implementation that tracks positions and money in-memory.

Implements: IPortfolio

Constructors

EmulatedPortfolio
public EmulatedPortfolio(string name)
emulatedPortfolio = EmulatedPortfolio(name)

Initializes a new instance.

name
Portfolio name.

Properties

AvailableMoney
public decimal AvailableMoney { get; }
value = emulatedPortfolio.AvailableMoney

Available money (current - blocked).

BeginMoney
public decimal BeginMoney { get; }
value = emulatedPortfolio.BeginMoney

Initial money amount.

BlockedMoney
public decimal BlockedMoney { get; }
value = emulatedPortfolio.BlockedMoney

Blocked money for pending orders.

Commission
public decimal Commission { get; }
value = emulatedPortfolio.Commission

Total commission paid.

CurrentMoney
public decimal CurrentMoney { get; }
value = emulatedPortfolio.CurrentMoney

Current money (begin + PnL).

EnableStopOut
public bool EnableStopOut { get; set; }
value = emulatedPortfolio.EnableStopOut
emulatedPortfolio.EnableStopOut = value

Enable automatic position liquidation on stop-out.

MarginCallLevel
public decimal MarginCallLevel { get; set; }
value = emulatedPortfolio.MarginCallLevel
emulatedPortfolio.MarginCallLevel = value

Margin call level threshold. When margin level falls to this value, a warning is triggered.

Name
public string Name { get; }
value = emulatedPortfolio.Name

Portfolio name.

RealizedPnL
public decimal RealizedPnL { get; }
value = emulatedPortfolio.RealizedPnL

Total realized PnL.

StopOutLevel
public decimal StopOutLevel { get; set; }
value = emulatedPortfolio.StopOutLevel
emulatedPortfolio.StopOutLevel = value

Stop-out level threshold. When margin level falls to this value, positions are liquidated.

TotalPnL
public decimal TotalPnL { get; }
value = emulatedPortfolio.TotalPnL

Total PnL (realized - commission).

Methods

CalculateUnrealizedPnL
public decimal CalculateUnrealizedPnL(Func<SecurityId, decimal?> getCurrentPrice)
result = emulatedPortfolio.CalculateUnrealizedPnL(getCurrentPrice)

Calculate unrealized PnL across all positions.

getCurrentPrice
Function to get current market price for a security. Returns null if price unavailable.

Returns: Total unrealized PnL.

Clear
internal void Clear()
emulatedPortfolio.Clear()

Clear all state (used by Reset).

GetAllPositions
public IEnumerable<PositionInfo> GetAllPositions()
result = emulatedPortfolio.GetAllPositions()

Get all position info objects.

GetPosition
public PositionInfo GetPosition(SecurityId securityId)
result = emulatedPortfolio.GetPosition(securityId)

Get position for security.

securityId
Security ID.

Returns: Position info or null.

GetPositions
public IEnumerable<ValueTuple<SecurityId, decimal, decimal>> GetPositions()
result = emulatedPortfolio.GetPositions()

Get all positions.

Returns: Enumeration of positions.

ProcessOrderCancellation
public void ProcessOrderCancellation(SecurityId securityId, Sides side, decimal volume, decimal price)
emulatedPortfolio.ProcessOrderCancellation(securityId, side, volume, price)

Process order cancellation (unblock funds).

securityId
Security ID.
side
Order side.
volume
Cancelled volume.
price
Price used for margin calculation.
ProcessOrderRegistration
public void ProcessOrderRegistration(SecurityId securityId, Sides side, decimal volume, decimal price)
emulatedPortfolio.ProcessOrderRegistration(securityId, side, volume, price)

Process order registration (block funds).

securityId
Security ID.
side
Order side.
volume
Order volume.
price
Order price for margin calculation.
ProcessTrade
public TradeProcessingResult ProcessTrade(SecurityId securityId, Sides side, decimal price, decimal volume, decimal? commission)
result = emulatedPortfolio.ProcessTrade(securityId, side, price, volume, commission)

Process a trade execution.

securityId
Security ID.
side
Trade side.
price
Trade price.
volume
Trade volume.
commission
Commission amount.

Returns: Trade processing result.

SetMoney
public void SetMoney(decimal money)
emulatedPortfolio.SetMoney(money)

Set initial money.

money
Money amount.
SetPosition
public void SetPosition(SecurityId securityId, decimal volume, decimal avgPrice)
emulatedPortfolio.SetPosition(securityId, volume, avgPrice)

Set initial position.

securityId
Security ID.
volume
Position volume.
avgPrice
Average entry price.