稳博投资开发类笔试题目0329

2024-06-25 10:55:57 浏览数 (2)

关注我们,每周发布最新的笔面试题目和解析

前言

量化开发类笔试题目,开卷 48h。第一题倾向于逻辑题和算法题相结合的形式。第二题是项目题,考察候选人对C 编写项目和回测系统的理解和认识,可以看出系统设计能力和相关代码经验,区分度明显。

春招和暑期实习和笔试也陆陆续续开始了,欢迎同学们在公众号后台留言投稿,你们的每条留言小编都会仔细查看,投稿一场完整笔试的同学有机会获得一杯奶茶的现金奖励,累计投稿三场的有机会免费加入知识星球。

题目1

考虑一个投掷硬币问题

背景:小P和小H分别选择一个4个硬币组成的序列(正面由U表示,反面由D表示),一枚硬币每次会公正的投掷并记录结果,先出现的序列为获胜者。

问题:给定小P选择的一个序列,请为小H设法给出胜率最大的对应序列,并给出C /python代码

实例:小P选择DDDD,小H可以选择UDDD

扩展:将4改为任意有限正整数,你会如何优化你的计算,可以选择回答或者不回答。

【思路】

1. 题目来源 penney's game,本题的关键在于这是一个连续投掷的场景,即需要考虑投掷四次后的前后关联。

2. 对于任意给定的序列,小 H 的最优策略是选择一个序列,这个序列能够尽可能早地在游戏中出现,同时延迟小 P 序列的出现。基于前缀分析的策略,如果小 H 的序列在前几个硬币上与小 P 的序列相似,但在最后一个硬币上不同,那么小 H 的胜率通常会更高。这样,小 H 的序列在小 P 的序列形成的过程中就有机会先于小 P 的序列完成,因为它利用了小 P 序列的内部模式。

注意:需要的是极值,而非较优解

题目2

C 实现一个回测系统框架的demo(针对股票日频即可),并将统计模块具体实现(包括收益曲线的计算,IC,Sharpe以及你认为重要的统计指标)注:框架编写可以参考已有的开源框架如BackTrader,vnpy等。

【简要思路】

实现一个C 回测系统框架的Demo,针对股票日频数据,并具体实现统计模块,是一个涉及多个复杂组件的任务。为了保证代码的性能和可维护性,依据现代C 的最佳实践进行设计和实现。以下是详细的实现思路,分为几个主要部分:

1. 系统架构设计

数据管理:负责数据的加载、存储和访问。可以使用C 11及更高版本的文件操作和内存管理特性,确保数据处理的高效和安全。

策略接口:定义策略的基类,包括初始化、信号生成等虚函数。策略类应能够根据历史数据生成交易信号。

执行引擎:根据策略生成的信号执行交易,管理订单、持仓和资金。

统计模块:计算策略的性能指标,如收益曲线、IC、Sharpe比率等。

事件驱动系统:框架的核心,负责协调各个组件的交互。使用C 的事件队列、回调函数等实现。

2. 数据管理

使用std::vector或std::map存储股票日频数据,键为日期,值为价格等信息。

实现数据读取功能,支持从CSV或数据库读取股票数据。利用C 的文件流(fstream)和字符串处理功能。

3. 策略接口设计

设计一个策略基类,包含虚函数如initialize(初始化策略)、generateSignals(生成交易信号)等。

可以通过继承该基类,实现自己的交易策略。

4. 执行引擎

管理订单流程,包括订单创建、撮合和执行。

管理持仓信息和资金账户。

使用现代C 的智能指针管理资源,确保内存安全。

5. 统计模块实现

收益曲线:计算每个交易日的累计收益,可以使用std::accumulate。

IC(信息系数):衡量预测值和实际值之间的相关性,需要实现相关性计算函数。

Sharpe比率:计算策略的风险调整后收益率,需考虑无风险利率和策略收益的标准差。

其他指标:如最大回撤(Max Drawdown)、胜率(Win Rate)等,根据策略特性选择合适的指标。

6. 事件驱动系统

设计事件类和事件队列,事件包括市场数据更新、交易信号、订单事件等。

使用C 11的std::function和std::bind实现回调机制,处理不同类型的事件。

7. 实现细节和性能优化

内存管理:利用C 11引入的智能指针(如std::unique_ptr和std::shared_ptr)管理动态分配的内存,防止内存泄露。

多线程和并发:使用C 11的线程库()、互斥量()等实现数据处理和计算的并行化。

模板编程:利用模板实现策略和模型的泛化,提高代码的复用性和灵活性。

其他思路或想法欢迎在留言区交流补充

0 人点赞