首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟金融工具的价格(干净还是肮脏)?

如何模拟金融工具的价格(干净还是肮脏)?
EN

Stack Overflow用户
提问于 2011-11-20 14:30:34
回答 2查看 426关注 0票数 0

我需要帮助建模以下情况:

金融工具总是有代价的。然而,某些金融工具(确切地说)也有所谓的“清洁”价格,这是一种取决于价格的属性,在这种情况下,价格也被称为“肮脏”价格。有一个计算器服务,它同时计算价格(或脏价格)和清洁价格。如何在概念上最好地对这种情况进行建模?

我考虑了两种选择:

  1. FinancialInstrument有一个价格

FinancialInstrument +价格:价格

其中,Price是一个具有两个派生类的超级类型: DirtyPrice和CleanPrice。CleanPrice依赖于DirtyPrice

CleanPrice +脏: DirtyPrice

然后,Calculator服务将计算FinancialInstrument的价格:

Price

  • FinancialInstrument是一个超级类型,有两个派生: PlainFinancialInstrument (只有价格属性)和CleanPriceFinancialInstrument,价格既干净又脏。

FinancialInstrument +价格:双PlainFinancialInstrument CleanPriceFinancialInstrument + clean_price:双倍

然后,Calculator服务将有两种方法来计算PlainSecurity的价格或CleanPriceSecurities的干净和肮脏的价格:

CalculatorService + compute_price(PlainFinancialInstrument,.):double + compute_price(CleanPriceFinancialInstrument,.):pair

这两种选择的权衡是什么?还有其他选择吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-20 18:44:58

我不清楚你是在问如何用你的例子来模拟抽象的问题,还是试图在现实世界中对金融工具定价的商业概念建模。我认为是后者,因为你很具体,所以我会对此发表评论。不过,在这种情况下,我怀疑您的两种方法中的任何一种都足以满足您的任务需求。我在那个地区工作了好几年了。

我不知道你在哪个业务领域工作。在我过去在(银行)工作的地区,清洁和肮脏价格之间的区别是一个简单的商业概念。对于按摊销成本计价的债券,清洁价格是不考虑应计和递延的贴现现金流的价值,脏价是清洁价格和应计/延期的总和。在我所知的所有情况下,清洁价格都是指脏价格与金融工具中某些关键人物的一些简单功能之间的区别,而清洁价格和脏价格都只是与某些(但不是所有)金融工具相关的关键数字。

另一方面,取决于公认会计原则和业务领域,你是否需要提供清洁或肮脏的价格,或者两者都取决于金融工具分配给哪一本账簿(如银行帐簿/交易帐簿)。对于交易账簿,你通常只想收回脏价格,干净的价格是相关的银行帐簿。

更糟糕的是,FI可能被重新分配,导致一组不同的关键人物变得相关。如果这与您的上下文相关,您应该确保您的设计考虑到了这些更改的后果。

就我个人而言,我首先要概述如下的一种方法:

subclass

  • create为每一种FI类型创建金融工具

  • 的抽象类/接口,定义一个包含所有关键数字的列表--在您的范围内可能与任何可能的FI相关--在您的示例中:清洁价格和脏价格,可能是代表差异的关键人物之一。另外,创建一个虚拟的价格键数字条目。

  • 为每个关键数字创建一个键图形界面,其中包含与KFs相关的方法。计算,更新--这取决于你的整体模型。同样,对于您的示例:干净的价格接口、肮脏的价格接口、增量接口和价格接口。可能有必要确定它们必须更新的顺序。价格接口的方法集合必须是每种类型FI的干净和肮脏的价格接口

  • 的子集,为与该FI类型相关的所有关键图形接口创建一个特定的实现(类),当然要考虑重用。严格避免依赖于这些实现中的键图或FI类型的if / need或switch语句,如果这是必要的,则需要额外的类定义。现在,当您实例化表示FI的类时,请使用工厂模式创建键图形接口的实例。也就是说,您决定使用哪种方法来计算FI实例,而FI实例则知道如何计算FI的关键数字。工厂模式的好特性是,您还可以考虑到您正在计算的书籍以及其他参数,即使在必要时也是如此。工厂将让价格键图形接口简单地指向与您称为计算器服务的context.

  • what中相关的实例,然后,为了计算价格,调用价格密钥figue接口的方法,但是接口指向的实例是由FI实例提供的,因为工厂只是将价格接口映射到干净的价格接口或脏的价格接口,这取决于在特定上下文中对该特定FI正确的是什么。

如果如建议的那样,在FI实例中使用相关密钥数字和键图计算接口实现的列表,则如果重新分配FI,甚至可以在运行时更新/交换它,而不必删除/重新创建FI实例。

希望我没有让你的问题比实际情况更复杂。

致以敬意,

托马斯

票数 2
EN

Stack Overflow用户

发布于 2011-11-20 18:20:27

你需要一个单独的计算器服务吗?如果不是的话:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8202185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档