我需要帮助建模以下情况:
金融工具总是有代价的。然而,某些金融工具(确切地说)也有所谓的“清洁”价格,这是一种取决于价格的属性,在这种情况下,价格也被称为“肮脏”价格。有一个计算器服务,它同时计算价格(或脏价格)和清洁价格。如何在概念上最好地对这种情况进行建模?
我考虑了两种选择:
FinancialInstrument +价格:价格
其中,Price是一个具有两个派生类的超级类型: DirtyPrice和CleanPrice。CleanPrice依赖于DirtyPrice
CleanPrice +脏: DirtyPrice
然后,Calculator服务将计算FinancialInstrument的价格:
Price
FinancialInstrument +价格:双PlainFinancialInstrument CleanPriceFinancialInstrument + clean_price:双倍
然后,Calculator服务将有两种方法来计算PlainSecurity的价格或CleanPriceSecurities的干净和肮脏的价格:
CalculatorService + compute_price(PlainFinancialInstrument,.):double + compute_price(CleanPriceFinancialInstrument,.):pair
这两种选择的权衡是什么?还有其他选择吗?
谢谢。
发布于 2011-11-20 18:44:58
我不清楚你是在问如何用你的例子来模拟抽象的问题,还是试图在现实世界中对金融工具定价的商业概念建模。我认为是后者,因为你很具体,所以我会对此发表评论。不过,在这种情况下,我怀疑您的两种方法中的任何一种都足以满足您的任务需求。我在那个地区工作了好几年了。
我不知道你在哪个业务领域工作。在我过去在(银行)工作的地区,清洁和肮脏价格之间的区别是一个简单的商业概念。对于按摊销成本计价的债券,清洁价格是不考虑应计和递延的贴现现金流的价值,脏价是清洁价格和应计/延期的总和。在我所知的所有情况下,清洁价格都是指脏价格与金融工具中某些关键人物的一些简单功能之间的区别,而清洁价格和脏价格都只是与某些(但不是所有)金融工具相关的关键数字。
另一方面,取决于公认会计原则和业务领域,你是否需要提供清洁或肮脏的价格,或者两者都取决于金融工具分配给哪一本账簿(如银行帐簿/交易帐簿)。对于交易账簿,你通常只想收回脏价格,干净的价格是相关的银行帐簿。
更糟糕的是,FI可能被重新分配,导致一组不同的关键人物变得相关。如果这与您的上下文相关,您应该确保您的设计考虑到了这些更改的后果。
就我个人而言,我首先要概述如下的一种方法:
subclass
如果如建议的那样,在FI实例中使用相关密钥数字和键图计算接口实现的列表,则如果重新分配FI,甚至可以在运行时更新/交换它,而不必删除/重新创建FI实例。
希望我没有让你的问题比实际情况更复杂。
致以敬意,
托马斯
发布于 2011-11-20 18:20:27
你需要一个单独的计算器服务吗?如果不是的话:
class FinancialInstrument {
private price: Double;
public getPrice {
// calculate the price
// presumably sets the private price? Dunno
this.price= // etc. .....
return this.price;
}
class CleanFinancialInstrument extends FinancialInstrument {
private cleanPrice: Double;
public getPrice {
//override FinancialInstrument.getPrice() as required
}
public getDirtyPrice {
//do you need this? Dunno
return this.getPrice();
}
public getCleanPrice {
this.cleanPrice = //... etc.
return this.dirtyPrice;
}
}如果不缓存价格,甚至可能不需要局部变量。
调用者只需在任何实例(FinancialInstrument或CleanFinancialInstrument)上调用FinancialInstrument(),而不必担心它是哪种类型。
hth。
https://stackoverflow.com/questions/8202185
复制相似问题