28#define wu_portfolio_update(portfolio, signals) do { \
29 ((WU_Portfolio)(portfolio))->update((WU_Portfolio)(portfolio), \
37#define wu_portfolio_value(portfolio) (((WU_Portfolio)(portfolio))->value( \
38 (WU_Portfolio)(portfolio)))
45#define wu_portfolio_pnl(portfolio) (((WU_Portfolio)(portfolio))->pnl( \
46 (WU_Portfolio)(portfolio)))
52#define wu_portfolio_delete(portfolio) do { \
53 if ((portfolio)->delete) \
54 (portfolio)->delete((WU_Portfolio)(portfolio)); \
135 const char* symbols[]
142 WU_BasicPortfolio portfolio,
150 WU_BasicPortfolio portfolio,
157#define WU_PORTFOLIO(portfolio) ((WU_Portfolio)(portfolio))
WU_BasicPortfolio wu_basic_portfolio_new(WU_PortfolioParams params, const char *symbols[])
Creates a new basic portfolio instance with the specified parameters and asset symbols.
double wu_basic_portfolio_asset_quantity(WU_BasicPortfolio portfolio, int asset_index)
Get total quantity held for a specific asset.
@ WU_TRANSACTION_COST_PROPORTIONAL
@ WU_TRANSACTION_COST_FIXED
WU_PortfolioParams wu_portfolio_params_default(void)
Returns default portfolio parameters with reasonable values.
@ WU_EXECUTION_POLICY_IMMEDIATE
@ WU_EXECUTION_POLICY_RANDOM_SLIPPAGE
@ WU_EXECUTION_POLICY_FIXED_SLIPPAGE
@ WU_EXECUTION_POLICY_NEXT_CLOSE
double wu_basic_portfolio_asset_value(WU_BasicPortfolio portfolio, int asset_index)
Get current value of a specific asset's positions.
A basic portfolio implementation that supports multiple assets.
WU_PositionVector ** positions
WU_TimeStamp last_update_time
WU_Signal * pending_orders
WU_PortfolioParams params
struct WU_Portfolio_ base
WU_ExecutionPolicyValue policy
WU_TransactionCostType tx_cost_type
The parameters to define a portfolio.
WU_BorrowParams borrow_params
WU_ExecutionPolicy execution_policy
WU_PositionSizingParams position_sizing
Base for a portfolio, which defines the minimal interface for updating the portfolio with signals,...
void(* update)(struct WU_Portfolio_ *portfolio, const WU_Signal *signals)
double(* value)(const struct WU_Portfolio_ *portfolio)
double(* pnl)(const struct WU_Portfolio_ *portfolio)
WU_PositionVector is a data structure that holds multiple positions for a single asset.
WU_Signal represents a trading signal generated by a strategy.
A timestamp represent a mark in time given relative to unix epoch.