AllocData

金融应用的开放数据模型,通常供自助投资者使用。

作为一个开源 Swift 库提供,可集成到其他应用中。

AllocDataOpenAlloc 开源 Swift 软件工具家族的一部分。

实体

以下实体在 AllocData 数据模型中定义。

MAccount

这是 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 与此账户关联的策略(如果有)。

MAllocation

这是 openalloc/allocation 模式。

Allocations 表的每一行描述一个策略分配方案的“切片”。

名称 类型 是否必填 是否主键 描述
allocationStrategyID string true true 与此分配关联的策略。
allocationAssetID string true true 分配的资产。
targetPct double false false 策略中资产的比例。
isLocked bool false false targetPct 是否锁定(或浮动)。

MAsset

这是 openalloc/asset 模式。

Assets 表的每一行描述一个唯一的资产类别。

它还建立了资产之间的关系。

名称 类型 是否必填 是否主键 描述
assetID string true true 资产的标识符。(例如,“债券”)
title string false false 资产的名称。
colorCode int false false 资产颜色调色板的代码。
parentAssetID string false false 资产父级的 ID。

MCap

这是 openalloc/cap 模式。

此表描述了账户内资产类别的分配限制。

名称 类型 是否必填 是否主键 描述
capAccountID string true true 将施加限制的账户。
capAssetID string true true 将施加限制的资产。
limitPct double false false 分配给该资产的账户资金不得超过此比例。

MHolding

这是 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 收购日期。

MSecurity

这是 openalloc/security 模式。

表,其中每一行描述一个唯一的证券,包括其股票代码、资产类别和最新价格。

名称 类型 是否必填 是否主键 描述
securityID string true true 证券的股票代码/securityID。
securityAssetID string false false 证券的资产类别。
sharePrice double false false 报告的每股证券价格。
updatedAt date false false 报告价格的时间戳。
securityTrackerID string false false 证券跟踪的指数。

MStrategy

这是 openalloc/strategy 模式。

Strategies 表的每一行描述一个单一的分配策略。

名称 类型 是否必填 是否主键 描述
strategyID string true true 策略的标识符。
title string false false 策略的名称。

MTracker

这是 openalloc/tracker 模式。

Tracker 表的每一行描述证券之间的多对多关系。

名称 类型 是否必填 是否主键 描述
trackerID string true true 跟踪指数的标识符。
title string false false 跟踪指数的名称。

MTransaction

这是 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(现金) 已忽略 中性(非收入)现金流进/出账户。

MRebalanceAllocation

这是 openalloc/rebalance/allocation 模式。

RebalanceAllocation 表的每一行描述驱动重新平衡的分配。

名称 类型 是否必填 是否主键 描述
allocationAccountID string true true 资产分配到的账户。
allocationAssetID string true true 资产分配到的资产类别。
amount double true false 分配的金额(美元)。

MRebalancePurchase

这是 openalloc/rebalance/purchase 模式。

RebalancePurchase 表的每一行描述为满足重新平衡而进行的仓位收购。

名称 类型 是否必填 是否主键 描述
purchaseAccountID string true true 用于持有仓位的账户。
purchaseAssetID string true true 要收购的仓位的资产类别。
amount double true false 要收购的金额(美元)。

MRebalanceSale

这是 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,则可以清算整个仓位。

MValuationSnapshot

这是 openalloc/valuation/snapshot 模式。

ValuationSnapshot 表的每一行描述在特定时间记录的估值快照。

名称 类型 是否必填 是否主键 描述
valuationSnapshotID string true true 唯一的估值快照标识符。
capturedAt date true false 创建快照的时间戳。

MValuationPosition

这是 openalloc/valuation/position 模式。

估值仓位表的每一行描述在特定时间为估值快照记录的仓位。它可以代表账户对某个资产类别的多个持仓。

名称 类型 是否必填 是否主键 描述
valuationPositionSnapshotID string true true 仓位的估值快照 ID。
valuationPositionAccountID string true true 持有仓位的账户。
valuationPositionAssetID string true true 仓位的资产类别。
totalBasis double true false 为建立仓位支付的价格。
marketValue double true false 仓位的市值。

MValuationCashflow

这是 openalloc/valuation/cashflow 模式。

估值现金流表的每一行描述特定时间的现金流。它没有明确绑定到任何估值快照。通常,多个历史记录项被汇总到一个现金流项目中。

名称 类型 是否必填 是否主键 描述
valuationCashflowTransactedAt date true true 此现金流发生的时间戳。
valuationCashflowAccountID string true true 现金流发生的账户。
valuationCashflowAssetID string true true 流动的资产类别。
amount double true false 现金流的金额(-转出,+转入)。

MSourceMeta

这是 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”)。

API

数据模型中的实体都符合以下协议

Base

所有实体的基础功能。目前仅为模式标识符。

public protocol AllocBase {
    static var schema: AllocSchema { get }
}

Keyed

用于检索和生成实体的主键。

这种新的基于结构体的实现取代了旧的基于字符串的实现。

emptyKey 属性可以用作选择器标签值,例如。

public protocol AllocKeyed: Hashable {
    associatedtype Key: Hashable, Codable

    var primaryKey: Key { get }
    static var emptyKey: Key { get }
}

实体也符合 Identifiable 协议,其中 id 是主键。

Rowed

用于解析(解码)和生成(编码)实体的分隔数据。

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
}

Attributable

用于获取实体属性的描述。

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

除非适用法律要求或以书面形式达成一致,否则根据许可证分发的软件按“按原样”基础分发,不附带任何形式的明示或暗示的保证或条件。 请参阅许可证,了解管辖权限和限制的具体语言。

贡献

欢迎贡献。 鼓励您提交拉取请求以修复错误、改进文档或提供新功能。

拉取请求不必是生产就绪的功能或修复。 它可以是拟议更改的草案,或者只是一个测试,以表明预期行为存在错误。 关于拉取请求的讨论可以从那里开始。

贡献最终应具有足够的测试覆盖率。 请参阅当前实体的测试,以了解期望的覆盖率。