有许多用于分析和管理期权投资组合的程序。 它们以交易现场的形式提供单独的商业产品或服务。 这样的程序有很多限制:投资组合绑定到交易平台,报价是从特定来源抽取的,参数或方案只能使用提供的软件来计算。
我使用R解决了在不同市场中管理投资组合的任务。开源引擎提供了许多可能性:投资组合存储在任何DBMS或Excel中,或从终端下载(QUIK,TWS,以及任何其他具有API的应用); 报价从其来源(终端,数据库或网站)中抽出,任何投资组合分析均可用!
一般说明
市场数据和投资组合被加载到OptPort
和OptMarket
对象中。 根据市场对投资组合进行重估,基于这些数据,计算当前利润和“希腊人”及其配置文件。 计算投资组合资料(利润或“希腊人”对基础资产价格的依赖),并将其存储在OptProfile
类的对象中。 内置功能绘制轮廓图,并允许您比较多个投资组合的轮廓。
通过文章末尾的链接(1)-管理与QUIK和Access连接的Mosbirzhy期权组合的选项。
OptMarket市场行情
需要OptMarket
类的对象来存储股票期权报价,有关基础资产的信息以及当前日期。
没有市场价格,投资组合将按内在价值重估。
# ( ) Access brd = GetBoard_fortsdb(ul) # OptMarket mrkt = OptMarket(ul = 'SiZ9', # ul_price = brd$ul_price, # board = as.tbl(brd$board), # now = as.Date('2019-11-12')) #
OptPort产品组合
投资组合可能包括期权和基础资产。 建设者
根据给定基础的交易表创建投资组合
资产。 交易汇总在一个共同的位置。
# Access ( QUIK) trades = GetTrades_fortsdb() # .. , trades = TickerToParams_fortsboard(trades, mrkt$board)
基于事务,我们创建OptPort
类的对象:
port = OptPort(ul = 'SiZ9', trades = trades, name = 'Spread')
投资组合分析
投资组合估值
PortPricing
以当前价格重新评估投资组合-从OptMarket
选择期权价格,并将其添加到OptPort
投资组合中。 对于莫斯科交易所的选择权,最简单的方法是以交易所本身广播并一直为人所知的理论价格( price_at = 'theor'
)重新评估它们。
port = PortPricing(port, mrkt, price_at = 'theor')
利润与“希腊人”
PortValuation
函数计算投资组合参数-未实现的收益和“希腊人”。 结果存储在OptPort
对象的total_value
字段中。
port = PortValuation(port) port$total_value
投资组合资料-OptProfile
OptProfile
对象将投资组合配置文件存储在基础资产的价格范围内。
PlotProfile
函数基于PlotProfile
构建轮廓图。
myprofile = OptProfile(optport = port, params = c('pl', 'delta', 'theta', 'vega'), ul_range = 0.05 # ) PlotProfile(myprofile)

投资组合构成
要更改投资组合的组成,可以使用AddTrades
函数。 她向投资组合添加交易并计算新的投资组合头寸。
# - newtrade = data.frame(ul='SiZ9', ticker='Si63500BX9', xtype='p', strike=63500, expdate=as.Date('2019-12-19'), tradeprice=500, q=-1 ) # port2 = AddTrades(port = port, trades = newtrade) port2$name = 'Changed'
新投资组合的概况可以与旧投资组合进行比较。 JoinProfiles
功能
组合配置文件数据以构建通用图形。
# port2 = port2 %>% PortPricing(., mrkt, price_at = 'theor') %>% PortValuation(.) # myprofile2 = OptProfile(optport = port2, params = c('pl', 'delta','theta', 'vega'), ul_range = 0.05) # profiles = JoinProfiles(list(myprofile, myprofile2)) PlotProfile(profiles)

合计
基本功能解决了基本问题。 我的解决方案是为特定目的而开发的-分析许多投资组合并为这些投资组合中的变化建模。 您可以在下面的链接中找到源代码。 奖金-从QUIK导入数据并设置QUIK本身进行导出的基础。
参考文献:
(1) GitHub上的源代码 。