作为一个开源 Swift 库提供,可集成到其他应用中。
AllocData 是 OpenAlloc 开源 Swift 软件工具家族的一部分。
以下实体在 AllocData 数据模型中定义。
这是 openalloc/account
模式。
Accounts 表的每一行描述一个唯一的账户。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
accountID | string | true | true | 账户的账号。 |
title | string | false | false | 账户的名称。 |
isTaxable | bool | false | false | 账户是否应税?(默认值:false) |
canTrade | bool | false | false | 您可以在此账户中交易证券吗?(默认值:false) |
accountStrategyID | string | false | false | 与此账户关联的策略(如果有)。 |
这是 openalloc/allocation
模式。
Allocations 表的每一行描述一个策略分配方案的“切片”。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
allocationStrategyID | string | true | true | 与此分配关联的策略。 |
allocationAssetID | string | true | true | 分配的资产。 |
targetPct | double | false | false | 策略中资产的比例。 |
isLocked | bool | false | false | targetPct 是否锁定(或浮动)。 |
这是 openalloc/asset
模式。
Assets 表的每一行描述一个唯一的资产类别。
它还建立了资产之间的关系。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
assetID | string | true | true | 资产的标识符。(例如,“债券”) |
title | string | false | false | 资产的名称。 |
colorCode | int | false | false | 资产颜色调色板的代码。 |
parentAssetID | string | false | false | 资产父级的 ID。 |
这是 openalloc/cap
模式。
此表描述了账户内资产类别的分配限制。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
capAccountID | string | true | true | 将施加限制的账户。 |
capAssetID | string | true | true | 将施加限制的资产。 |
limitPct | double | false | false | 分配给该资产的账户资金不得超过此比例。 |
这是 openalloc/holding
模式。
一个表,其中每一行描述一个单独的仓位,包括账户、股票代码、股份数量、每股成本等。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
holdingAccountID | string | true | true | 持有仓位的账户。 |
holdingSecurityID | string | true | true | 仓位的证券。 |
holdingLotID | string | true | true | 仓位的批次(如果有)。 |
shareCount | double | false | true | 仓位中持有的股份数量。 |
shareBasis | double | false | true | 每股证券的买入价格。 |
acquiredAt | date | false | true | 收购日期。 |
这是 openalloc/security
模式。
表,其中每一行描述一个唯一的证券,包括其股票代码、资产类别和最新价格。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
securityID | string | true | true | 证券的股票代码/securityID。 |
securityAssetID | string | false | false | 证券的资产类别。 |
sharePrice | double | false | false | 报告的每股证券价格。 |
updatedAt | date | false | false | 报告价格的时间戳。 |
securityTrackerID | string | false | false | 证券跟踪的指数。 |
这是 openalloc/strategy
模式。
Strategies 表的每一行描述一个单一的分配策略。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
strategyID | string | true | true | 策略的标识符。 |
title | string | false | false | 策略的名称。 |
这是 openalloc/tracker
模式。
Tracker 表的每一行描述证券之间的多对多关系。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
trackerID | string | true | true | 跟踪指数的标识符。 |
title | string | false | false | 跟踪指数的名称。 |
这是 openalloc/transaction
模式。
近期交易历史表,包括买入、卖出和其他操作。
注意:这取代了已弃用的“MHistory”实体。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
txnAction | string | true | true | 交易类型的代码(见下文)。 |
txnTransactedAt | date | true | true | 交易日期。 |
txnAccountID | string | true | true | 交易发生的账户。 |
txnSecurityID | string | true | true | 交易涉及的证券。 |
txnLotID | string | true | true | 交易涉及的仓位批次(如果没有则为空)。 |
txnShareCount | double | true | true | 交易的股份数量。 |
txnSharePrice | double | false | false | 股份交易价格。(如果没有提供则为 0)。 |
realizedGainShort | double | false | false | 出售产生的短期已实现总收益(或损失)。 |
realizedGainLong | double | false | false | 出售产生的长期已实现总收益(或损失)。 |
请注意,经纪商导出可能会省略证券转移的股价。
操作类型
类型 | ShareCount | SharePrice | SecurityID | 描述 |
---|---|---|---|---|
buysell | <0 如果卖出; >0 如果买入 | >0,每股价格 | 必填 | 从现金买入/卖出证券。 |
income | 收入金额 | 1.0(现金) | 如果是股息 | 来自利息或股票/ETF等的股息收入。 |
transfer | <0 是转出; >0 是转入 | 1.0 如果是现金; >0 如果是证券; 如果未提供则为空 | 如果不是现金 | 将证券/现金转移到/从外部来源。 |
miscflow | <0 是转出; >0 是转入 | 1.0(现金) | 已忽略 | 中性(非收入)现金流进/出账户。 |
这是 openalloc/rebalance/allocation
模式。
RebalanceAllocation 表的每一行描述驱动重新平衡的分配。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
allocationAccountID | string | true | true | 资产分配到的账户。 |
allocationAssetID | string | true | true | 资产分配到的资产类别。 |
amount | double | true | false | 分配的金额(美元)。 |
这是 openalloc/rebalance/purchase
模式。
RebalancePurchase 表的每一行描述为满足重新平衡而进行的仓位收购。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
purchaseAccountID | string | true | true | 用于持有仓位的账户。 |
purchaseAssetID | string | true | true | 要收购的仓位的资产类别。 |
amount | double | true | false | 要收购的金额(美元)。 |
这是 openalloc/rebalance/sale
模式。
RebalanceSale 表的每一行描述为满足重新平衡而进行的仓位清算。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
saleAccountID | string | true | true | 持有仓位的账户。 |
saleSecurityID | string | true | true | 仓位的证券。 |
saleLotID | string | true | true | 仓位的批次(如果有)。 |
amount | double | true | false | 从此仓位清算的金额(美元)。 |
shareCount | double | false | false | 从此仓位清算的估计股份数量。 |
liquidateAll | bool | false | false | 如果为 true,则可以清算整个仓位。 |
这是 openalloc/valuation/snapshot
模式。
ValuationSnapshot 表的每一行描述在特定时间记录的估值快照。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
valuationSnapshotID | string | true | true | 唯一的估值快照标识符。 |
capturedAt | date | true | false | 创建快照的时间戳。 |
这是 openalloc/valuation/position
模式。
估值仓位表的每一行描述在特定时间为估值快照记录的仓位。它可以代表账户对某个资产类别的多个持仓。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
valuationPositionSnapshotID | string | true | true | 仓位的估值快照 ID。 |
valuationPositionAccountID | string | true | true | 持有仓位的账户。 |
valuationPositionAssetID | string | true | true | 仓位的资产类别。 |
totalBasis | double | true | false | 为建立仓位支付的价格。 |
marketValue | double | true | false | 仓位的市值。 |
这是 openalloc/valuation/cashflow
模式。
估值现金流表的每一行描述特定时间的现金流。它没有明确绑定到任何估值快照。通常,多个历史记录项被汇总到一个现金流项目中。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
valuationCashflowTransactedAt | date | true | true | 此现金流发生的时间戳。 |
valuationCashflowAccountID | string | true | true | 现金流发生的账户。 |
valuationCashflowAssetID | string | true | true | 流动的资产类别。 |
amount | double | true | false | 现金流的金额(-转出,+转入)。 |
这是 openalloc/meta/source
模式。
SourceMeta 表的每一行描述源数据的导入或转换。它还可以包括提取的数据,例如在其中找到的已发布的导出日期。
名称 | 类型 | 是否必填 | 是否主键 | 描述 |
---|---|---|---|---|
sourceMetaID | string | true | true | 源元数据记录的唯一 ID。 |
url | string | false | false | 源 URL(如果有)。 |
importerID | string | false | false | 导入器/转换器的 ID(如果有)。 |
exportedAt | date | false | false | 源数据的已发布导出日期(如果有)。 |
在分隔符文本文件中,日期应采用 ISO 8601 / RFC 3339 格式(例如,“2012-12-31T19:00:00Z”)。
数据模型中的实体都符合以下协议
所有实体的基础功能。目前仅为模式标识符。
public protocol AllocBase {
static var schema: AllocSchema { get }
}
用于检索和生成实体的主键。
这种新的基于结构体的实现取代了旧的基于字符串的实现。
emptyKey
属性可以用作选择器标签值,例如。
public protocol AllocKeyed: Hashable {
associatedtype Key: Hashable, Codable
var primaryKey: Key { get }
static var emptyKey: Key { get }
}
实体也符合 Identifiable
协议,其中 id 是主键。
用于解析(解码)和生成(编码)实体的分隔数据。
public protocol AllocRowed: AllocKeyed {
// pre-decoded row, without strong typing
typealias RawRow = [String: String]
// decoded row, with stronger typing
typealias DecodedRow = [String: AnyHashable]
// create object from row
init(from row: DecodedRow) throws
static func decode(_ rawRows: [RawRow], rejectedRows: inout [RawRow]) throws -> [DecodedRow]
// additive update from row
mutating func update(from row: DecodedRow) throws
static func getPrimaryKey(_ row: DecodedRow) throws -> Key
}
用于获取实体属性的描述。
public protocol AllocAttributable {
static var attributes: [AllocAttribute] { get }
}
Swift 开源库(由同一作者)
此应用是 Open Portfolio Project 的成员。
版权所有 2021, 2022 OpenAlloc LLC
根据 Apache License 2.0 版本(“许可证”)获得许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下网址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或以书面形式达成一致,否则根据许可证分发的软件按“按原样”基础分发,不附带任何形式的明示或暗示的保证或条件。 请参阅许可证,了解管辖权限和限制的具体语言。
欢迎贡献。 鼓励您提交拉取请求以修复错误、改进文档或提供新功能。
拉取请求不必是生产就绪的功能或修复。 它可以是拟议更改的草案,或者只是一个测试,以表明预期行为存在错误。 关于拉取请求的讨论可以从那里开始。
贡献最终应具有足够的测试覆盖率。 请参阅当前实体的测试,以了解期望的覆盖率。