Longbridge OpenAPI C++ SDK
portfolio_context.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "async_result.hpp"
3 #include "callback.hpp"
4 #include "config.hpp"
5 #include "types.hpp"
6 
8 
9 namespace longbridge {
10 namespace portfolio {
11 
13 enum class AssetType
14 {
15  Unknown = 0,
16  Stock = 1,
17  Fund = 2,
18  Crypto = 3,
19 };
20 
22 enum class FlowDirection
23 {
24  Unknown = 0,
25  Buy = 1,
26  Sell = 2,
27 };
28 
30 struct ExchangeRate { double average_rate; std::string base_currency; double bid_rate; double offer_rate; std::string other_currency; };
32 struct ExchangeRates { std::vector<ExchangeRate> exchanges; };
33 
35 struct ProfitSummaryInfo { AssetType asset_type; std::string profit_max; std::string profit_max_name; std::string loss_max; std::string loss_max_name; };
36 
39  std::string stock; std::string fund; std::string crypto; std::string mmf; std::string other;
40  std::string cumulative_transaction_amount; std::string trade_order_num; std::string trade_stock_num;
41  int32_t ipo_hit; int32_t ipo_subscription; std::vector<ProfitSummaryInfo> summary_info;
42 };
43 
46  std::string currency; std::string current_total_asset; std::string start_date; std::string end_date;
47  std::string start_time; std::string end_time; std::string ending_asset_value;
48  std::string initial_asset_value; std::string invest_amount; bool is_traded;
50 };
51 
54  std::string name; std::string market; bool is_holding; std::string profit; std::string profit_rate;
55  int64_t clearance_times; AssetType item_type; std::string currency; std::string symbol;
56  std::string holding_period; std::string security_code; std::string isin;
57  std::string underlying_profit; std::string derivatives_profit; std::string order_profit;
58 };
59 
62  std::string start; std::string end; std::string start_date; std::string end_date;
63  std::string updated_at; std::string updated_date; std::vector<ProfitAnalysisItem> items;
64 };
65 
68 
70 struct ProfitAnalysisByMarketItem { std::string code; std::string name; std::string market; std::string profit; };
71 
74  std::string profit; bool has_more; std::vector<ProfitAnalysisByMarketItem> stock_items;
75 };
76 
78 struct FlowItem {
79  std::string executed_date; std::string executed_timestamp; std::string code; FlowDirection direction;
80  std::string executed_quantity; std::string executed_price; std::string executed_cost; std::string describe;
81 };
82 
84 struct ProfitAnalysisFlows { std::vector<FlowItem> flows_list; bool has_more; };
85 
87 struct ProfitDetailEntry { std::string describe; std::string amount; };
88 
90 struct ProfitDetails {
91  std::string holding_value; std::string profit; std::string cumulative_credited_amount;
92  std::vector<ProfitDetailEntry> credited_details; std::string cumulative_debited_amount;
93  std::vector<ProfitDetailEntry> debited_details; std::string cumulative_fee_amount;
94  std::vector<ProfitDetailEntry> fee_details; std::string short_holding_value;
96 };
97 
101  std::string name; std::string updated_at; std::string updated_date; std::string currency;
102  int32_t default_tag; std::string start; std::string end; std::string start_date; std::string end_date;
103 };
104 
107 private: const lb_portfolio_context_t* ctx_;
108 public:
111  static PortfolioContext create(const Config& config);
115  void profit_analysis(const std::string& start, const std::string& end, AsyncCallback<PortfolioContext, ProfitAnalysis> callback) const;
117  void profit_analysis_detail(const std::string& symbol, const std::string& start, const std::string& end, AsyncCallback<PortfolioContext, ProfitAnalysisDetail> callback) const;
120  void profit_analysis_by_market(const std::string& market, const std::string& start,
121  const std::string& end, const std::string& currency,
122  int32_t page, int32_t size,
126  void profit_analysis_flows(const std::string& symbol, int32_t page, int32_t size,
127  bool derivative, const std::string& start, const std::string& end,
129 };
130 
131 } // namespace portfolio
132 } // namespace longbridge
Definition: config.hpp:16
Portfolio analytics context — exchange rates and P&L analysis.
Definition: portfolio_context.hpp:106
void profit_analysis_detail(const std::string &symbol, const std::string &start, const std::string &end, AsyncCallback< PortfolioContext, ProfitAnalysisDetail > callback) const
Get P&L detail for a specific security. start/end: optional "YYYY-MM-DD"; pass empty string for none.
void profit_analysis_flows(const std::string &symbol, int32_t page, int32_t size, bool derivative, const std::string &start, const std::string &end, AsyncCallback< PortfolioContext, ProfitAnalysisFlows > callback) const
void exchange_rate(AsyncCallback< PortfolioContext, ExchangeRates > callback) const
Get exchange rates for all supported currencies.
void profit_analysis_by_market(const std::string &market, const std::string &start, const std::string &end, const std::string &currency, int32_t page, int32_t size, AsyncCallback< PortfolioContext, ProfitAnalysisByMarket > callback) const
PortfolioContext & operator=(const PortfolioContext &)
static PortfolioContext create(const Config &config)
Create a PortfolioContext from a Config.
void profit_analysis(const std::string &start, const std::string &end, AsyncCallback< PortfolioContext, ProfitAnalysis > callback) const
Get portfolio P&L analysis. start/end: optional "YYYY-MM-DD"; pass empty string for none.
FlowDirection
Trade flow direction.
Definition: portfolio_context.hpp:23
AssetType
Asset class category.
Definition: portfolio_context.hpp:14
Definition: alert_context.hpp:9
std::function< void(AsyncResult< Ctx, T >)> AsyncCallback
Definition: async_result.hpp:48
struct lb_portfolio_context_t lb_portfolio_context_t
Definition: portfolio_context.hpp:7
Exchange rate for a currency pair.
Definition: portfolio_context.hpp:30
double average_rate
Definition: portfolio_context.hpp:30
double offer_rate
Definition: portfolio_context.hpp:30
double bid_rate
Definition: portfolio_context.hpp:30
std::string other_currency
Definition: portfolio_context.hpp:30
std::string base_currency
Definition: portfolio_context.hpp:30
Collection of exchange rates for supported currencies.
Definition: portfolio_context.hpp:32
std::vector< ExchangeRate > exchanges
Definition: portfolio_context.hpp:32
One profit-analysis flow record.
Definition: portfolio_context.hpp:78
std::string executed_timestamp
Definition: portfolio_context.hpp:79
FlowDirection direction
Definition: portfolio_context.hpp:79
std::string executed_quantity
Definition: portfolio_context.hpp:80
std::string executed_price
Definition: portfolio_context.hpp:80
std::string describe
Definition: portfolio_context.hpp:80
std::string executed_date
Definition: portfolio_context.hpp:79
std::string code
Definition: portfolio_context.hpp:79
std::string executed_cost
Definition: portfolio_context.hpp:80
P&L grouped by market response.
Definition: portfolio_context.hpp:73
bool has_more
Definition: portfolio_context.hpp:74
std::string profit
Definition: portfolio_context.hpp:74
std::vector< ProfitAnalysisByMarketItem > stock_items
Definition: portfolio_context.hpp:74
One security entry in a by-market P&L response.
Definition: portfolio_context.hpp:70
std::string market
Definition: portfolio_context.hpp:70
std::string code
Definition: portfolio_context.hpp:70
std::string name
Definition: portfolio_context.hpp:70
std::string profit
Definition: portfolio_context.hpp:70
Detailed P&L for one security.
Definition: portfolio_context.hpp:99
int32_t default_tag
Definition: portfolio_context.hpp:102
std::string end_date
Definition: portfolio_context.hpp:102
std::string name
Definition: portfolio_context.hpp:101
std::string updated_at
Definition: portfolio_context.hpp:101
ProfitDetails underlying_details
Definition: portfolio_context.hpp:100
std::string start_date
Definition: portfolio_context.hpp:102
std::string end
Definition: portfolio_context.hpp:102
std::string start
Definition: portfolio_context.hpp:102
std::string currency
Definition: portfolio_context.hpp:101
std::string profit
Definition: portfolio_context.hpp:100
ProfitDetails derivative_pnl_details
Definition: portfolio_context.hpp:100
std::string updated_date
Definition: portfolio_context.hpp:101
Paginated list of profit-analysis flow records.
Definition: portfolio_context.hpp:84
bool has_more
Definition: portfolio_context.hpp:84
std::vector< FlowItem > flows_list
Definition: portfolio_context.hpp:84
Combined portfolio P&L analysis response.
Definition: portfolio_context.hpp:67
ProfitAnalysisSummary summary
Definition: portfolio_context.hpp:67
ProfitAnalysisSublist sublist
Definition: portfolio_context.hpp:67
P&L for one security.
Definition: portfolio_context.hpp:53
AssetType item_type
Definition: portfolio_context.hpp:55
std::string market
Definition: portfolio_context.hpp:54
std::string holding_period
Definition: portfolio_context.hpp:56
std::string isin
Definition: portfolio_context.hpp:56
std::string profit_rate
Definition: portfolio_context.hpp:54
std::string order_profit
Definition: portfolio_context.hpp:57
std::string symbol
Definition: portfolio_context.hpp:55
std::string name
Definition: portfolio_context.hpp:54
std::string underlying_profit
Definition: portfolio_context.hpp:57
std::string derivatives_profit
Definition: portfolio_context.hpp:57
std::string profit
Definition: portfolio_context.hpp:54
std::string currency
Definition: portfolio_context.hpp:55
std::string security_code
Definition: portfolio_context.hpp:56
bool is_holding
Definition: portfolio_context.hpp:54
int64_t clearance_times
Definition: portfolio_context.hpp:55
Per-security P&L breakdown.
Definition: portfolio_context.hpp:61
std::string end_date
Definition: portfolio_context.hpp:62
std::string start_date
Definition: portfolio_context.hpp:62
std::vector< ProfitAnalysisItem > items
Definition: portfolio_context.hpp:63
std::string end
Definition: portfolio_context.hpp:62
std::string updated_at
Definition: portfolio_context.hpp:63
std::string updated_date
Definition: portfolio_context.hpp:63
std::string start
Definition: portfolio_context.hpp:62
Account-level P&L summary.
Definition: portfolio_context.hpp:45
std::string invest_amount
Definition: portfolio_context.hpp:48
std::string current_total_asset
Definition: portfolio_context.hpp:46
std::string currency
Definition: portfolio_context.hpp:46
std::string ending_asset_value
Definition: portfolio_context.hpp:47
bool is_traded
Definition: portfolio_context.hpp:48
std::string initial_asset_value
Definition: portfolio_context.hpp:48
std::string sum_profit
Definition: portfolio_context.hpp:49
std::string start_time
Definition: portfolio_context.hpp:47
std::string start_date
Definition: portfolio_context.hpp:46
std::string end_date
Definition: portfolio_context.hpp:46
ProfitSummaryBreakdown profits
Definition: portfolio_context.hpp:49
std::string end_time
Definition: portfolio_context.hpp:47
std::string sum_profit_rate
Definition: portfolio_context.hpp:49
One P&L detail line item (credit, debit, or fee).
Definition: portfolio_context.hpp:87
std::string describe
Definition: portfolio_context.hpp:87
std::string amount
Definition: portfolio_context.hpp:87
Detailed P&L breakdown for one asset class.
Definition: portfolio_context.hpp:90
std::string holding_value_at_beginning
Definition: portfolio_context.hpp:95
std::string short_holding_value
Definition: portfolio_context.hpp:94
std::string holding_value
Definition: portfolio_context.hpp:91
std::string long_holding_value
Definition: portfolio_context.hpp:95
std::vector< ProfitDetailEntry > fee_details
Definition: portfolio_context.hpp:94
std::string cumulative_debited_amount
Definition: portfolio_context.hpp:92
std::string cumulative_credited_amount
Definition: portfolio_context.hpp:91
std::vector< ProfitDetailEntry > credited_details
Definition: portfolio_context.hpp:92
std::vector< ProfitDetailEntry > debited_details
Definition: portfolio_context.hpp:93
std::string cumulative_fee_amount
Definition: portfolio_context.hpp:93
std::string holding_value_at_ending
Definition: portfolio_context.hpp:95
std::string profit
Definition: portfolio_context.hpp:91
P&L breakdown by asset type.
Definition: portfolio_context.hpp:38
int32_t ipo_hit
Definition: portfolio_context.hpp:41
std::string trade_order_num
Definition: portfolio_context.hpp:40
std::string mmf
Definition: portfolio_context.hpp:39
std::vector< ProfitSummaryInfo > summary_info
Definition: portfolio_context.hpp:41
int32_t ipo_subscription
Definition: portfolio_context.hpp:41
std::string stock
Definition: portfolio_context.hpp:39
std::string other
Definition: portfolio_context.hpp:39
std::string cumulative_transaction_amount
Definition: portfolio_context.hpp:40
std::string fund
Definition: portfolio_context.hpp:39
std::string trade_stock_num
Definition: portfolio_context.hpp:40
std::string crypto
Definition: portfolio_context.hpp:39
P&L summary for one asset category.
Definition: portfolio_context.hpp:35
std::string loss_max
Definition: portfolio_context.hpp:35
std::string loss_max_name
Definition: portfolio_context.hpp:35
AssetType asset_type
Definition: portfolio_context.hpp:35
std::string profit_max
Definition: portfolio_context.hpp:35
std::string profit_max_name
Definition: portfolio_context.hpp:35